Cleaning up preferences-related code.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/PreferenceAndPropertyPage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/PreferenceAndPropertyPage.java
index 9d9c461..cb22c3a 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/PreferenceAndPropertyPage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/PreferenceAndPropertyPage.java
@@ -8,6 +8,7 @@
*/
package com.google.eclipse.protobuf.ui.preferences.pages;
+import static com.google.eclipse.protobuf.ui.preferences.binding.BindingToButtonSelection.bindSelectionOf;
import static com.google.eclipse.protobuf.ui.preferences.pages.Messages.*;
import static org.eclipse.ui.dialogs.PreferencesUtil.createPreferenceDialogOn;
@@ -23,6 +24,7 @@
import org.eclipse.ui.*;
import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess;
+import com.google.eclipse.protobuf.ui.preferences.BooleanPreference;
import com.google.eclipse.protobuf.ui.preferences.binding.PreferenceBinder;
import com.google.inject.Inject;
@@ -33,7 +35,7 @@
*/
public abstract class PreferenceAndPropertyPage extends PreferencePage implements IWorkbenchPreferencePage, IWorkbenchPropertyPage {
- protected Button btnEnableProjectSettings;
+ private Button btnEnableProjectSettings;
private Link lnkEnableWorkspaceSettings;
@@ -47,6 +49,7 @@
@Override protected final Control createContents(Composite parent) {
Composite contents = contentParent(parent);
doCreateContents(contents);
+ setupBtnEnabledProjectSettingsBinding();
setupBinding(preferenceBinder);
preferenceBinder.applyValues();
updateContents();
@@ -117,6 +120,21 @@
*/
protected abstract void doCreateContents(Composite parent);
+ private void setupBtnEnabledProjectSettingsBinding() {
+ BooleanPreference preference = enableProjectSettingsPreference(getPreferenceStore());
+ if (preference == null) return;
+ preferenceBinder.add(bindSelectionOf(btnEnableProjectSettings).to(preference));
+ }
+
+ /**
+ * Returns the preference that indicates whether this page is a "Project Properties" or a "Workspace Preferences"
+ * page.
+ * @param store the store where the preference value is stored.
+ * @return the preference that indicates whether this page is a "Project Properties" or a "Workspace Preferences"
+ * page.
+ */
+ protected abstract BooleanPreference enableProjectSettingsPreference(IPreferenceStore store);
+
/**
* Sets up data binding.
* @param preferenceBinder the preference binder;
@@ -155,9 +173,9 @@
}
/**
- * Indicates whether this page is a "Project Properties" page or not.
+ * Indicates whether this page is a "Project Properties" or a "Workspace Preferences" page.
* @return {@code true} if this page is a "Project Properties" page, or {@code false} if this page is a
- * "Workspace Settings" page.
+ * "Workspace Preferences" page.
*/
protected final boolean isPropertyPage() {
return project != null;
@@ -201,13 +219,9 @@
@Override public final boolean performOk() {
preferenceBinder.saveValues();
- okPerformed();
return true;
}
- /** Method invoked after this page's defaults have been saved. By default this method does nothing. */
- protected void okPerformed() {}
-
@Override protected final void performDefaults() {
preferenceBinder.applyDefaults();
updateContents();
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencePage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencePage.java
index 81c9908..50b0976 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencePage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencePage.java
@@ -11,6 +11,7 @@
import static com.google.eclipse.protobuf.ui.preferences.binding.BindingToButtonSelection.bindSelectionOf;
import static com.google.eclipse.protobuf.ui.preferences.binding.BindingToTextValue.bindTextOf;
import static com.google.eclipse.protobuf.ui.preferences.pages.compiler.BindingToCodeGeneration.bindCodeGeneration;
+import static com.google.eclipse.protobuf.ui.preferences.pages.compiler.EnableProjectSettingsPreference.enableProjectSettings;
import static com.google.eclipse.protobuf.ui.preferences.pages.compiler.Messages.*;
import static com.google.eclipse.protobuf.ui.swt.EventListeners.addSelectionListener;
import static java.util.Arrays.asList;
@@ -18,13 +19,14 @@
import java.io.File;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.xtext.ui.PluginImageHelper;
-import com.google.eclipse.protobuf.ui.preferences.DataChangedListener;
+import com.google.eclipse.protobuf.ui.preferences.*;
import com.google.eclipse.protobuf.ui.preferences.binding.PreferenceBinder;
import com.google.eclipse.protobuf.ui.preferences.pages.PreferenceAndPropertyPage;
import com.google.inject.Inject;
@@ -194,11 +196,12 @@
pageIsNowValid();
}
+ @Override protected BooleanPreference enableProjectSettingsPreference(IPreferenceStore store) {
+ return enableProjectSettings(store);
+ }
+
@Override protected void setupBinding(PreferenceBinder preferenceBinder) {
RawPreferences preferences = new RawPreferences(getPreferenceStore());
- if (isPropertyPage()) {
- preferenceBinder.add(bindSelectionOf(btnEnableProjectSettings).to(preferences.enableProjectSettings()));
- }
preferenceBinder.addAll(
bindSelectionOf(btnCompileProtoFiles).to(preferences.compileProtoFiles()),
bindSelectionOf(btnUseProtocInSystemPath).to(preferences.useProtocInSystemPath()),
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferenceStoreInitializer.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferenceStoreInitializer.java
index 4e2b046..23d49f7 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferenceStoreInitializer.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferenceStoreInitializer.java
@@ -8,6 +8,8 @@
*/
package com.google.eclipse.protobuf.ui.preferences.pages.compiler;
+import static com.google.eclipse.protobuf.ui.preferences.pages.compiler.EnableProjectSettingsPreference.enableProjectSettings;
+
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.xtext.ui.editor.preferences.*;
@@ -23,8 +25,8 @@
/** {@inheritDoc} */
public void initialize(IPreferenceStoreAccess access) {
IPreferenceStore store = access.getWritablePreferenceStore();
+ enableProjectSettings(store).defaultValue(false);
RawPreferences preferences = new RawPreferences(store);
- preferences.enableProjectSettings().defaultValue(false);
preferences.useProtocInSystemPath().defaultValue(true);
preferences.javaCodeGenerationEnabled().defaultValue(false);
preferences.cppCodeGenerationEnabled().defaultValue(false);
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencesProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencesProvider.java
index 658fc05..1b5ca2f 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencesProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/CompilerPreferencesProvider.java
@@ -8,6 +8,8 @@
*/
package com.google.eclipse.protobuf.ui.preferences.pages.compiler;
+import static com.google.eclipse.protobuf.ui.preferences.pages.compiler.EnableProjectSettingsPreference.enableProjectSettings;
+
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess;
@@ -25,8 +27,7 @@
public CompilerPreferences getPreferences(IProject project) {
IPreferenceStore store = storeAccess.getWritablePreferenceStore(project);
- RawPreferences preferences = new RawPreferences(store);
- boolean useProjectPreferences = preferences.enableProjectSettings().value();
+ boolean useProjectPreferences = enableProjectSettings(store).value();
if (!useProjectPreferences) store = storeAccess.getWritablePreferenceStore();
return new CompilerPreferences(new RawPreferences(store));
}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/EnableProjectSettingsPreference.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/EnableProjectSettingsPreference.java
new file mode 100644
index 0000000..a21d9a8
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/EnableProjectSettingsPreference.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * 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
+ */
+package com.google.eclipse.protobuf.ui.preferences.pages.compiler;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import com.google.eclipse.protobuf.ui.preferences.BooleanPreference;
+
+/**
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+class EnableProjectSettingsPreference {
+
+ static BooleanPreference enableProjectSettings(IPreferenceStore store) {
+ return new BooleanPreference("compiler.enableProjectSettings", store);
+ }
+
+ private EnableProjectSettingsPreference() {}
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/RawPreferences.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/RawPreferences.java
index 1394d3b..6336819 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/RawPreferences.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/compiler/RawPreferences.java
@@ -17,7 +17,6 @@
*/
class RawPreferences {
- private final BooleanPreference enableProjectSettings;
private final BooleanPreference compileProtoFiles;
private final BooleanPreference useProtocInSystemPath;
private final BooleanPreference useProtocInCustomPath;
@@ -33,7 +32,6 @@
private final BooleanPreference refreshOutputDirectory;
RawPreferences(IPreferenceStore store) {
- enableProjectSettings = new BooleanPreference("compiler.enableProjectSettings", store);
compileProtoFiles = new BooleanPreference("compiler.compileProtoFiles", store);
useProtocInSystemPath = new BooleanPreference("compiler.useProtocInSystemPath", store);
useProtocInCustomPath = new BooleanPreference("compiler.useProtocInCustomPath", store);
@@ -49,10 +47,6 @@
refreshOutputDirectory = new BooleanPreference("compiler.refreshOutputDirectory", store);
}
- BooleanPreference enableProjectSettings() {
- return enableProjectSettings;
- }
-
BooleanPreference compileProtoFiles() {
return compileProtoFiles;
}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/general/GeneralSettingsPreferencePage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/general/GeneralSettingsPreferencePage.java
index ef637d1..f07ba22 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/general/GeneralSettingsPreferencePage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/general/GeneralSettingsPreferencePage.java
@@ -8,10 +8,12 @@
*/
package com.google.eclipse.protobuf.ui.preferences.pages.general;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
+import com.google.eclipse.protobuf.ui.preferences.BooleanPreference;
import com.google.eclipse.protobuf.ui.preferences.binding.PreferenceBinder;
import com.google.eclipse.protobuf.ui.preferences.pages.PreferenceAndPropertyPage;
@@ -35,6 +37,11 @@
}
/** {@inheritDoc} */
+ @Override protected BooleanPreference enableProjectSettingsPreference(IPreferenceStore store) {
+ return null;
+ }
+
+ /** {@inheritDoc} */
@Override protected void setupBinding(PreferenceBinder preferenceBinder) {}
/** {@inheritDoc} */
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java
index 3c5f8d0..5d96567 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java
@@ -18,6 +18,7 @@
import java.util.*;
import java.util.List;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
@@ -97,6 +98,10 @@
pageIsNowValid();
}
+ @Override protected BooleanPreference enableProjectSettingsPreference(IPreferenceStore store) {
+ return null; // this page is always a "Project Properties" page
+ }
+
@Override protected void setupBinding(PreferenceBinder preferenceBinder) {
RawPreferences preferences = new RawPreferences(getPreferenceStore());
preferenceBinder.addAll(