Bug 442647 - Persist scope selection in Find Contribution Class Dialog

Signed-off-by: Marco Descher <marco@descher.at>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java
index 2801f17..42dc97b 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java
@@ -8,6 +8,7 @@
  * Contributors:
  *     Steven Spungin <steven@spungin.tv> - initial API and implementation, Bug 424730, Bug 435625, Bug 436281
  *     Andrej ten Brummelhuis <andrejbrummelhuis@gmail.com> - Bug 395283
+ *     Marco Descher <marco@descher.at> - Bug 442647
  *******************************************************************************/
 
 package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
@@ -103,7 +104,9 @@
 	private static final int MAX_RESULTS = 500;
 	private Image contributionTypeImage;
 	private TableViewer viewer;
+	private static final String PREF_SEARCHSCOPE = "searchScope"; //$NON-NLS-1$
 	private ResourceSearchScope searchScope = ResourceSearchScope.PROJECT;
+	private static final String PREF_SEARCHSCOPES = "searchScopes"; //$NON-NLS-1$
 	private EnumSet<ResourceSearchScope> searchScopes = EnumSet.of(ResourceSearchScope.PROJECT);
 	// private EnumSet<SearchScope> searchScopes =
 	// EnumSet.of(SearchScope.PROJECT, SearchScope.REFERENCES);
@@ -216,6 +219,8 @@
 	@Override
 	public boolean close() {
 		stopSearchThread(true);
+		getPreferences().put(PREF_SEARCHSCOPE, searchScope.toString());
+		getPreferences().put(PREF_SEARCHSCOPES, searchScopes.toString());
 		return super.close();
 	}
 
@@ -231,6 +236,20 @@
 		super(parentShell);
 		this.context = context;
 		imageCache = new BundleImageCache(context.get(Display.class), getClass().getClassLoader());
+
+		String searchScopeString = getPreferences().get(PREF_SEARCHSCOPE, ResourceSearchScope.PROJECT.toString());
+		searchScope = ResourceSearchScope.valueOf(searchScopeString);
+
+		String searchScopesString = getPreferences().get(PREF_SEARCHSCOPES, EnumSet.of(ResourceSearchScope.PROJECT).toString());
+		searchScopes = valueOf(ResourceSearchScope.class, searchScopesString);
+	}
+
+	public static <E extends Enum<E>> EnumSet<E> valueOf(Class<E> eClass, String str) {
+		String[] arr = str.substring(1, str.length() - 1).split(",");
+		EnumSet<E> set = EnumSet.noneOf(eClass);
+		for (String e : arr)
+			set.add(E.valueOf(eClass, e.trim()));
+		return set;
 	}
 
 	public void setStatus(final String message) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/SaveDialogBoundsSettingsDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/SaveDialogBoundsSettingsDialog.java
index a713f64..01db113 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/SaveDialogBoundsSettingsDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/SaveDialogBoundsSettingsDialog.java
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     Andrej ten Brummelhuis <andrejbrummelhuis@gmail.com> - initial implementation (Bug 395283)
+ *     Marco Descher <marco@descher.at> - Bug 442647
  *******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
 
@@ -27,22 +28,17 @@
 	private static final String DIALOG_WIDTH = "DIALOG_WIDTH"; //$NON-NLS-1$
 	private static final String DIALOG_HEIGHT = "DIALOG_HEIGHT"; //$NON-NLS-1$
 
-	private IDialogSettings dialogSettings;
+	private IDialogSettings dialogSettings = new DialogSettings(ORG_ECLIPSE_E4_TOOLS_EMF_UI);
 
 	private Preferences preferences = InstanceScope.INSTANCE.getNode(ORG_ECLIPSE_E4_TOOLS_EMF_UI);
 
 	public SaveDialogBoundsSettingsDialog(Shell parentShell) {
 		super(parentShell);
-	}
 
-	@Override
-	protected IDialogSettings getDialogBoundsSettings() {
-		dialogSettings = new DialogSettings(ORG_ECLIPSE_E4_TOOLS_EMF_UI);
 		dialogSettings.put(DIALOG_HEIGHT, preferences.getInt(DIALOG_HEIGHT, -1));
 		dialogSettings.put(DIALOG_WIDTH, preferences.getInt(DIALOG_WIDTH, -1));
 		dialogSettings.put(DIALOG_ORIGIN_X, preferences.getInt(DIALOG_ORIGIN_X, -1));
 		dialogSettings.put(DIALOG_ORIGIN_Y, preferences.getInt(DIALOG_ORIGIN_Y, -1));
-		return dialogSettings;
 	}
 
 	private void saveDialogSettings() {
@@ -63,4 +59,13 @@
 		saveDialogSettings();
 		return returnValue;
 	}
+
+	@Override
+	protected IDialogSettings getDialogBoundsSettings() {
+		return dialogSettings;
+	}
+
+	public Preferences getPreferences() {
+		return preferences;
+	}
 }