Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/HintPreferencePage.java |
diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/HintPreferencePage.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/HintPreferencePage.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a1a765648b875070e264a0310321039b298e0a63 |
--- /dev/null |
+++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/HintPreferencePage.java |
@@ -0,0 +1,158 @@ |
+/* |
+ * Copyright (c) 2013, the Dart project authors. |
+ * |
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except |
+ * in compliance with the License. You may obtain a copy of the License at |
+ * |
+ * http://www.eclipse.org/legal/epl-v10.html |
+ * |
+ * Unless required by applicable law or agreed to in writing, software distributed under the License |
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
+ * or implied. See the License for the specific language governing permissions and limitations under |
+ * the License. |
+ */ |
+package com.google.dart.tools.ui.internal.preferences; |
+ |
+import com.google.dart.tools.core.DartCore; |
+import com.google.dart.tools.core.jobs.CleanLibrariesJob; |
+import com.google.dart.tools.ui.DartToolsPlugin; |
+ |
+import org.eclipse.core.runtime.CoreException; |
+import org.eclipse.core.runtime.jobs.Job; |
+import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
+import org.eclipse.jface.layout.GridDataFactory; |
+import org.eclipse.jface.layout.GridLayoutFactory; |
+import org.eclipse.jface.preference.PreferencePage; |
+import org.eclipse.swt.SWT; |
+import org.eclipse.swt.events.SelectionAdapter; |
+import org.eclipse.swt.events.SelectionEvent; |
+import org.eclipse.swt.widgets.Button; |
+import org.eclipse.swt.widgets.Composite; |
+import org.eclipse.swt.widgets.Control; |
+import org.eclipse.swt.widgets.Group; |
+import org.eclipse.swt.widgets.Label; |
+import org.eclipse.ui.IWorkbench; |
+import org.eclipse.ui.IWorkbenchPreferencePage; |
+ |
+/** |
+ * Page for setting Hint Analysis preferences. |
+ */ |
+public class HintPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { |
+ |
+ public static final String HINT_PREF_PAGE_ID = "com.google.dart.tools.ui.preferences.HintPreferencePage"; //$NON-NLS-1$ |
+ |
+ private static Button createCheckBox(Composite composite, String label, String tooltip) { |
+ Button checkBox = new Button(composite, SWT.CHECK); |
+ checkBox.setText(label); |
+ checkBox.setToolTipText(tooltip); |
+ return checkBox; |
+ } |
+ |
+ private Group hintGroup; |
+ private Button enableHintsButton; |
+ |
+ private Button enableDart2jsHintsButton; |
+ |
+ public HintPreferencePage() { |
+ setPreferenceStore(null); |
+ noDefaultAndApplyButton(); |
+ } |
+ |
+ @Override |
+ public void init(IWorkbench workbench) { |
+ // do nothing |
+ } |
+ |
+ @Override |
+ public boolean performOk() { |
+ boolean hasChanges = false; |
+ IEclipsePreferences prefs = DartCore.getPlugin().getPrefs(); |
+ if (prefs != null) { |
+ boolean hintsEnabled = DartCore.getPlugin().isHintsEnabled(); |
+ boolean hintsDart2JSEnabled = DartCore.getPlugin().isHintsDart2JSEnabled(); |
+ prefs.putBoolean(DartCore.ENABLE_HINTS_PREFERENCE, enableHintsButton.getSelection()); |
+ prefs.putBoolean( |
+ DartCore.ENABLE_HINTS_DART2JS_PREFERENCE, |
+ enableDart2jsHintsButton.getSelection()); |
+ if (hintsEnabled != enableHintsButton.getSelection() |
+ || hintsDart2JSEnabled != enableDart2jsHintsButton.getSelection()) { |
+ // trigger processing for hints |
+ DartCore.getProjectManager().setHintOption(enableHintsButton.getSelection()); |
+ DartCore.getProjectManager().setDart2JSHintOption(enableDart2jsHintsButton.getSelection()); |
+ hasChanges = true; |
+ } |
+ try { |
+ DartCore.getPlugin().savePrefs(); |
+ } catch (CoreException e) { |
+ DartToolsPlugin.log(e); |
+ } |
+ if (hasChanges) { |
+ Job job = new CleanLibrariesJob(); |
+ job.schedule(); |
+ } |
+ } |
+ return true; |
+ } |
+ |
+ @Override |
+ protected Control createContents(Composite parent) { |
+ Composite composite = new Composite(parent, SWT.NONE); |
+ |
+ GridDataFactory.fillDefaults().grab(true, false).indent(0, 10).align(SWT.FILL, SWT.BEGINNING).applyTo( |
+ composite); |
+ GridLayoutFactory.fillDefaults().spacing(0, 8).margins(0, 10).applyTo(composite); |
+ |
+ // Enable Hints checkbox |
+ enableHintsButton = createCheckBox( |
+ composite, |
+ PreferencesMessages.HintPreferencePage_enable_hints, |
+ PreferencesMessages.HintPreferencePage_enable_hints_tooltip); |
+ enableHintsButton.addSelectionListener(new SelectionAdapter() { |
+ @Override |
+ public void widgetSelected(SelectionEvent e) { |
+ // disable all widgets in the Hint Group |
+ boolean enableHintsButtonSelection = enableHintsButton.getSelection(); |
+ enableDart2jsHintsButton.setEnabled(enableHintsButtonSelection); |
+ hintGroup.setEnabled(enableHintsButtonSelection); |
+ } |
+ }); |
+ GridDataFactory.fillDefaults().applyTo(enableHintsButton); |
+ |
+ // Separator |
+ Label separatorLabel = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL); |
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(separatorLabel); |
+ |
+ // Hints group |
+ hintGroup = new Group(composite, SWT.NONE); |
+ hintGroup.setText(PreferencesMessages.HintPreferencePage_hints_group); |
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.BEGINNING).applyTo( |
+ hintGroup); |
+ GridLayoutFactory.fillDefaults().margins(8, 8).applyTo(hintGroup); |
+ |
+ // Enable dart2js hints checkbox |
+ enableDart2jsHintsButton = createCheckBox( |
+ hintGroup, |
+ PreferencesMessages.HintPreferencePage_enable_dart2js_hints, |
+ PreferencesMessages.HintPreferencePage_enable_dart2js_hints_tooltip); |
+ GridDataFactory.fillDefaults().applyTo(enableDart2jsHintsButton); |
+ |
+ // init |
+ initFromPrefs(); |
+ |
+ return composite; |
+ } |
+ |
+ private void initFromPrefs() { |
+ IEclipsePreferences prefs = DartCore.getPlugin().getPrefs(); |
+ if (prefs != null) { |
+ boolean enableHintsButtonSelection = prefs.getBoolean(DartCore.ENABLE_HINTS_PREFERENCE, true); |
+ enableHintsButton.setSelection(enableHintsButtonSelection); |
+ enableDart2jsHintsButton.setSelection(prefs.getBoolean( |
+ DartCore.ENABLE_HINTS_DART2JS_PREFERENCE, |
+ true)); |
+ enableDart2jsHintsButton.setEnabled(enableHintsButtonSelection); |
+ hintGroup.setEnabled(enableHintsButtonSelection); |
+ } |
+ } |
+ |
+} |