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 6105f8b..9d9c461 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
@@ -49,7 +49,7 @@
     doCreateContents(contents);
     setupBinding(preferenceBinder);
     preferenceBinder.applyValues();
-    onPageCreation();
+    updateContents();
     return contents;
   }
 
@@ -123,9 +123,6 @@
    */
   protected abstract void setupBinding(PreferenceBinder preferenceBinder);
 
-  /** Method invoked after the page has been created. By default this method does nothing. */
-  protected void onPageCreation() {}
-
   /**
    * Returns the id of this preference page.
    * @return the id of this preference page.
@@ -160,7 +157,7 @@
   /**
    * Indicates whether this page is a "Project Properties" page or not.
    * @return {@code true} if this page is a "Project Properties" page, or {@code false} if this page is a
-   * "Worspace Settings" page.
+   * "Workspace Settings" page.
    */
   protected final boolean isPropertyPage() {
     return project != null;
@@ -213,12 +210,12 @@
 
   @Override protected final void performDefaults() {
     preferenceBinder.applyDefaults();
-    defaultsPerformed();
+    updateContents();
     super.performDefaults();
   }
 
-  /** Method invoked after this page's defaults have been processed. By default this method does nothing. */
-  protected void defaultsPerformed() {}
+  /** Refreshes this page with the stored/default preference values. */
+  protected void updateContents() {}
 
   /** Marks this page as "valid." */
   protected final void pageIsNowValid() {
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 a76f5d6..81c9908 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
@@ -150,6 +150,7 @@
         FileDialog dialog = new FileDialog(getShell(), SWT.OPEN | SWT.SHEET);
         String file = dialog.open();
         if (file != null) txtProtocFilePath.setText(file);
+        checkState();
       }
     });
     btnRefreshResources.addSelectionListener(new SelectionAdapter() {
@@ -195,6 +196,9 @@
 
   @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()),
@@ -210,20 +214,13 @@
         bindCodeGeneration(codeGenerationSettings.python())
           .to(preferences.pythonCodeGenerationEnabled(), preferences.pythonOutputDirectory())
       );
-    if (isPropertyPage()) {
-      preferenceBinder.add(bindSelectionOf(btnEnableProjectSettings).to(preferences.enableProjectSettings()));
-    }
   }
 
-  @Override protected void onPageCreation() {
-    defaultsPerformed();
-  }
-
-  @Override protected void defaultsPerformed() {
+  @Override protected void updateContents() {
     boolean compileProtoFiles = btnCompileProtoFiles.getSelection();
     boolean shouldEnableCompilerOptions = compileProtoFiles;
     if (isPropertyPage()) {
-      boolean useProjectSettings = btnEnableProjectSettings.isEnabled();
+      boolean useProjectSettings = areProjectSettingsActive();
       activateProjectSettings(useProjectSettings);
       enableProjectSpecificOptions(useProjectSettings);
       shouldEnableCompilerOptions = shouldEnableCompilerOptions && useProjectSettings;
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 925bcb2..3c5f8d0 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
@@ -138,16 +138,12 @@
     directoryPathsEditor.directoryPaths(unmodifiableList(paths));
   }
 
-  @Override protected void onPageCreation() {
-    defaultsPerformed();
-  }
-
   /** {@inheritDoc} */
   @Override protected void onProjectSettingsActivation(boolean active) {
     enableProjectOptions(active);
   }
 
-  @Override protected void defaultsPerformed() {
+  @Override protected void updateContents() {
     enableProjectOptions(true);
   }