Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/SetupTaskPerformer.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/ProgressDialog.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PromptDialog.java44
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PropertyField.java18
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/JRETaskImpl.java10
5 files changed, 71 insertions, 16 deletions
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/SetupTaskPerformer.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/SetupTaskPerformer.java
index 98f83e6bd6..924e8c80ca 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/SetupTaskPerformer.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/SetupTaskPerformer.java
@@ -298,6 +298,17 @@ public class SetupTaskPerformer extends AbstractSetupTaskContext
throw new RuntimeException("Missing variables for " + undeclaredVariables);
}
+ if (!unresolvedVariables.isEmpty())
+ {
+ if (!ProgressDialog.promptUnresolvedVariables(UIUtil.getShell(), Collections.singletonList(this)))
+ {
+ return neededSetupTasks;
+ }
+
+ resolveSettings();
+ unresolvedVariables.clear();
+ }
+
if (triggeredSetupTasks != null)
{
for (Iterator<SetupTask> it = triggeredSetupTasks.iterator(); it.hasNext();)
@@ -452,7 +463,7 @@ public class SetupTaskPerformer extends AbstractSetupTaskContext
private void expandStrings(EList<SetupTask> setupTasks)
{
- Set<String> keys = new HashSet<String>();
+ Set<String> keys = new LinkedHashSet<String>();
for (SetupTask setupTask : setupTasks)
{
expand(keys, unresolvedSettings, setupTask);
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/ProgressDialog.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/ProgressDialog.java
index f6f8a05397..340c9b419c 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/ProgressDialog.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/ProgressDialog.java
@@ -560,7 +560,7 @@ public class ProgressDialog extends AbstractSetupDialog implements ProgressLog
}
}
- private static boolean promptUnresolvedVariables(Shell shell, List<SetupTaskPerformer> setupTaskPerformers)
+ public static boolean promptUnresolvedVariables(Shell shell, List<SetupTaskPerformer> setupTaskPerformers)
{
final PromptDialog promptDialog = new PromptDialog(shell, setupTaskPerformers);
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PromptDialog.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PromptDialog.java
index 407a2de6a0..f5fa15af4b 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PromptDialog.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PromptDialog.java
@@ -25,12 +25,17 @@ import org.eclipse.emf.edit.ui.provider.ExtendedFontRegistry;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
@@ -47,7 +52,7 @@ public class PromptDialog extends AbstractSetupDialog
public PromptDialog(Shell parentShell, List<SetupTaskPerformer> setupTaskPerformers)
{
- super(parentShell, "Unspecified Variables", 400, 400);
+ super(parentShell, "Unspecified Variables", 500, 400);
this.setupTaskPerformers = setupTaskPerformers;
}
@@ -68,25 +73,52 @@ public class PromptDialog extends AbstractSetupDialog
{
headerFont = ExtendedFontRegistry.INSTANCE.getFont(parent.getFont(), URI.createURI("font:///+2/bold"));
- GridLayout layout = (GridLayout)parent.getLayout();
- layout.numColumns = 4;
+ GridLayout parentLayout = (GridLayout)parent.getLayout();
+ parentLayout.numColumns = 1;
+ parentLayout.marginHeight = 0;
+ parentLayout.marginWidth = 0;
+
+ final ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.VERTICAL);
+ scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ scrolledComposite.setExpandHorizontal(true);
+ scrolledComposite.setExpandVertical(true);
+
+ GridLayout layout = new GridLayout(4, false);
layout.horizontalSpacing = 10;
- layout.verticalSpacing = 10;
+ layout.verticalSpacing = 20;
+
+ final Composite composite = new Composite(scrolledComposite, SWT.NONE);
+ composite.setLayout(layout);
+ scrolledComposite.setContent(composite);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
for (SetupTaskPerformer setupTaskPerformer : setupTaskPerformers)
{
List<ContextVariableTask> variables = setupTaskPerformer.getUnresolvedVariables();
if (!variables.isEmpty())
{
- createHeader(parent, setupTaskPerformer);
+ createHeader(composite, setupTaskPerformer);
for (ContextVariableTask variable : variables)
{
PropertyField<?, ?> field = createField(variable);
- field.fill(parent);
+ field.fill(composite);
}
}
}
+
+ ControlAdapter resizeListener = new ControlAdapter()
+ {
+ @Override
+ public void controlResized(ControlEvent event)
+ {
+ Point size = composite.computeSize(scrolledComposite.getClientArea().width, SWT.DEFAULT);
+ scrolledComposite.setMinSize(size);
+ }
+ };
+ scrolledComposite.addControlListener(resizeListener);
+ composite.addControlListener(resizeListener);
+ composite.notifyListeners(SWT.Resize, new Event());
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PropertyField.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PropertyField.java
index 0973154e01..fb6abc7b24 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PropertyField.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/internal/setup/ui/PropertyField.java
@@ -37,6 +37,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Shell;
@@ -157,7 +158,7 @@ public abstract class PropertyField<CONTROL extends Control, HELPER extends Cont
valueListeners.remove(listener);
}
- public final void fill(Composite parent)
+ public final void fill(final Composite parent)
{
checkParentLayout(parent);
@@ -200,16 +201,23 @@ public abstract class PropertyField<CONTROL extends Control, HELPER extends Cont
helpButton.setImage(JFaceResources.getImage(Dialog.DLG_IMG_HELP));
helpButton.setToolTipText("Show variable description");
final Label description = new Label(parent, SWT.WRAP | SWT.BORDER);
- GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false, 4, 1);
- description.setLayoutData(gridData);
- description.setText(descriptionText);
+ final GridData invisibleGridData = new GridData(0, 0);
+ invisibleGridData.horizontalSpan = 4;
+ invisibleGridData.heightHint = 0;
+ final GridData visibleGridData = new GridData(SWT.FILL, SWT.TOP, true, false, 4, 1);
+ description.setLayoutData(invisibleGridData);
description.setVisible(false);
+ description.setText(descriptionText);
helpButton.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
- description.setVisible(!description.getVisible());
+ boolean visible = !description.getVisible();
+ description.setVisible(visible);
+ description.setLayoutData(visible ? visibleGridData : invisibleGridData);
+ parent.layout();
+ parent.notifyListeners(SWT.Resize, new Event());
}
});
}
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/JRETaskImpl.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/JRETaskImpl.java
index a4b51d8f09..035ed63e7e 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/JRETaskImpl.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/JRETaskImpl.java
@@ -263,7 +263,7 @@ public class JRETaskImpl extends SetupTaskImpl implements JRETask
public boolean isNeeded(SetupTaskContext context) throws Exception
{
- return JREHelper.isNeeded(context, getVersion());
+ return JREHelper.isNeeded(context, getVersion(), getLocation());
}
public void perform(SetupTaskContext context) throws Exception
@@ -313,7 +313,7 @@ public class JRETaskImpl extends SetupTaskImpl implements JRETask
}
}
- public static boolean isNeeded(SetupTaskContext context, String version) throws Exception
+ public static boolean isNeeded(SetupTaskContext context, String version, String location) throws Exception
{
IExecutionEnvironment[] executionEnvironments = JavaRuntime.getExecutionEnvironmentsManager()
.getExecutionEnvironments();
@@ -328,7 +328,11 @@ public class JRETaskImpl extends SetupTaskImpl implements JRETask
{
if (executionEnvironment.isStrictlyCompatible(vmInstall))
{
- return false;
+ File installLocation = vmInstall.getInstallLocation();
+ if (new File(location).equals(installLocation))
+ {
+ return false;
+ }
}
}
}

Back to the top