aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager
diff options
context:
space:
mode:
authorRaphael Moll <ralf@android.com>2012-10-11 14:08:54 -0700
committerRaphael Moll <ralf@android.com>2012-10-11 14:11:48 -0700
commitc6c3f7940598e900ce658d7dfd3f1e2b6a9dde8c (patch)
tree92b3c8ff7399d544eaf59267f93f852d53166858 /sdkmanager
parent51102d634bfe2968edef4356a8a6783c9672f1bd (diff)
downloadsdk-c6c3f7940598e900ce658d7dfd3f1e2b6a9dde8c.zip
sdk-c6c3f7940598e900ce658d7dfd3f1e2b6a9dde8c.tar.gz
sdk-c6c3f7940598e900ce658d7dfd3f1e2b6a9dde8c.tar.bz2
AVD: Create New Device fixes.
- Don't crash if a non-integer is set as screen size. - Display warnings on all missing fields explaining why the "create" button is disabled. Don't let successive checks overwrite the warnings/errors from the previous check. - Make ok button larger to accomodate its own text. Change-Id: I03ddaf67a9e4e07d1f2ff0c4b94b0a8b064000a3
Diffstat (limited to 'sdkmanager')
-rw-r--r--sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/DeviceCreationDialog.java114
1 files changed, 64 insertions, 50 deletions
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/DeviceCreationDialog.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/DeviceCreationDialog.java
index 873a822..2b7025f 100644
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/DeviceCreationDialog.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/DeviceCreationDialog.java
@@ -157,6 +157,11 @@ public class DeviceCreationDialog extends GridDialog {
}
}
+ Object ld = mOkButton.getLayoutData();
+ if (ld instanceof GridData) {
+ ((GridData) ld).widthHint = 100;
+ }
+
validatePage();
return control;
@@ -431,35 +436,37 @@ public class DeviceCreationDialog extends GridDialog {
public void modifyText(ModifyEvent e) {
if (!mDiagonalLength.getText().isEmpty()) {
- double diagonal = Double.parseDouble(mDiagonalLength.getText());
- double diagonalDp = 160.0 * diagonal;
-
- // Set the Screen Size
- if (diagonalDp >= 1200) {
- mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("xlarge")));
- } else if (diagonalDp >= 800) {
- mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("large")));
- } else if (diagonalDp >= 568) {
- mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("normal")));
- } else {
- mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("small")));
- }
- if (!mXDimension.getText().isEmpty() && !mYDimension.getText().isEmpty()) {
-
- // Set the density based on which bucket it's closest to
- double x = Double.parseDouble(mXDimension.getText());
- double y = Double.parseDouble(mYDimension.getText());
- double dpi = Math.sqrt(x * x + y * y) / diagonal;
- double difference = Double.MAX_VALUE;
- Density bucket = Density.MEDIUM;
- for (Density d : Density.values()) {
- if (Math.abs(d.getDpiValue() - dpi) < difference) {
- difference = Math.abs(d.getDpiValue() - dpi);
- bucket = d;
+ try {
+ double diagonal = Double.parseDouble(mDiagonalLength.getText());
+ double diagonalDp = 160.0 * diagonal;
+
+ // Set the Screen Size
+ if (diagonalDp >= 1200) {
+ mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("xlarge")));
+ } else if (diagonalDp >= 800) {
+ mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("large")));
+ } else if (diagonalDp >= 568) {
+ mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("normal")));
+ } else {
+ mSize.select(ScreenSize.getIndex(ScreenSize.getEnum("small")));
+ }
+ if (!mXDimension.getText().isEmpty() && !mYDimension.getText().isEmpty()) {
+
+ // Set the density based on which bucket it's closest to
+ double x = Double.parseDouble(mXDimension.getText());
+ double y = Double.parseDouble(mYDimension.getText());
+ double dpi = Math.sqrt(x * x + y * y) / diagonal;
+ double difference = Double.MAX_VALUE;
+ Density bucket = Density.MEDIUM;
+ for (Density d : Density.values()) {
+ if (Math.abs(d.getDpiValue() - dpi) < difference) {
+ difference = Math.abs(d.getDpiValue() - dpi);
+ bucket = d;
+ }
}
+ mDensity.select(Density.getIndex(bucket));
}
- mDensity.select(Density.getIndex(bucket));
- }
+ } catch (NumberFormatException ignore) {}
}
}
}
@@ -575,57 +582,64 @@ public class DeviceCreationDialog extends GridDialog {
}
}
- if (name.isEmpty()) {
+ if (valid && name.isEmpty()) {
+ warning = "Please enter a name for the device.";
valid = false;
}
- if (!validateFloat("Diagonal Length", mDiagonalLength.getText())) {
+ if (valid && !validateFloat("Diagonal Length", mDiagonalLength.getText())) {
+ warning = "Please enter a screen size.";
valid = false;
}
- if (!validateInt("Resolution", mXDimension.getText())) {
+ if (valid && !validateInt("Resolution", mXDimension.getText())) {
+ warning = "Please enter the screen resolution.";
valid = false;
}
- if (!validateInt("Resolution", mYDimension.getText())) {
+ if (valid && !validateInt("Resolution", mYDimension.getText())) {
+ warning = "Please enter the screen resolution.";
valid = false;
}
- if (mSize.getSelectionIndex() < 0) {
+ if (valid && mSize.getSelectionIndex() < 0) {
error = "A size bucket must be selected.";
valid = false;
}
- if (mDensity.getSelectionIndex() < 0) {
+ if (valid && mDensity.getSelectionIndex() < 0) {
error = "A screen density bucket must be selected";
valid = false;
}
- if (mRatio.getSelectionIndex() < 0) {
+ if (valid && mRatio.getSelectionIndex() < 0) {
error = "A screen ratio must be selected.";
valid = false;
}
- if (!mNoNav.getSelection() && !mTrackball.getSelection() && !mDpad.getSelection()) {
+ if (valid && !mNoNav.getSelection() && !mTrackball.getSelection() && !mDpad.getSelection()) {
error = "A mode of hardware navigation, or no navigation, has to be selected.";
valid = false;
}
- if (!validateInt("RAM", mRam.getText())) {
+ if (valid && !validateInt("RAM", mRam.getText())) {
+ warning = "Please enter a RAM amount.";
valid = false;
}
- if (mRamCombo.getSelectionIndex() < 0) {
+ if (valid && mRamCombo.getSelectionIndex() < 0) {
error = "RAM must have a selected unit.";
valid = false;
}
- if (mButtons.getSelectionIndex() < 0) {
+ if (valid && mButtons.getSelectionIndex() < 0) {
error = "A button type must be selected.";
valid = false;
}
- if (mKeyboard.getSelection()) {
- if (!mPortraitKeys.getSelection()
- && !mPortrait.getSelection()
- && !mLandscapeKeys.getSelection()
- && !mLandscape.getSelection()) {
- error = "At least one device state must be enabled.";
- valid = false;
- }
- } else {
- if (!mPortrait.getSelection() && !mLandscape.getSelection()) {
- error = "At least one device state must be enabled";
- valid = false;
+ if (valid) {
+ if (mKeyboard.getSelection()) {
+ if (!mPortraitKeys.getSelection()
+ && !mPortrait.getSelection()
+ && !mLandscapeKeys.getSelection()
+ && !mLandscape.getSelection()) {
+ error = "At least one device state must be enabled.";
+ valid = false;
+ }
+ } else {
+ if (!mPortrait.getSelection() && !mLandscape.getSelection()) {
+ error = "At least one device state must be enabled";
+ valid = false;
+ }
}
}
if (mForceCreation.isEnabled() && !mForceCreation.getSelection()) {