Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Unified Diff: editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/preferences/DebugPreferencePage.java

Issue 8801021: added a preference so user can specify browser to open html page (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/preferences/DebugPreferencePage.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/preferences/DebugPreferencePage.java (revision 2081)
+++ editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/preferences/DebugPreferencePage.java (working copy)
@@ -25,20 +25,27 @@
import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.util.Util;
+import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.dialogs.ListDialog;
import java.io.File;
import java.util.List;
@@ -47,18 +54,38 @@
* The preference page for Dart debugging.
*/
public class DebugPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
- public static final String PAGE_ID = "com.google.dart.tools.debug.debugPreferencePage";;
- private Button addBrowserButton;
+ private class ProgramLabelProvider extends LabelProvider {
+ @Override
+ public Image getImage(Object element) {
+ return new Image(Display.getDefault(), ((Program) element).getImageData());
+ }
+
+ @Override
+ public String getText(Object element) {
+ return ((Program) element).getName();
+ }
+
+ }; //$NON-NLS-1$
+
+ public static final String PAGE_ID = "com.google.dart.tools.debug.debugPreferencePage"; //$NON-NLS-1$
private List<ChromeBrowserConfig> browsers;
+
private TableViewer browserViewer;
-
private Text vmField;
+ private Text browserField;
private Button removeBrowserButton;
+
private Button renameBrowserButton;
+ private Button browseButton;
+
+ private Button defaultBrowserButton;
+
+ private Button selectBrowserButton;
+
/**
* Create a new preference page.
*/
@@ -77,6 +104,12 @@
DartDebugCorePlugin.getPlugin().setDartVmExecutablePath(vmField.getText());
+ if (defaultBrowserButton.getSelection()) {
+ DartDebugCorePlugin.getPlugin().setDefaultBrowser(true);
+ } else {
+ DartDebugCorePlugin.getPlugin().setDefaultBrowser(false);
+ DartDebugCorePlugin.getPlugin().setBrowserExecutablePath(browserField.getText());
+ }
return true;
}
@@ -151,28 +184,13 @@
// label.setText("Enter one or more Chrome / Chromium based browsers");
// GridDataFactory.swtDefaults().span(2, 1).applyTo(label);
+ // Browser
+ createBrowserConfig(composite);
+
// Dart VM
- Group vmGroup = new Group(composite, SWT.NONE);
- vmGroup.setText("Dart VM executable location");
- GridDataFactory.fillDefaults().grab(true, false).applyTo(vmGroup);
- GridLayoutFactory.swtDefaults().numColumns(2).spacing(5, 2).applyTo(vmGroup);
+ Label label = new Label(composite, SWT.NONE);
+ createVmConfig(composite);
- vmField = new Text(vmGroup, SWT.SINGLE | SWT.BORDER);
- GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).hint(100, SWT.DEFAULT).grab(true,
- false).applyTo(vmField);
-
- Button browseButton = new Button(vmGroup, SWT.PUSH);
- browseButton.setText("Browse...");
- PixelConverter converter = new PixelConverter(browseButton);
- int widthHint = converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- GridDataFactory.swtDefaults().hint(widthHint, -1).applyTo(browseButton);
- browseButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- handleVmBrowseButton();
- }
- });
-
// browsers
// browsers = new ArrayList<ChromeBrowserConfig>(
// DartDebugCorePlugin.getPlugin().getConfiguredBrowsers());
@@ -184,7 +202,12 @@
if (DartDebugCorePlugin.getPlugin().getDartVmExecutablePath() != null) {
vmField.setText(DartDebugCorePlugin.getPlugin().getDartVmExecutablePath());
}
+ updateEnablements(DartDebugCorePlugin.getPlugin().getIsDefaultBrowser());
+ if (DartDebugCorePlugin.getPlugin().getBrowserExecutablePath() != null) {
+ browserField.setText(DartDebugCorePlugin.getPlugin().getBrowserExecutablePath());
+ }
+
return composite;
}
@@ -194,12 +217,79 @@
String filePath = fd.open();
if (filePath != null) {
- vmField.setText(filePath);
+ browserField.setText(filePath);
}
}
+ private void createBrowserConfig(Composite parent) {
+ Group browserGroup = new Group(parent, SWT.NONE);
+ browserGroup.setText(DebugPreferenceMessages.DebugPreferencePage_BrowserTitle);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(browserGroup);
+ GridLayoutFactory.swtDefaults().numColumns(3).spacing(5, 2).applyTo(browserGroup);
+
+ defaultBrowserButton = new Button(browserGroup, SWT.RADIO);
+ defaultBrowserButton.setText(DebugPreferenceMessages.DebugPreferencePage_DefaultBrowserText);
+ defaultBrowserButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateEnablements(true);
+ }
+ });
+ GridDataFactory.swtDefaults().span(3, 1).applyTo(defaultBrowserButton);
+ selectBrowserButton = new Button(browserGroup, SWT.RADIO);
+ selectBrowserButton.setText(DebugPreferenceMessages.DebugPreferencePage_SelectBrowserText);
+ GridDataFactory.swtDefaults().span(3, 1).applyTo(selectBrowserButton);
+ selectBrowserButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateEnablements(false);
+ }
+ });
+
+ browserField = new Text(browserGroup, SWT.SINGLE | SWT.BORDER);
+ GridDataFactory.swtDefaults().indent(15, 0).align(SWT.FILL, SWT.CENTER).hint(100, SWT.DEFAULT).grab(
+ true, false).applyTo(browserField);
+ browserField.setEnabled(false);
+ browseButton = new Button(browserGroup, SWT.PUSH);
+ browseButton.setText(DebugPreferenceMessages.DebugPreferencePage_Browse);
+ browseButton.setEnabled(false);
+ PixelConverter converter = new PixelConverter(browseButton);
+ int widthHint = converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ GridDataFactory.swtDefaults().hint(widthHint, -1).applyTo(browseButton);
+ browseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleBrowserConfigBrowseButton();
+ }
+ });
+ }
+
+ private void createVmConfig(Composite composite) {
+ Group vmGroup = new Group(composite, SWT.NONE);
+ vmGroup.setText(DebugPreferenceMessages.DebugPreferencePage_VMExecutableLocation);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(vmGroup);
+ GridLayoutFactory.swtDefaults().numColumns(2).spacing(5, 2).applyTo(vmGroup);
+
+ vmField = new Text(vmGroup, SWT.SINGLE | SWT.BORDER);
+ GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).hint(100, SWT.DEFAULT).grab(true,
+ false).applyTo(vmField);
+
+ Button browseVmButton = new Button(vmGroup, SWT.PUSH);
+ browseVmButton.setText(DebugPreferenceMessages.DebugPreferencePage_Browse);
+ PixelConverter converter = new PixelConverter(browseVmButton);
+ int widthHint = converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ GridDataFactory.swtDefaults().hint(widthHint, -1).applyTo(browseVmButton);
+ browseVmButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleVmBrowseButton();
+ }
+ });
+ }
+
private String findUniqueName(String name, int count, List<ChromeBrowserConfig> existingBrowsers) {
- String tempName = name + (count == 0 ? "" : count);
+ String tempName = name + (count == 0 ? "" : count); //$NON-NLS-1$
for (ChromeBrowserConfig browser : existingBrowsers) {
if (tempName.equals(browser.getName())) {
@@ -212,8 +302,8 @@
private String findUniqueName(String name, List<ChromeBrowserConfig> existingBrowsers) {
// strip .exe from the name -
- if (name.endsWith(".exe")) {
- name = name.substring(0, name.length() - ".exe".length());
+ if (name.endsWith(".exe")) { //$NON-NLS-1$
+ name = name.substring(0, name.length() - ".exe".length()); //$NON-NLS-1$
}
return findUniqueName(name, 0, existingBrowsers);
@@ -221,7 +311,7 @@
private void handleAddButton() {
FileDialog fileDialog = new FileDialog(getShell(), SWT.OPEN);
- fileDialog.setText("Select Chrome based browser");
+ fileDialog.setText("Select Chrome based browser"); //$NON-NLS-1$
String path = fileDialog.open();
@@ -230,8 +320,8 @@
if (path == null) {
// Let the user know the path was invalid -
- MessageDialog.openWarning(getShell(), "Error Locating Executable",
- "Unable to locate a browser executable.");
+ MessageDialog.openWarning(getShell(), "Error Locating Executable", //$NON-NLS-1$
+ "Unable to locate a browser executable."); //$NON-NLS-1$
} else {
ChromeBrowserConfig browserConfig = new ChromeBrowserConfig();
@@ -245,6 +335,23 @@
}
}
+ private void handleBrowserConfigBrowseButton() {
+
+ ListDialog listDialog = new ListDialog(getShell());
+ listDialog.setTitle(DebugPreferenceMessages.DebugPreferencePage_DialogTitle);
+ listDialog.setMessage(DebugPreferenceMessages.DebugPreferencePage_DialogMessage);
+
+ listDialog.setLabelProvider(new ProgramLabelProvider());
+ listDialog.setContentProvider(new ArrayContentProvider());
+ listDialog.setInput(Program.getPrograms());
+
+ if (listDialog.open() == Window.OK) {
+ Object[] result = listDialog.getResult();
+ browserField.setText(((Program) result[0]).getName());
+ }
+
+ }
+
private void handleRemoveButton() {
ChromeBrowserConfig browserConfig = (ChromeBrowserConfig) ((IStructuredSelection) browserViewer.getSelection()).getFirstElement();
@@ -258,13 +365,13 @@
private void handleRenameButton() {
final ChromeBrowserConfig browserConfig = (ChromeBrowserConfig) ((IStructuredSelection) browserViewer.getSelection()).getFirstElement();
- InputDialog inputDialog = new InputDialog(getShell(), "Enter Browser Name",
- "Enter the new name for the browser configuration:", browserConfig.getName(),
+ InputDialog inputDialog = new InputDialog(getShell(), "Enter Browser Name", //$NON-NLS-1$
+ "Enter the new name for the browser configuration:", browserConfig.getName(), //$NON-NLS-1$
new IInputValidator() {
@Override
public String isValid(String newText) {
if (newText == null || newText.isEmpty()) {
- return "The name must not be empty.";
+ return "The name must not be empty."; //$NON-NLS-1$
}
for (ChromeBrowserConfig other : browsers) {
@@ -273,7 +380,7 @@
}
if (newText.equals(other.getName())) {
- return "A browser configuration with that name already exists.";
+ return "A browser configuration with that name already exists."; //$NON-NLS-1$
}
}
@@ -302,12 +409,12 @@
// /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
String name = file.getName();
- if (name.endsWith(".app")) {
- name = name.substring(0, name.length() - ".app".length());
+ if (name.endsWith(".app")) { //$NON-NLS-1$
+ name = name.substring(0, name.length() - ".app".length()); //$NON-NLS-1$
// Or look in Info.plist for <key>CFBundleExecutable</key><string>app.name</string>?
- path = path + "/Contents/MacOS/" + name;
+ path = path + "/Contents/MacOS/" + name; //$NON-NLS-1$
File appFile = new File(path);
@@ -333,4 +440,17 @@
removeBrowserButton.setEnabled(hasSelection);
}
+ private void updateEnablements(boolean isDefaultBrowser) {
+ if (isDefaultBrowser) {
+ defaultBrowserButton.setSelection(true);
+ selectBrowserButton.setSelection(false);
+ browserField.setEnabled(false);
+ browseButton.setEnabled(false);
+ } else {
+ defaultBrowserButton.setSelection(false);
+ selectBrowserButton.setSelection(true);
+ browserField.setEnabled(true);
+ browseButton.setEnabled(true);
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698