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

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

Issue 753183003: Fix an issue resolving paths when remote debugging. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 1 month 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/dialogs/RemoteConnectionDialog.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/dialogs/RemoteConnectionDialog.java (revision 41867)
+++ editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/dialogs/RemoteConnectionDialog.java (working copy)
@@ -14,7 +14,6 @@
package com.google.dart.tools.debug.ui.internal.dialogs;
-import com.google.dart.tools.core.internal.util.ResourceUtil;
import com.google.dart.tools.debug.core.configs.DartServerLaunchConfigurationDelegate;
import com.google.dart.tools.debug.core.configs.DartiumLaunchConfigurationDelegate;
import com.google.dart.tools.debug.core.util.IRemoteConnectionDelegate;
@@ -25,8 +24,11 @@
import com.google.dart.tools.debug.ui.internal.view.DebuggerViewManager;
import com.google.dart.tools.ui.themes.Fonts;
-import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -54,6 +56,7 @@
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ContainerSelectionDialog;
import org.eclipse.ui.dialogs.ListDialog;
import java.util.List;
@@ -123,24 +126,24 @@
private IRemoteConnectionDelegate connectionDelegate;
private String host;
private int port;
- private IFile file;
+ private IContainer container;
private boolean usePubServe;
public ConnectionJob(IRemoteConnectionDelegate connectionDelegate, String host, int port,
- IFile file, boolean usePubServe) {
+ IContainer container, boolean usePubServe) {
super("Connecting...");
this.connectionDelegate = connectionDelegate;
this.host = host;
this.port = port;
- this.file = file;
+ this.container = container;
this.usePubServe = usePubServe;
}
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
- connectionDelegate.performRemoteConnection(host, port, file, monitor, usePubServe);
+ connectionDelegate.performRemoteConnection(host, port, container, monitor, usePubServe);
// Show the debugger view.
Display.getDefault().asyncExec(new Runnable() {
@@ -202,7 +205,7 @@
this.portDefault = portDefault;
}
- public void connection(String host, int port, IFile file, boolean usePubServe) {
+ public void connection(String host, int port, IContainer container, boolean usePubServe) {
IRemoteConnectionDelegate connectionDelegate = null;
switch (this) {
@@ -222,7 +225,7 @@
}
if (connectionDelegate != null) {
- Job job = new ConnectionJob(connectionDelegate, host, port, file, usePubServe);
+ Job job = new ConnectionJob(connectionDelegate, host, port, container, usePubServe);
job.schedule();
}
}
@@ -262,7 +265,7 @@
private Text portText;
- private Text fileText;
+ private Label resourcePathLabel;
private Text instructionsLabel;
@@ -306,7 +309,7 @@
String host = hostText.getText().trim();
String port = portText.getText().trim();
- String filePath = fileText.getText().trim();
+ String resourcePath = resourcePathLabel.getText().trim();
boolean usePubServe = usePubServeButton.getSelection();
IDialogSettings settings = getDialogSettings();
@@ -314,7 +317,7 @@
settings.put("selected", connection.ordinal());
settings.put(connection.name() + ".host", host);
settings.put(connection.name() + ".port", port);
- settings.put(connection.name() + ".file", filePath);
+ settings.put(connection.name() + ".resource", resourcePath);
settings.put(connection.name() + ".usePubServe", usePubServe);
int connectionPort;
@@ -329,16 +332,19 @@
return;
}
- IFile file = ResourceUtil.getFile(filePath);
- if (file == null) {
- ErrorDialog.openError(getShell(), "Invalid Application File", null, new Status(
+ IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(resourcePath);
+
+ if (resource == null) {
+ ErrorDialog.openError(getShell(), "Invalid Source Project", null, new Status(
IStatus.ERROR,
DartDebugUIPlugin.PLUGIN_ID,
- "\"" + filePath + "\" is an invalid resource path."));
+ "\"" + resourcePath + "\" is an invalid resource path."));
return;
}
- connection.connection(host, connectionPort, file, usePubServe);
+ IContainer container = resource instanceof IContainer ? (IContainer) resource
+ : resource.getParent();
+ connection.connection(host, connectionPort, container, usePubServe);
super.okPressed();
}
@@ -364,26 +370,37 @@
Group group = new Group(parent, SWT.NONE);
group.setText("Connection parameters");
GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
- GridLayoutFactory.fillDefaults().numColumns(2).margins(12, 6).applyTo(group);
+ GridLayoutFactory.fillDefaults().numColumns(3).margins(12, 6).applyTo(group);
label = new Label(group, SWT.NONE);
label.setText("Host:");
hostText = new Text(group, SWT.SINGLE | SWT.BORDER);
- GridDataFactory.fillDefaults().grab(true, false).applyTo(hostText);
+ GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(hostText);
label = new Label(group, SWT.NONE);
label.setText("Port:");
portText = new Text(group, SWT.SINGLE | SWT.BORDER);
- GridDataFactory.fillDefaults().grab(true, false).applyTo(portText);
+ GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(portText);
label = new Label(group, SWT.NONE);
- label.setText("File:");
+ label.setText("Project source:");
devoncarew 2014/11/25 18:27:35 The user now needs to indicate where the source th
- fileText = new Text(group, SWT.SINGLE | SWT.BORDER);
- GridDataFactory.fillDefaults().grab(true, false).applyTo(fileText);
+ resourcePathLabel = new Label(group, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo(
+ resourcePathLabel);
+ Button projectBrowseButton = new Button(group, SWT.PUSH);
+ projectBrowseButton.setText("Select Folder...");
+ GridDataFactory.swtDefaults().applyTo(projectBrowseButton);
+ projectBrowseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleSourceDirectoryBrowseButton();
+ }
+ });
+
label = new Label(parent, SWT.NONE);
instructionsLabel = new Text(parent, SWT.WRAP | SWT.READ_ONLY);
@@ -458,11 +475,28 @@
IDialogSettings settings = getDialogSettings();
hostText.setText(notNull(settings.get(connection.name() + ".host")));
portText.setText(notNull(settings.get(connection.name() + ".port")));
- fileText.setText(notNull(settings.get(connection.name() + ".file")));
+ resourcePathLabel.setText(notNull(settings.get(connection.name() + ".resource")));
pubGroup.setVisible(connection == ConnectionType.CHROME);
}
+ private void handleSourceDirectoryBrowseButton() {
+ ContainerSelectionDialog dialog = new ContainerSelectionDialog(
+ getShell(),
+ null,
+ false,
+ "Select source location");
+
+ dialog.open();
+
+ Object[] results = dialog.getResult();
+
+ if ((results != null) && (results.length > 0)) {
+ String pathStr = ((IPath) results[0]).toString();
+ resourcePathLabel.setText(pathStr);
+ }
+ }
+
private String notNull(String str) {
return str == null ? "" : str;
}

Powered by Google App Engine
This is Rietveld 408576698