OSDN Git Service

Add tooltips and a legend (AVD selector)
authorXavier Ducrohet <xav@android.com>
Wed, 1 Jul 2009 08:18:33 +0000 (01:18 -0700)
committerXavier Ducrohet <xav@android.com>
Wed, 1 Jul 2009 08:26:22 +0000 (01:26 -0700)
Also added some TODOs

sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdCreationDialog.java
sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java

index ffa6f97..1621efc 100644 (file)
@@ -48,6 +48,17 @@ import org.eclipse.swt.widgets.Text;
 import java.io.File;
 import java.util.TreeMap;
 
+/**
+ * AVD creator dialog.
+ *
+ * TODO:
+ * - support custom hardware properties
+ * - use SdkTargetSelector instead of Combo
+ * - Better UI for the sdcard (radio button for K or M, info about what is valid value)
+ * - Support for ###x### skins
+ * - tooltips on widgets.
+ *
+ */
 final class AvdCreationDialog extends Dialog {
 
     private final AvdManager mAvdManager;
@@ -111,7 +122,9 @@ final class AvdCreationDialog extends Dialog {
         super.create();
 
         Point p = getShell().getSize();
-        p.x += 130;
+        if (p.x < 400) {
+            p.x = 400;
+        }
         getShell().setSize(p);
     }
 
@@ -157,6 +170,8 @@ final class AvdCreationDialog extends Dialog {
 
         label = new Label(top, SWT.NONE);
         label.setText("SD Card:");
+        label.setToolTipText("Either a path to an existing SD card image\n" +
+                "or an image size in K or M (e.g. 512K, 10M).");
 
         ValidateListener validateListener = new ValidateListener();
 
@@ -257,9 +272,17 @@ final class AvdCreationDialog extends Dialog {
         SdkManager sdkManager = mAvdManager.getSdkManager();
         if (sdkManager != null) {
             for (IAndroidTarget target : sdkManager.getTargets()) {
-                String name = String.format("%s - %s",
-                        target.getName(),
-                        target.getApiVersionName());
+                String name;
+                if (target.isPlatform()) {
+                    name = String.format("%s - API Level %d",
+                            target.getName(),
+                            target.getApiVersionNumber());
+                } else {
+                    name = String.format("%s (%s) - API Level %d",
+                            target.getName(),
+                            target.getVendor(),
+                            target.getApiVersionNumber());
+                }
                 mCurrentTargets.put(name, target);
                 mTargetCombo.add(name);
                 if (!found) {
index b9cc943..6799c12 100644 (file)
@@ -180,6 +180,11 @@ public final class AvdSelector {
         mTargetFilter = filter;
         mDisplayMode = displayMode;
 
+        // get some bitmaps.
+        mImageFactory = new ImageFactory(parent.getDisplay());
+        mOkImage = mImageFactory.getImageByName("accept_icon16.png");
+        mBrokenImage = mImageFactory.getImageByName("reject_icon16.png");
+
         // Layout has 2 columns
         Composite group = new Composite(parent, SWT.NONE);
         GridLayout gl;
@@ -211,7 +216,8 @@ public final class AvdSelector {
         if (displayMode == DisplayMode.MANAGER) {
             mNewButton = new Button(buttons, SWT.PUSH | SWT.FLAT);
             mNewButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-            mNewButton.setText("New...");
+            mNewButton.setText("Add...");
+            mNewButton.setToolTipText("Adds a new AVD.");
             mNewButton.addSelectionListener(new SelectionAdapter() {
                 @Override
                 public void widgetSelected(SelectionEvent arg0) {
@@ -222,6 +228,7 @@ public final class AvdSelector {
             mDeleteButton = new Button(buttons, SWT.PUSH | SWT.FLAT);
             mDeleteButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
             mDeleteButton.setText("Delete");
+            mDeleteButton.setToolTipText("Deletes the selected AVD.");
             mDeleteButton.addSelectionListener(new SelectionAdapter() {
                 @Override
                 public void widgetSelected(SelectionEvent arg0) {
@@ -236,6 +243,7 @@ public final class AvdSelector {
         mDetailsButton = new Button(buttons, SWT.PUSH | SWT.FLAT);
         mDetailsButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
         mDetailsButton.setText("Details...");
+        mDetailsButton.setToolTipText("Diplays details of the selected AVD.");
         mDetailsButton.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent arg0) {
@@ -249,6 +257,7 @@ public final class AvdSelector {
         mRefreshButton = new Button(buttons, SWT.PUSH | SWT.FLAT);
         mRefreshButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
         mRefreshButton.setText("Resfresh");
+        mRefreshButton.setToolTipText("Reloads the list of AVD.\nUse this if you create AVD from the command line.");
         mRefreshButton.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent arg0) {
@@ -260,12 +269,26 @@ public final class AvdSelector {
             mManagerButton = new Button(buttons, SWT.PUSH | SWT.FLAT);
             mManagerButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
             mManagerButton.setText("Manager...");
+            mManagerButton.setToolTipText("Launches the AVD manager.");
             mManagerButton.addSelectionListener(new SelectionAdapter() {
                 @Override
                 public void widgetSelected(SelectionEvent e) {
                     onManager();
                 }
             });
+        } else {
+            Composite legend = new Composite(group, SWT.NONE);
+            legend.setLayout(gl = new GridLayout(2, false /*makeColumnsEqualWidth*/));
+            gl.marginHeight = gl.marginWidth = 0;
+            legend.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false,
+                    NUM_COL, 1));
+            legend.setFont(group.getFont());
+
+            new Label(legend, SWT.NONE).setImage(mOkImage);
+            new Label(legend, SWT.NONE).setText("A valid Android Virtual Device.");
+            new Label(legend, SWT.NONE).setImage(mBrokenImage);
+            new Label(legend, SWT.NONE).setText(
+                    "An Android Virtual Device that failed to load. Click 'Details' to see the error.");
         }
 
         // create the table columns
@@ -278,11 +301,6 @@ public final class AvdSelector {
         final TableColumn column3 = new TableColumn(mTable, SWT.NONE);
         column3.setText("API Level");
 
-        // get some bitmaps.
-        mImageFactory = new ImageFactory(parent.getDisplay());
-        mOkImage = mImageFactory.getImageByName("accept_icon16.png");
-        mBrokenImage = mImageFactory.getImageByName("reject_icon16.png");
-
         adjustColumnsWidth(mTable, column0, column1, column2, column3);
         setupSelectionListener(mTable);
         fillTable(mTable);