### Eclipse Workspace Patch 1.0 #P org.eclipse.pde.ui Index: src/org/eclipse/pde/internal/ui/wizards/feature/AbstractFeatureSpecPage.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/AbstractFeatureSpecPage.java,v retrieving revision 1.6 diff -u -r1.6 AbstractFeatureSpecPage.java --- src/org/eclipse/pde/internal/ui/wizards/feature/AbstractFeatureSpecPage.java 16 Jan 2008 17:08:22 -0000 1.6 +++ src/org/eclipse/pde/internal/ui/wizards/feature/AbstractFeatureSpecPage.java 20 Mar 2009 10:35:03 -0000 @@ -13,6 +13,7 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.pde.internal.core.ifeature.IFeatureModel; import org.eclipse.pde.internal.core.util.IdUtil; import org.eclipse.pde.internal.core.util.VersionUtil; @@ -61,6 +62,8 @@ protected abstract String getHelpId(); + protected abstract void saveSettings(IDialogSettings settings); + protected void createCommonInput(Composite common) { Label label = new Label(common, SWT.NULL); label.setText(PDEUIMessages.NewFeatureWizard_SpecPage_name); Index: src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java,v retrieving revision 1.31 diff -u -r1.31 PatchSpecPage.java --- src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java 26 Jan 2009 15:04:54 -0000 1.31 +++ src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java 20 Mar 2009 10:35:03 -0000 @@ -11,6 +11,7 @@ package org.eclipse.pde.internal.ui.wizards.feature; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.IWizardPage; @@ -22,6 +23,7 @@ import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.dialogs.FeatureSelectionDialog; import org.eclipse.pde.internal.ui.util.SWTUtil; +import org.eclipse.pde.internal.ui.wizards.BundleProviderUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.GridData; @@ -30,7 +32,7 @@ public class PatchSpecPage extends AbstractFeatureSpecPage { - private Text fPatchProviderText; + private Combo fPatchProviderCombo; private Button fBrowseButton; private Text fPatchIdText; private Text fPatchNameText; @@ -85,9 +87,9 @@ } private String getPatchProvider() { - if (fPatchProviderText == null) + if (fPatchProviderCombo == null) return ""; //$NON-NLS-1$ - return fPatchProviderText.getText(); + return fPatchProviderCombo.getText(); } public FeatureData getFeatureData() { @@ -136,8 +138,9 @@ label = new Label(patchGroup, SWT.NULL); label.setText(PDEUIMessages.NewFeaturePatch_SpecPage_provider); - fPatchProviderText = new Text(patchGroup, SWT.BORDER); - fPatchProviderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fPatchProviderCombo = new Combo(patchGroup, SWT.BORDER | SWT.DROP_DOWN); + fPatchProviderCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + BundleProviderUtil.loadHistory(fPatchProviderCombo, getDialogSettings()); createInstallHandlerText(patchGroup); } @@ -197,7 +200,7 @@ protected void attachListeners(ModifyListener listener) { fPatchIdText.addModifyListener(listener); fPatchNameText.addModifyListener(listener); - fPatchProviderText.addModifyListener(listener); + fPatchProviderCombo.addModifyListener(listener); fFeatureIdText.addModifyListener(listener); } @@ -212,7 +215,13 @@ String id = IdUtil.getValidId(getProjectName()); fPatchIdText.setText(id); fPatchNameText.setText(IdUtil.getValidName(id)); - fPatchProviderText.setText(IdUtil.getValidProvider(id)); + if (0 == fPatchProviderCombo.getText().length()) { + fPatchProviderCombo.setText(IdUtil.getValidProvider(id)); + } fSelfModification = false; } + + protected void saveSettings(IDialogSettings settings) { + BundleProviderUtil.saveHistory(fPatchProviderCombo, settings); + } } Index: src/org/eclipse/pde/internal/ui/wizards/feature/AbstractNewFeatureWizard.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/AbstractNewFeatureWizard.java,v retrieving revision 1.5 diff -u -r1.5 AbstractNewFeatureWizard.java --- src/org/eclipse/pde/internal/ui/wizards/feature/AbstractNewFeatureWizard.java 16 Jan 2008 17:08:22 -0000 1.5 +++ src/org/eclipse/pde/internal/ui/wizards/feature/AbstractNewFeatureWizard.java 20 Mar 2009 10:35:03 -0000 @@ -105,6 +105,7 @@ public boolean performFinish() { try { IDialogSettings settings = getDialogSettings(); + fSpecPage.saveSettings(settings); if (settings != null && fSecondPage != null) fSecondPage.saveSettings(settings); Index: src/org/eclipse/pde/internal/ui/wizards/feature/FeatureSpecPage.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/FeatureSpecPage.java,v retrieving revision 1.21 diff -u -r1.21 FeatureSpecPage.java --- src/org/eclipse/pde/internal/ui/wizards/feature/FeatureSpecPage.java 26 Jan 2009 15:04:54 -0000 1.21 +++ src/org/eclipse/pde/internal/ui/wizards/feature/FeatureSpecPage.java 20 Mar 2009 10:35:03 -0000 @@ -11,9 +11,11 @@ package org.eclipse.pde.internal.ui.wizards.feature; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.pde.internal.core.util.IdUtil; import org.eclipse.pde.internal.ui.IHelpContextIds; import org.eclipse.pde.internal.ui.PDEUIMessages; +import org.eclipse.pde.internal.ui.wizards.BundleProviderUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; @@ -22,7 +24,7 @@ public class FeatureSpecPage extends AbstractFeatureSpecPage { - private Text fFeatureProviderText; + private Combo fFeatureProviderCombo; private Text fFeatureIdText; public FeatureSpecPage() { @@ -45,7 +47,7 @@ FeatureData data = new FeatureData(); data.id = fFeatureIdText.getText(); data.version = fFeatureVersionText.getText(); - data.provider = fFeatureProviderText.getText(); + data.provider = fFeatureProviderCombo.getText(); data.name = fFeatureNameText.getText(); data.library = getInstallHandlerLibrary(); return data; @@ -77,14 +79,15 @@ label = new Label(group, SWT.NULL); label.setText(PDEUIMessages.NewFeatureWizard_SpecPage_provider); - fFeatureProviderText = new Text(group, SWT.BORDER); - fFeatureProviderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fFeatureProviderCombo = new Combo(group, SWT.BORDER | SWT.DROP_DOWN); + fFeatureProviderCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + BundleProviderUtil.loadHistory(fFeatureProviderCombo, getDialogSettings()); createInstallHandlerText(group); } protected void attachListeners(ModifyListener listener) { - fFeatureProviderText.addModifyListener(listener); + fFeatureProviderCombo.addModifyListener(listener); fFeatureIdText.addModifyListener(listener); } @@ -99,7 +102,13 @@ String id = IdUtil.getValidId(getProjectName()); fFeatureIdText.setText(id); fFeatureNameText.setText(IdUtil.getValidName(id)); - fFeatureProviderText.setText(IdUtil.getValidProvider(id)); + if (0 == fFeatureProviderCombo.getText().length()) { + fFeatureProviderCombo.setText(IdUtil.getValidProvider(id)); + } fSelfModification = false; } + + protected void saveSettings(IDialogSettings settings) { + BundleProviderUtil.saveHistory(fFeatureProviderCombo, settings); + } } Index: src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java,v retrieving revision 1.43 diff -u -r1.43 ContentPage.java --- src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java 26 Jan 2009 15:04:54 -0000 1.43 +++ src/org/eclipse/pde/internal/ui/wizards/plugin/ContentPage.java 20 Mar 2009 10:35:04 -0000 @@ -12,6 +12,7 @@ package org.eclipse.pde.internal.ui.wizards.plugin; import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.pde.internal.core.PDECoreMessages; @@ -19,14 +20,14 @@ import org.eclipse.pde.internal.core.util.VersionUtil; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.util.PDELabelUtility; +import org.eclipse.pde.internal.ui.wizards.BundleProviderUtil; import org.eclipse.pde.internal.ui.wizards.IProjectProvider; import org.eclipse.pde.ui.IFieldData; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.*; public abstract class ContentPage extends WizardPage { @@ -34,7 +35,7 @@ protected Text fIdText; protected Text fVersionText; protected Text fNameText; - protected Text fProviderText; + protected Combo fProviderCombo; protected NewProjectCreationPage fMainPage; protected AbstractFieldData fData; @@ -75,6 +76,18 @@ return text; } + protected Combo createProviderCombo(Composite parent, ModifyListener listener, int horizSpan) { + Combo combo = new Combo(parent, SWT.BORDER | SWT.DROP_DOWN); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = horizSpan; + combo.setLayoutData(data); + BundleProviderUtil.loadHistory(combo, getDialogSettings()); + // Add listener only now, otherwise combo.select(0) would trigger it + // and cause a NPE during validation. + combo.addModifyListener(listener); + return combo; + } + protected abstract void validatePage(); protected String validateProperties() { @@ -167,7 +180,9 @@ fIdText.setText(id); fVersionText.setText("1.0.0"); //$NON-NLS-1$ fNameText.setText(IdUtil.getValidName(id)); - fProviderText.setText(IdUtil.getValidProvider(id)); + if (0 == fProviderCombo.getText().length()) { + fProviderCombo.setText(IdUtil.getValidProvider(id)); + } fChangedGroups = oldfChanged; } if (fInitialized) @@ -182,11 +197,15 @@ return IdUtil.getValidId(fProjectProvider.getProjectName()); } + public void saveSettings(IDialogSettings settings) { + BundleProviderUtil.saveHistory(fProviderCombo, settings); + } + public void updateData() { fData.setId(fIdText.getText().trim()); fData.setVersion(fVersionText.getText().trim()); fData.setName(fNameText.getText().trim()); - fData.setProvider(fProviderText.getText().trim()); + fData.setProvider(fProviderCombo.getText().trim()); } public IFieldData getData() { Index: src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java,v retrieving revision 1.30 diff -u -r1.30 FragmentContentPage.java --- src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java 26 Jan 2009 15:04:54 -0000 1.30 +++ src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java 20 Mar 2009 10:35:04 -0000 @@ -107,7 +107,7 @@ label = new Label(propertiesGroup, SWT.NONE); label.setText(PDEUIMessages.ContentPage_fprovider); - fProviderText = createText(propertiesGroup, propertiesListener, 2); + fProviderCombo = createProviderCombo(propertiesGroup, propertiesListener, 2); createExecutionEnvironmentControls(propertiesGroup); } Index: src/org/eclipse/pde/internal/ui/wizards/plugin/NewFragmentProjectWizard.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewFragmentProjectWizard.java,v retrieving revision 1.20 diff -u -r1.20 NewFragmentProjectWizard.java --- src/org/eclipse/pde/internal/ui/wizards/plugin/NewFragmentProjectWizard.java 7 Nov 2008 19:26:23 -0000 1.20 +++ src/org/eclipse/pde/internal/ui/wizards/plugin/NewFragmentProjectWizard.java 20 Mar 2009 10:35:04 -0000 @@ -13,6 +13,7 @@ import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.*; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.pde.internal.ui.*; import org.eclipse.pde.internal.ui.wizards.IProjectProvider; @@ -79,6 +80,12 @@ try { fMainPage.updateData(); fContentPage.updateData(); + IDialogSettings settings = getDialogSettings(); + if (settings != null) { + fMainPage.saveSettings(settings); + fContentPage.saveSettings(settings); + } + BasicNewProjectResourceWizard.updatePerspective(fConfig); getContainer().run(false, true, new NewProjectCreationOperation(fFragmentData, fProjectProvider, null)); Index: src/org/eclipse/pde/internal/ui/wizards/plugin/PluginContentPage.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/PluginContentPage.java,v retrieving revision 1.46 diff -u -r1.46 PluginContentPage.java --- src/org/eclipse/pde/internal/ui/wizards/plugin/PluginContentPage.java 3 Feb 2009 16:57:15 -0000 1.46 +++ src/org/eclipse/pde/internal/ui/wizards/plugin/PluginContentPage.java 20 Mar 2009 10:35:04 -0000 @@ -125,7 +125,7 @@ label = new Label(propertiesGroup, SWT.NONE); label.setText(PDEUIMessages.ContentPage_pprovider); - fProviderText = createText(propertiesGroup, propertiesListener, 2); + fProviderCombo = createProviderCombo(propertiesGroup, propertiesListener, 2); createExecutionEnvironmentControls(propertiesGroup); } @@ -371,6 +371,7 @@ * @param settings */ public void saveSettings(IDialogSettings settings) { + super.saveSettings(settings); settings.put(S_GENERATE_ACTIVATOR, !fGenerateActivator.getSelection()); if (fUIPlugin.isEnabled()) { settings.put(S_UI_PLUGIN, !fUIPlugin.getSelection()); Index: src/org/eclipse/pde/internal/ui/pderesources.properties =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties,v retrieving revision 1.1064 diff -u -r1.1064 pderesources.properties --- src/org/eclipse/pde/internal/ui/pderesources.properties 19 Mar 2009 20:23:09 -0000 1.1064 +++ src/org/eclipse/pde/internal/ui/pderesources.properties 20 Mar 2009 10:35:03 -0000 @@ -689,10 +689,10 @@ ContentSection_selectedOnly=Include only plug-ins designated below ContentSection_targetContent=Target Content ContentPage_pClassGroup = Plug-in Options -ContentPage_pid = Plug-in &ID: -ContentPage_pversion = Plug-in &Version: -ContentPage_pname = Plug-in N&ame: -ContentPage_pprovider = Plug-in Provi&der: +ContentPage_pid = &ID: +ContentPage_pversion = &Version: +ContentPage_pname = N&ame: +ContentPage_pprovider = Provi&der: ContentPage_fid = Fragment &ID: ContentPage_fversion = Fragment &Version: ContentPage_fname = Fragment N&ame: Index: src/org/eclipse/pde/internal/ui/wizards/BundleProviderUtil.java =================================================================== RCS file: src/org/eclipse/pde/internal/ui/wizards/BundleProviderUtil.java diff -N src/org/eclipse/pde/internal/ui/wizards/BundleProviderUtil.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/pde/internal/ui/wizards/BundleProviderUtil.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (c) 2005, 2009 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.pde.internal.ui.wizards; + +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.swt.widgets.Combo; + +/** + * Provides helper methods to load and save provider names from and to combo boxes. + * + * @author Philipp Kursawe + * + */ +public class BundleProviderUtil { + /** + * Dialog settings constants + */ + private final static String S_PROVIDERS = "providers"; //$NON-NLS-1$ + + /** + * Loads the history of providers from the given settings. + *

Note

+ *

+ * This method also selects the first entry of the history into + * the given combo. This might trigger a SWT.Modify event. + *

+ */ + public static void loadHistory(Combo combo, IDialogSettings settings) { + if (null == combo || null == settings) { + return; + } + String providers[] = settings.getArray(S_PROVIDERS); + if (null != providers) { + for (int i = 0; i < providers.length; ++i) { + combo.add(providers[i]); + } + combo.select(0); + } + } + + /** + * Saves the items of the given combo to the given settings. + * + *

+ * If the combo text is not in the list of history items yet, it will be + * added. The combo text will be the most recent history value (saved first). + *

+ * @param combo + * @param settings + */ + public static void saveHistory(Combo combo, IDialogSettings settings) { + if (null == combo) { + return; + } + // Save all providers from the combo list + the newly entered + String text = combo.getText(); + if (0 == text.length()) { + return; + } + int indexOfText = combo.indexOf(text); + // If the item was already in the list, remove it now + if (indexOfText != -1) { + combo.remove(indexOfText); + } + // And always add the entered text as the most recent one to the top of + // the list + combo.add(text, 0); + String[] items = combo.getItems(); + if (items != null && items.length > 0) { + settings.put(S_PROVIDERS, items); + } + } +}