summaryrefslogtreecommitdiff
path: root/src/plugins/launch/src/com/motorola/studio/android/launch/ui/DeviceSelectionDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/launch/src/com/motorola/studio/android/launch/ui/DeviceSelectionDialog.java')
-rw-r--r--src/plugins/launch/src/com/motorola/studio/android/launch/ui/DeviceSelectionDialog.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/plugins/launch/src/com/motorola/studio/android/launch/ui/DeviceSelectionDialog.java b/src/plugins/launch/src/com/motorola/studio/android/launch/ui/DeviceSelectionDialog.java
new file mode 100644
index 0000000..1659966
--- /dev/null
+++ b/src/plugins/launch/src/com/motorola/studio/android/launch/ui/DeviceSelectionDialog.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.motorola.studio.android.launch.ui;
+
+import java.util.Collection;
+import java.util.Properties;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.sequoyah.device.framework.model.IInstance;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+
+import com.motorola.studio.android.adt.ISerialNumbered;
+import com.motorola.studio.android.devices.DevicesManager;
+import com.motorola.studio.android.emulator.core.model.IAndroidEmulatorInstance;
+import com.motorola.studio.android.launch.LaunchPlugin;
+import com.motorola.studio.android.launch.LaunchUtils;
+import com.motorola.studio.android.launch.i18n.LaunchNLS;
+
+/**
+ * DESCRIPTION:
+ * This class implements the device selection dialog
+ *
+ * RESPONSIBILITY:
+ * Provides a dialog populated with the available device instances
+ *
+ * COLABORATORS:
+ * None.
+ *
+ * USAGE:
+ * This class is intended to be used by Eclipse only
+ */
+public class DeviceSelectionDialog extends ElementListSelectionDialog
+{
+ private static final String DEV_SELECTION_CONTEXT_HELP_ID = LaunchPlugin.PLUGIN_ID
+ + ".deviceSelectionDialog";
+
+ /**
+ * Default constructor
+ *
+ * @param parent Parent shell
+ * @param description Dialog description
+ */
+ public DeviceSelectionDialog(Shell parent, String description, final IProject project)
+ {
+ super(parent, new LabelProvider()
+ {
+ @Override
+ public String getText(Object element)
+ {
+ String result = "";
+ if (element instanceof ISerialNumbered)
+ {
+ ISerialNumbered serialNumbered = (ISerialNumbered) element;
+ result = serialNumbered.getDeviceName();
+ if (serialNumbered instanceof IAndroidEmulatorInstance)
+ {
+ IAndroidEmulatorInstance emulatorInstance =
+ (IAndroidEmulatorInstance) serialNumbered;
+ int emulatorApi = emulatorInstance.getAPILevel();
+ String emulatorTarget = emulatorInstance.getTarget();
+ result += " (" + emulatorTarget + ", Api version " + emulatorApi + ")";
+ }
+ else if (serialNumbered instanceof IInstance)
+ {
+ IInstance instance = (IInstance) serialNumbered;
+ Properties properties = instance.getProperties();
+ if (properties != null)
+ {
+ String target = properties.getProperty("ro.build.version.release"); //$NON-NLS-1$
+ if (target != null)
+ {
+ result += " (Android " + target + ")";
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public Image getImage(Object element)
+ {
+
+ Image img = null;
+
+ ISerialNumbered serialNumbered = (ISerialNumbered) element;
+ IStatus compatible = LaunchUtils.isCompatible(project, serialNumbered);
+
+ // notify the warning state
+ if (compatible.getSeverity() == IStatus.WARNING)
+ {
+ img =
+ PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJS_WARN_TSK);
+ }
+
+ return img;
+ }
+ });
+
+ this.setTitle(LaunchNLS.UI_LaunchComposite_SelectDeviceScreenTitle);
+ this.setMessage(description);
+
+ Collection<ISerialNumbered> instances = DevicesManager.getInstance().getAllDevicesSorted();
+ if ((project != null) && (instances != null) && (instances.size() > 0))
+ {
+ Collection<ISerialNumbered> filteredInstances =
+ LaunchUtils.filterInstancesByProject(instances, project);
+ Object[] filteredInstancesArray = filteredInstances.toArray();
+ this.setElements(filteredInstancesArray);
+ }
+
+ this.setHelpAvailable(true);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, DEV_SELECTION_CONTEXT_HELP_ID);
+ }
+}