### Eclipse Workspace Patch 1.0 #P org.eclipse.ui.ide Index: src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java,v retrieving revision 1.16 diff -u -r1.16 PathVariableSelectionDialog.java --- src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java 10 May 2010 09:47:59 -0000 1.16 +++ src/org/eclipse/ui/ide/dialogs/PathVariableSelectionDialog.java 18 May 2010 12:25:52 -0000 @@ -88,6 +88,7 @@ updateExtendButtonState(); } }); + pathVariablesGroup.setSaveVariablesOnChange(true); setShellStyle(getShellStyle() | SWT.SHEET); } Index: src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java,v retrieving revision 1.27 diff -u -r1.27 PathVariableDialog.java --- src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java 14 Apr 2010 16:34:46 -0000 1.27 +++ src/org/eclipse/ui/internal/ide/dialogs/PathVariableDialog.java 18 May 2010 12:25:53 -0000 @@ -318,7 +318,7 @@ Composite buttonsComposite = new Composite(contents, SWT.NONE); buttonsComposite.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false, 1, 1)); - GridLayout layout = new GridLayout(1, true); + GridLayout layout = new GridLayout(0, true); layout.marginWidth = 0; layout.marginHeight = 0; buttonsComposite.setLayout(layout); @@ -355,28 +355,32 @@ setButtonLayoutData(folderButton); } - variableButton = new Button(buttonsComposite, SWT.PUSH); - variableButton.setText(IDEWorkbenchMessages.PathVariableDialog_variable); - - variableButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, - false)); - - variableButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - selectVariable(); - } - }); - setButtonLayoutData(variableButton); + // the workspace path variable manager does not support variables. + if (currentResource != null) { + layout.numColumns++; + variableButton = new Button(buttonsComposite, SWT.PUSH); + variableButton.setText(IDEWorkbenchMessages.PathVariableDialog_variable); + + variableButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, + false)); + + variableButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + selectVariable(); + } + }); + setButtonLayoutData(variableButton); - // variable value label - variableResolvedValueLabel = new Label(contents, SWT.LEAD); - variableResolvedValueLabel.setText(resolvedValueLabelText); - - // variable value field. Attachments done after all widgets created. - variableResolvedValueField = new Label(contents, SWT.LEAD | SWT.SINGLE | SWT.READ_ONLY); - variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue())); - variableResolvedValueField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, - false, 2, 1)); + // variable value label + variableResolvedValueLabel = new Label(contents, SWT.LEAD); + variableResolvedValueLabel.setText(resolvedValueLabelText); + + // variable value field. Attachments done after all widgets created. + variableResolvedValueField = new Label(contents, SWT.LEAD | SWT.SINGLE | SWT.READ_ONLY); + variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue())); + variableResolvedValueField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, + false, 2, 1)); + } } private IPathVariableManager getPathVariableManager() { @@ -439,7 +443,8 @@ validationStatus = IMessageProvider.NONE; okButton.setEnabled(validateVariableValue() && validateVariableName()); locationEntered = true; - variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue())); + if (variableResolvedValueField != null) + variableResolvedValueField.setText(TextProcessor.process(getVariableResolvedValue())); } /** Index: src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java,v retrieving revision 1.21 diff -u -r1.21 PathVariablesGroup.java --- src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java 22 Apr 2010 20:54:28 -0000 1.21 +++ src/org/eclipse/ui/internal/ide/dialogs/PathVariablesGroup.java 18 May 2010 12:25:53 -0000 @@ -131,6 +131,9 @@ // reference to the workspace's path variable manager private IPathVariableManager pathVariableManager; + // if set to true, variables will be saved after each change + private boolean saveVariablesOnChange = false; + // file image private final Image FILE_IMG = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_OBJ_FILE); @@ -208,6 +211,7 @@ // the UI must be updated updateWidgetState(); + saveVariablesIfRequired(); } /** @@ -435,6 +439,7 @@ // now we must refresh the UI state updateWidgetState(); + saveVariablesIfRequired(); } /** @@ -453,6 +458,21 @@ } /** + * Automatically save the path variable list when new variables + * are added, changed, or removed by the user. + * @param value + * + */ + public void setSaveVariablesOnChange(boolean value) { + saveVariablesOnChange = value; + } + + private void saveVariablesIfRequired() { + if (saveVariablesOnChange) { + performOk(); + } + } + /** * Returns the selected variables. * * @return the selected variables. Returns an empty array if @@ -656,6 +676,7 @@ tempPathVariables.remove(varName); } updateWidgetState(); + saveVariablesIfRequired(); } private boolean canChangeSelection() {