diff options
author | Raphael Moll <ralf@android.com> | 2012-10-11 14:08:54 -0700 |
---|---|---|
committer | Raphael Moll <ralf@android.com> | 2012-10-11 14:11:48 -0700 |
commit | c6c3f7940598e900ce658d7dfd3f1e2b6a9dde8c (patch) | |
tree | 92b3c8ff7399d544eaf59267f93f852d53166858 | |
parent | 51102d634bfe2968edef4356a8a6783c9672f1bd (diff) | |
download | sdk-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
-rw-r--r-- | sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/DeviceCreationDialog.java | 114 |
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()) { |