Skip to content

Commit 95e6822

Browse files
ShyestaHannesWell
authored andcommitted
Add buttons to increment version segments of exported packages
Fixes eclipse-pde#1561
1 parent c164bb0 commit 95e6822

3 files changed

Lines changed: 72 additions & 1 deletion

File tree

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3359,6 +3359,10 @@ public class PDEUIMessages extends NLS {
33593359

33603360
public static String PluginVersionPart_groupTitle;
33613361
public static String PluginVersionPart_buttonTitle;
3362+
public static String PluginVersionPart_incrementTitle;
3363+
public static String PluginVersionPart_incrementMajor;
3364+
public static String PluginVersionPart_incrementMinor;
3365+
public static String PluginVersionPart_incrementMicro;
33623366

33633367
public static String FilteredPluginArtifactsSelectionDialog_title;
33643368
public static String FilteredPluginArtifactsSelectionDialog_message;

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/parts/PluginVersionPart.java

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.ArrayList;
1717
import java.util.HashSet;
1818
import java.util.Set;
19+
import java.util.function.UnaryOperator;
1920

2021
import org.eclipse.core.runtime.IStatus;
2122
import org.eclipse.core.runtime.Status;
@@ -39,6 +40,7 @@
3940
import org.eclipse.pde.internal.ui.util.PDELabelUtility;
4041
import org.eclipse.swt.SWT;
4142
import org.eclipse.swt.events.ModifyListener;
43+
import org.eclipse.swt.events.SelectionListener;
4244
import org.eclipse.swt.layout.GridData;
4345
import org.eclipse.swt.layout.GridLayout;
4446
import org.eclipse.swt.widgets.Button;
@@ -172,7 +174,6 @@ public Object[] getElements(Object inputElement) {
172174

173175
}
174176

175-
176177
private Text fMinVersionText;
177178
private Text fMaxVersionText;
178179
private Combo fMinVersionBound;
@@ -288,6 +289,34 @@ private void createSingleField(Composite parent, boolean createGroup, boolean ed
288289
fMinVersionText = new Text(parent, SWT.SINGLE | SWT.BORDER);
289290
fMinVersionText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
290291
fMinVersionText.setEnabled(editable);
292+
293+
if (!fRangeAllowed) {
294+
Label incrLabel = new Label(parent, SWT.NONE);
295+
incrLabel.setText(PDEUIMessages.PluginVersionPart_incrementTitle);
296+
incrLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
297+
298+
Composite btnBar = new Composite(parent, SWT.NONE);
299+
btnBar.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
300+
GridLayout btnBarLayout = new GridLayout(3, true);
301+
btnBarLayout.marginWidth = 0;
302+
btnBar.setLayout(btnBarLayout);
303+
304+
// Major Button
305+
Button majorBtn = createIncrementButton(btnBar, PDEUIMessages.PluginVersionPart_incrementMajor, editable,
306+
v -> new Version(v.getMajor() + 1, 0, 0));
307+
// Minor Button
308+
Button minorBtn = createIncrementButton(btnBar, PDEUIMessages.PluginVersionPart_incrementMinor, editable,
309+
v -> new Version(v.getMajor(), v.getMinor() + 1, 0));
310+
// Micro Button
311+
Button microBtn = createIncrementButton(btnBar, PDEUIMessages.PluginVersionPart_incrementMicro, editable,
312+
v -> new Version(v.getMajor(), v.getMinor(), v.getMicro() + 1));
313+
314+
if (editable) {
315+
// Initially disable buttons if editable but no valid version
316+
updateIncrementButtonsEnabled(majorBtn, minorBtn, microBtn);
317+
fMinVersionText.addModifyListener(e -> updateIncrementButtonsEnabled(majorBtn, minorBtn, microBtn));
318+
}
319+
}
291320
}
292321

293322
public void preloadFields() {
@@ -454,4 +483,38 @@ public void addListeners(ModifyListener minListener, ModifyListener maxListener)
454483
protected String getGroupText() {
455484
return PDEUIMessages.DependencyPropertiesDialog_groupText;
456485
}
486+
487+
private Button createIncrementButton(Composite btnBar, String label, boolean enabled,
488+
UnaryOperator<Version> versionModifier) {
489+
Button btn = new Button(btnBar, SWT.PUSH);
490+
btn.setText(label);
491+
btn.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
492+
String originalText = getMinVersion();
493+
Version originalVersion = new Version(originalText);
494+
String target = versionModifier.apply(originalVersion).toString();
495+
String qualifier = originalVersion.getQualifier();
496+
if (!qualifier.isEmpty()) {
497+
target += "." + qualifier; //$NON-NLS-1$
498+
}
499+
setVersion(target);
500+
preloadFields();
501+
}));
502+
btn.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
503+
btn.setEnabled(enabled);
504+
return btn;
505+
}
506+
507+
private void updateIncrementButtonsEnabled(Button majorBtn, Button minorBtn, Button microBtn) {
508+
boolean valid = VersionUtil.validateVersion(getMinVersion()).isOK();
509+
if (majorBtn != null && !majorBtn.isDisposed()) {
510+
majorBtn.setEnabled(valid);
511+
}
512+
if (minorBtn != null && !minorBtn.isDisposed()) {
513+
minorBtn.setEnabled(valid);
514+
}
515+
if (microBtn != null && !microBtn.isDisposed()) {
516+
microBtn.setEnabled(valid);
517+
}
518+
}
519+
457520
}

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2566,6 +2566,10 @@ AntGeneratingExportWizard_1=The following projects contain build.xml files that
25662566
AntGeneratingExportWizard_2=Always overwrite existing build.xml files
25672567
PluginVersionPart_groupTitle=Available versions to match
25682568
PluginVersionPart_buttonTitle=Match
2569+
PluginVersionPart_incrementMajor=Major
2570+
PluginVersionPart_incrementMinor=Minor
2571+
PluginVersionPart_incrementMicro=Micro
2572+
PluginVersionPart_incrementTitle=Increment:
25692573
FilteredPluginArtifactsSelectionDialog_title=Open Plug-in Artifact
25702574
FilteredPluginArtifactsSelectionDialog_message=&Select an artifact to open (? = any character, * = any string):
25712575
FilteredPluginArtifactsSelectionDialog_searching=Searching...

0 commit comments

Comments
 (0)