Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/ExperimentalPreferencePage.java |
diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/ExperimentalPreferencePage.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/ExperimentalPreferencePage.java |
index f34822a264ef68bd0e91f7540c850bf17b369154..5b16c12c4cfe81cd988937d2a5954e87d9035648 100644 |
--- a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/ExperimentalPreferencePage.java |
+++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/preferences/ExperimentalPreferencePage.java |
@@ -24,10 +24,13 @@ 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.SelectionEvent; |
+import org.eclipse.swt.events.SelectionListener; |
import org.eclipse.swt.widgets.Button; |
import org.eclipse.swt.widgets.Composite; |
import org.eclipse.swt.widgets.Control; |
import org.eclipse.swt.widgets.Label; |
+import org.eclipse.swt.widgets.Text; |
import org.eclipse.ui.IWorkbench; |
import org.eclipse.ui.IWorkbenchPreferencePage; |
@@ -45,9 +48,11 @@ public class ExperimentalPreferencePage extends PreferencePage implements IWorkb |
return checkBox; |
} |
-// private Button enableAnalysisServerButton; |
private Button enableAsyncSupportButton; |
private Button enableEnumsSupportButton; |
+ private Button enableAnalysisServerButton; |
+ private Label serverHttpPortLabel; |
+ private Text serverHttpPortText; |
public ExperimentalPreferencePage() { |
setPreferenceStore(null); |
@@ -64,13 +69,16 @@ public class ExperimentalPreferencePage extends PreferencePage implements IWorkb |
IEclipsePreferences prefs = DartCore.getPlugin().getPrefs(); |
if (prefs != null) { |
-// boolean serverChanged = setPref( |
-// DartCoreDebug.ENABLE_ANALYSIS_SERVER_PREF, |
-// enableAnalysisServerButton); |
+ boolean serverChanged = setPref( |
+ DartCoreDebug.ENABLE_ANALYSIS_SERVER_PREF, |
+ enableAnalysisServerButton); |
+ boolean portChanged = setPref( |
+ DartCoreDebug.ANALYSIS_SERVER_HTTP_PORT_PREF, |
+ serverHttpPortText); |
boolean asyncChanged = setPref(DartCoreDebug.ENABLE_ASYNC_PREF, enableAsyncSupportButton); |
boolean enumsChanged = setPref(DartCoreDebug.ENABLE_ENUMS_PREF, enableEnumsSupportButton); |
- boolean hasChanges = /* serverChanged || */asyncChanged || enumsChanged; |
+ boolean hasChanges = serverChanged || portChanged || asyncChanged || enumsChanged; |
try { |
DartCore.getPlugin().savePrefs(); |
} catch (CoreException e) { |
@@ -94,13 +102,6 @@ public class ExperimentalPreferencePage extends PreferencePage implements IWorkb |
composite); |
GridLayoutFactory.fillDefaults().spacing(0, 8).margins(0, 10).applyTo(composite); |
- // Enable Analysis Server checkbox |
-// enableAnalysisServerButton = createCheckBox( |
-// composite, |
-// PreferencesMessages.ExperimentalPreferencePage_enable_analysis_server, |
-// PreferencesMessages.ExperimentalPreferencePage_enable_analysis_server_tooltip); |
-// GridDataFactory.fillDefaults().applyTo(enableAnalysisServerButton); |
- |
// Enable Async support checkbox |
enableAsyncSupportButton = createCheckBox( |
composite, |
@@ -115,6 +116,43 @@ public class ExperimentalPreferencePage extends PreferencePage implements IWorkb |
PreferencesMessages.ExperimentalPreferencePage_enable_enums_support_tooltip); |
GridDataFactory.fillDefaults().applyTo(enableEnumsSupportButton); |
+ // Enable Analysis Server checkbox |
+ enableAnalysisServerButton = createCheckBox( |
+ composite, |
+ PreferencesMessages.ExperimentalPreferencePage_enable_analysis_server, |
+ PreferencesMessages.ExperimentalPreferencePage_enable_analysis_server_tooltip); |
+ GridDataFactory.fillDefaults().applyTo(enableAnalysisServerButton); |
+ enableAnalysisServerButton.addSelectionListener(new SelectionListener() { |
+ @Override |
+ public void widgetDefaultSelected(SelectionEvent e) { |
+ widgetSelected(e); |
+ } |
+ |
+ @Override |
+ public void widgetSelected(SelectionEvent e) { |
+ updateServerOptionEnablement(); |
+ } |
+ }); |
+ |
+ // Analysis Server options |
+ { |
+ Composite group = new Composite(composite, SWT.NONE); |
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.BEGINNING).applyTo(group); |
+ GridLayoutFactory.fillDefaults().numColumns(2).extendedMargins(40, 0, 0, 0).applyTo(group); |
+ |
+ serverHttpPortLabel = new Label(group, SWT.NONE); |
+ serverHttpPortLabel.setText(PreferencesMessages.ExperimentalPreferencePage_server_http_port_label); |
+ |
+ // Http port for analysis server or empty string if none |
+ serverHttpPortText = new Text(group, SWT.BORDER | SWT.SINGLE | SWT.RIGHT); |
+ serverHttpPortText.setTextLimit(5); |
+ serverHttpPortText.setToolTipText(PreferencesMessages.ExperimentalPreferencePage_server_http_port_tooltip); |
+ GridDataFactory.fillDefaults().hint(50, SWT.DEFAULT).applyTo(serverHttpPortText); |
+ |
+ // Only allow integer values |
+ serverHttpPortText.addListener(SWT.Verify, new ValidIntListener()); |
+ } |
+ |
// Separator |
{ |
Label separatorLabel = new Label(composite, SWT.NONE); |
@@ -131,20 +169,48 @@ public class ExperimentalPreferencePage extends PreferencePage implements IWorkb |
return composite; |
} |
- private boolean getPref(String prefKey) { |
+ private String getPref(String prefKey) { |
+ return DartCore.getPlugin().getPrefs().get(prefKey, "").trim(); |
+ } |
+ |
+ private boolean getPrefBool(String prefKey) { |
return DartCore.getPlugin().getPrefs().getBoolean(prefKey, false); |
} |
private void initFromPrefs() { |
-// enableAnalysisServerButton.setSelection(getPref(DartCoreDebug.ENABLE_ANALYSIS_SERVER_PREF)); |
- enableAsyncSupportButton.setSelection(getPref(DartCoreDebug.ENABLE_ASYNC_PREF)); |
- enableEnumsSupportButton.setSelection(getPref(DartCoreDebug.ENABLE_ENUMS_PREF)); |
+ enableAnalysisServerButton.setSelection(getPrefBool(DartCoreDebug.ENABLE_ANALYSIS_SERVER_PREF)); |
+ enableAsyncSupportButton.setSelection(getPrefBool(DartCoreDebug.ENABLE_ASYNC_PREF)); |
+ enableEnumsSupportButton.setSelection(getPrefBool(DartCoreDebug.ENABLE_ENUMS_PREF)); |
+ String textValue = getPref(DartCoreDebug.ANALYSIS_SERVER_HTTP_PORT_PREF); |
+ try { |
+ if (Integer.parseInt(textValue) < 0) { |
+ textValue = ""; |
+ } |
+ } catch (NumberFormatException nfe) { |
+ textValue = ""; |
+ } |
+ serverHttpPortText.setText(textValue); |
+ updateServerOptionEnablement(); |
} |
private boolean setPref(String prefKey, Button button) { |
- boolean oldValue = getPref(prefKey); |
+ boolean oldValue = getPrefBool(prefKey); |
boolean newValue = button.getSelection(); |
DartCore.getPlugin().getPrefs().putBoolean(prefKey, newValue); |
return oldValue != newValue; |
} |
+ |
+ private boolean setPref(String prefKey, Text textBox) { |
+ String oldValue = getPref(prefKey); |
+ String newValue = textBox.getText().trim(); |
+ DartCore.getPlugin().getPrefs().put(prefKey, newValue); |
+ return !oldValue.equals(newValue); |
+ } |
+ |
+ private void updateServerOptionEnablement() { |
+ boolean enabled = enableAnalysisServerButton.getSelection(); |
+ serverHttpPortLabel.setForeground(getShell().getDisplay().getSystemColor( |
+ enabled ? SWT.COLOR_BLACK : SWT.COLOR_GRAY)); |
+ serverHttpPortText.setEnabled(enabled); |
+ } |
} |