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

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

Issue 321583008: Merge to trunk cl - fixes/features for mobile support in the editor (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 6 years, 6 months 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: dart/editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/mobile/MobileMainTab.java
===================================================================
--- dart/editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/mobile/MobileMainTab.java (revision 37106)
+++ dart/editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/internal/mobile/MobileMainTab.java (working copy)
@@ -14,6 +14,7 @@
package com.google.dart.tools.debug.ui.internal.mobile;
import com.google.dart.tools.core.mobile.AndroidDebugBridge;
+import com.google.dart.tools.core.mobile.AndroidDevice;
import com.google.dart.tools.core.model.DartSdkManager;
import com.google.dart.tools.debug.core.DartLaunchConfigWrapper;
import com.google.dart.tools.debug.ui.internal.DartDebugUIPlugin;
@@ -49,15 +50,16 @@
private static final String MOBILE_STATUS_PREFIX = "Mobile status: ";
private static final String DEVICE_CONNECTED = "Connected";
+ private static final String DEVICE_NOT_AUTHORIZED = "Connected mobile is not authorized";
private static final String DEVICE_NOT_FOUND = "No mobile found or USB development not enabled on mobile";
private LaunchTargetComposite launchTargetGroup;
- private Button dartBrowserButton;
private Button installDartBrowserButton;
private Label statusLabel;
- private boolean deviceConnected = false;
+ private AndroidDevice connectedDevice = null;
private final AtomicBoolean monitorDeviceConnection = new AtomicBoolean(false);
+ private Button usePubServeButton;
@Override
public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
@@ -86,23 +88,29 @@
GridLayoutFactory.swtDefaults().numColumns(3).applyTo(group);
((GridLayout) group.getLayout()).marginBottom = 4;
- dartBrowserButton = new Button(group, SWT.CHECK);
- dartBrowserButton.setText("Launch in a Dart Content Shell Browser");
- dartBrowserButton.addSelectionListener(new SelectionAdapter() {
+ installDartBrowserButton = new Button(group, SWT.CHECK);
+ installDartBrowserButton.setText("Automatically install Dart Content Shell Browser on first launch");
+ GridDataFactory.swtDefaults().span(2, 1).grab(true, false).applyTo(installDartBrowserButton);
+
+ // pub serve setting
+ group = new Group(composite, SWT.NONE);
+ group.setText("Pub settings");
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
+ GridLayoutFactory.swtDefaults().numColumns(3).applyTo(group);
+ ((GridLayout) group.getLayout()).marginBottom = 5;
+ usePubServeButton = new Button(group, SWT.CHECK);
+ usePubServeButton.setText("Use pub to serve the application");
+ GridDataFactory.swtDefaults().span(3, 1).applyTo(usePubServeButton);
+ usePubServeButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
notifyPanelChanged();
- installDartBrowserButton.setEnabled(dartBrowserButton.getSelection());
- installDartBrowserButton.setSelection(dartBrowserButton.getSelection());
}
});
- GridDataFactory.swtDefaults().span(2, 1).grab(true, false).applyTo(dartBrowserButton);
+ Label label = new Label(group, SWT.NONE);
+ label.setText("(requires port forwarding setup using Chrome > Tools > Inspect Devices)");
+ GridDataFactory.swtDefaults().span(3, 1).indent(18, 0).applyTo(label);
- installDartBrowserButton = new Button(group, SWT.CHECK);
- installDartBrowserButton.setText("Automatically install Dart Content Shell Browser on first mobile launch");
- GridDataFactory.swtDefaults().span(2, 1).grab(true, false).indent(20, 0).applyTo(
- installDartBrowserButton);
-
// Status and setup group
group = new Group(composite, SWT.NONE);
group.setText("Status and first time setup");
@@ -139,9 +147,12 @@
if (performSdkCheck() != null) {
return performSdkCheck();
}
- if (!deviceConnected) {
+ if (connectedDevice == null) {
return DEVICE_NOT_FOUND;
}
+ if (!connectedDevice.isAuthorized()) {
+ return DEVICE_NOT_AUTHORIZED;
+ }
return launchTargetGroup.getErrorMessage();
}
@@ -185,8 +196,8 @@
launchTargetGroup.setHtmlButtonSelection(false);
}
- dartBrowserButton.setSelection(wrapper.getLaunchContentShell());
installDartBrowserButton.setSelection(wrapper.getInstallContentShell());
+ usePubServeButton.setSelection(wrapper.getUsePubServe());
}
/**
@@ -212,8 +223,8 @@
wrapper.setUrl(launchTargetGroup.getUrlString());
wrapper.setSourceDirectoryName(launchTargetGroup.getSourceDirectory());
- wrapper.setLaunchContentShell(dartBrowserButton.getSelection());
wrapper.setInstallContentShell(installDartBrowserButton.getSelection());
+ wrapper.setUsePubServe(usePubServeButton.getSelection());
}
@Override
@@ -222,6 +233,7 @@
wrapper.setShouldLaunchFile(true);
wrapper.setApplicationName(""); //$NON-NLS-1$
wrapper.setLaunchContentShell(true);
+ wrapper.setUsePubServe(false);
}
private void notifyPanelChanged() {
@@ -249,14 +261,14 @@
public void run() {
AndroidDebugBridge devBridge = AndroidDebugBridge.getAndroidDebugBridge();
- boolean wasDeviceConnected = devBridge.getConnectedDevice() != null;
- update(wasDeviceConnected);
+ AndroidDevice oldDevice = devBridge.getConnectedDevice();
+ update(oldDevice);
while (monitorDeviceConnection.get()) {
- final boolean isDeviceConnected = devBridge.getConnectedDevice() != null;
- if (wasDeviceConnected != isDeviceConnected) {
- wasDeviceConnected = isDeviceConnected;
- update(isDeviceConnected);
+ AndroidDevice newDevice = devBridge.getConnectedDevice();
+ if (!AndroidDevice.isEqual(oldDevice, newDevice)) {
+ oldDevice = newDevice;
+ update(oldDevice);
}
try {
Thread.sleep(1000);
@@ -266,11 +278,11 @@
}
}
- private void update(final boolean isDeviceConnected) {
+ private void update(final AndroidDevice device) {
display.asyncExec(new Runnable() {
@Override
public void run() {
- updateMobileStatus(isDeviceConnected);
+ updateMobileStatus(device);
}
});
}
@@ -292,11 +304,18 @@
*
* @param isDeviceConnected {@code true} if a mobile device is currently connected
*/
- private void updateMobileStatus(boolean isDeviceConnected) {
- deviceConnected = isDeviceConnected;
+ private void updateMobileStatus(AndroidDevice device) {
+ connectedDevice = device;
if (statusLabel != null && !statusLabel.isDisposed()) {
- statusLabel.setText(MOBILE_STATUS_PREFIX
- + (deviceConnected ? DEVICE_CONNECTED : DEVICE_NOT_FOUND));
+ String status;
+ if (device == null) {
+ status = DEVICE_NOT_FOUND;
+ } else if (!device.isAuthorized()) {
+ status = DEVICE_NOT_AUTHORIZED;
+ } else {
+ status = DEVICE_CONNECTED;
+ }
+ statusLabel.setText(MOBILE_STATUS_PREFIX + status);
updateLaunchConfigurationDialog();
}
}

Powered by Google App Engine
This is Rietveld 408576698