diff options
35 files changed, 877 insertions, 679 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/META-INF/MANIFEST.MF b/eclipse/plugins/com.android.ide.eclipse.adt/META-INF/MANIFEST.MF index aab1077..8aab0af 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/META-INF/MANIFEST.MF +++ b/eclipse/plugins/com.android.ide.eclipse.adt/META-INF/MANIFEST.MF @@ -102,6 +102,7 @@ Export-Package: com.android.ide.eclipse.adt;x-friends:="com.android.ide.eclipse. com.android.sdklib.internal.repository;x-friends:="com.android.ide.eclipse.tests", com.android.sdklib.io;x-friends:="com.android.ide.eclipse.tests", com.android.sdklib.repository;x-friends:="com.android.ide.eclipse.tests", + com.android.sdklib.resources;x-friends:="com.android.ide.eclipse.tests", com.android.sdklib.xml;x-friends:="com.android.ide.eclipse.tests", com.android.sdkstats;x-friends:="com.android.ide.eclipse.tests", com.android.sdkuilib.internal.repository;x-friends:="com.android.ide.eclipse.tests", diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigurationComposite.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigurationComposite.java index 6b648e2..89285bf 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigurationComposite.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigurationComposite.java @@ -26,8 +26,6 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.RegionQuali import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenDimensionQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation; import com.android.ide.eclipse.adt.internal.resources.manager.ProjectResources; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFile; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFolder; @@ -43,6 +41,8 @@ import com.android.ide.eclipse.adt.internal.ui.ConfigurationSelector.LanguageReg import com.android.layoutlib.api.IResourceValue; import com.android.layoutlib.api.IStyleResourceValue; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.Density; +import com.android.sdklib.resources.ScreenOrientation; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/KeyboardStateQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/KeyboardStateQualifier.java index e00428e..1375d2a 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/KeyboardStateQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/KeyboardStateQualifier.java @@ -18,11 +18,10 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.KeyboardState; import org.eclipse.swt.graphics.Image; - - /** * Resource Qualifier for keyboard state. */ @@ -32,70 +31,6 @@ public final class KeyboardStateQualifier extends ResourceQualifier { private KeyboardState mValue = null; - /** - * Screen Orientation enum. - */ - public static enum KeyboardState { - EXPOSED("keysexposed", "Exposed"), //$NON-NLS-1$ - HIDDEN("keyshidden", "Hidden"), //$NON-NLS-1$ - SOFT("keyssoft", "Soft"); //$NON-NLS-1$ - - private String mValue; - private String mDisplayValue; - - private KeyboardState(String value, String displayValue) { - mValue = value; - mDisplayValue = displayValue; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static KeyboardState getEnum(String value) { - for (KeyboardState orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - public static int getIndex(KeyboardState value) { - int i = 0; - for (KeyboardState input : values()) { - if (value == input) { - return i; - } - - i++; - } - - return -1; - } - - public static KeyboardState getByIndex(int index) { - int i = 0; - for (KeyboardState value : values()) { - if (i == index) { - return value; - } - i++; - } - return null; - } - } - public KeyboardStateQualifier() { // pass } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationMethodQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationMethodQualifier.java index 50cb9cb..e82ea63 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationMethodQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationMethodQualifier.java @@ -18,11 +18,10 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.Navigation; import org.eclipse.swt.graphics.Image; - - /** * Resource Qualifier for Navigation Method. */ @@ -30,82 +29,17 @@ public final class NavigationMethodQualifier extends ResourceQualifier { public static final String NAME = "Navigation Method"; - private NavigationMethod mValue; - - /** - * Navigation Method enum. - */ - public static enum NavigationMethod { - DPAD("dpad", "D-pad"), //$NON-NLS-1$ - TRACKBALL("trackball", "Trackball"), //$NON-NLS-1$ - WHEEL("wheel", "Wheel"), //$NON-NLS-1$ - NONAV("nonav", "No Navigation"); //$NON-NLS-1$ - - private String mValue; - private String mDisplay; - - private NavigationMethod(String value, String display) { - mValue = value; - mDisplay = display; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static NavigationMethod getEnum(String value) { - for (NavigationMethod orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplay; - } - - public static int getIndex(NavigationMethod value) { - int i = 0; - for (NavigationMethod nav : values()) { - if (nav == value) { - return i; - } - - i++; - } - - return -1; - } - - public static NavigationMethod getByIndex(int index) { - int i = 0; - for (NavigationMethod value : values()) { - if (i == index) { - return value; - } - i++; - } - return null; - } - } + private Navigation mValue; public NavigationMethodQualifier() { // pass } - public NavigationMethodQualifier(NavigationMethod value) { + public NavigationMethodQualifier(Navigation value) { mValue = value; } - public NavigationMethod getValue() { + public Navigation getValue() { return mValue; } @@ -132,7 +66,7 @@ public final class NavigationMethodQualifier extends ResourceQualifier { @Override public boolean checkAndSet(String value, FolderConfiguration config) { - NavigationMethod method = NavigationMethod.getEnum(value); + Navigation method = Navigation.getEnum(value); if (method != null) { NavigationMethodQualifier qualifier = new NavigationMethodQualifier(method); config.setNavigationMethodQualifier(qualifier); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/PixelDensityQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/PixelDensityQualifier.java index ed33994..5b3ba91 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/PixelDensityQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/PixelDensityQualifier.java @@ -17,9 +17,9 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; -import com.android.layoutlib.api.IDensityBasedResourceValue; import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.Density; import org.eclipse.swt.graphics.Image; @@ -36,114 +36,6 @@ public final class PixelDensityQualifier extends ResourceQualifier { private Density mValue = Density.MEDIUM; - /** - * Screen Orientation enum. - */ - public static enum Density { - HIGH("hdpi", "High Density", IDensityBasedResourceValue.Density.HIGH), //$NON-NLS-1$ - MEDIUM("mdpi", "Medium Density", IDensityBasedResourceValue.Density.MEDIUM), //$NON-NLS-1$ - LOW("ldpi", "Low Density", IDensityBasedResourceValue.Density.LOW), //$NON-NLS-1$ - NODPI("nodpi", "No Density", IDensityBasedResourceValue.Density.NODPI); //$NON-NLS-1$ - - private final String mValue; - private final String mDisplayValue; - private final IDensityBasedResourceValue.Density mDensity; - - private Density(String value, String displayValue, - IDensityBasedResourceValue.Density density) { - mValue = value; - mDisplayValue = displayValue; - mDensity = density; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static Density getEnum(String value) { - for (Density orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - static Density getLegacyEnum(String value) { - Matcher m = sDensityLegacyPattern.matcher(value); - if (m.matches()) { - String v = m.group(1); - - try { - int density = Integer.parseInt(v); - for (Density orient : values()) { - if (orient.mDensity.getValue() == density) { - return orient; - } - } - } catch (NumberFormatException e) { - // looks like the string we extracted wasn't a valid number - // which really shouldn't happen since the regexp would have failed. - } - } - return null; - } - - public String getValue() { - return mValue; - } - - public int getDpiValue() { - return mDensity.getValue(); - } - - public String getLegacyValue() { - if (this != NODPI) { - return String.format("%1$ddpi", getDpiValue()); - } - - return ""; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - /** - * Returns the {@link com.android.layoutlib.api.IDensityBasedResourceValue.Density} value - * associated to this {@link Density}. - */ - public IDensityBasedResourceValue.Density getDensity() { - return mDensity; - } - - public static int getIndex(Density value) { - int i = 0; - for (Density input : values()) { - if (value == input) { - return i; - } - - i++; - } - - return -1; - } - - public static Density getByIndex(int index) { - int i = 0; - for (Density value : values()) { - if (i == index) { - return value; - } - i++; - } - return null; - } - } - public PixelDensityQualifier() { // pass } @@ -180,7 +72,19 @@ public final class PixelDensityQualifier extends ResourceQualifier { public boolean checkAndSet(String value, FolderConfiguration config) { Density density = Density.getEnum(value); if (density == null) { - density = Density.getLegacyEnum(value); + + // attempt to read a legacy value. + Matcher m = sDensityLegacyPattern.matcher(value); + if (m.matches()) { + String v = m.group(1); + + try { + density = Density.getEnum(Integer.parseInt(v)); + } catch (NumberFormatException e) { + // looks like the string we extracted wasn't a valid number + // which really shouldn't happen since the regexp would have failed. + } + } } if (density != null) { @@ -221,7 +125,7 @@ public final class PixelDensityQualifier extends ResourceQualifier { // if reference is high, we want highest dpi. // if reference is medium, we'll prefer to scale down high dpi, than scale up low dpi // if reference if low, we'll prefer to scale down high than medium (2:1 over 4:3) - return mValue.mDensity.getValue() > compareQ.mValue.mDensity.getValue(); + return mValue.getDpiValue() > compareQ.mValue.getDpiValue(); } } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenOrientationQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenOrientationQualifier.java index a78f217..9ba6abb 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenOrientationQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenOrientationQualifier.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.ScreenOrientation; import org.eclipse.swt.graphics.Image; @@ -30,71 +31,6 @@ public final class ScreenOrientationQualifier extends ResourceQualifier { private ScreenOrientation mValue = null; - /** - * Screen Orientation enum. - */ - public static enum ScreenOrientation { - PORTRAIT("port", "Portrait"), //$NON-NLS-1$ - LANDSCAPE("land", "Landscape"), //$NON-NLS-1$ - SQUARE("square", "Square"); //$NON-NLS-1$ - - private String mValue; - private String mDisplayValue; - - private ScreenOrientation(String value, String displayValue) { - mValue = value; - mDisplayValue = displayValue; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static ScreenOrientation getEnum(String value) { - for (ScreenOrientation orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - public static int getIndex(ScreenOrientation orientation) { - int i = 0; - for (ScreenOrientation orient : values()) { - if (orient == orientation) { - return i; - } - - i++; - } - - return -1; - } - - public static ScreenOrientation getByIndex(int index) { - int i = 0; - for (ScreenOrientation orient : values()) { - if (i == index) { - return orient; - } - i++; - } - - return null; - } - } - public ScreenOrientationQualifier() { } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenRatioQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenRatioQualifier.java index 08bce4f..73feb60 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenRatioQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenRatioQualifier.java @@ -19,6 +19,7 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.ScreenRatio; import org.eclipse.swt.graphics.Image; @@ -28,70 +29,6 @@ public class ScreenRatioQualifier extends ResourceQualifier { private ScreenRatio mValue = null; - /** - * Screen Orientation enum. - */ - public static enum ScreenRatio { - NOTLONG("notlong", "Not Long"), //$NON-NLS-1$ - LONG("long", "Long"); //$NON-NLS-1$ - - private String mValue; - private String mDisplayValue; - - private ScreenRatio(String value, String displayValue) { - mValue = value; - mDisplayValue = displayValue; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static ScreenRatio getEnum(String value) { - for (ScreenRatio orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - public static int getIndex(ScreenRatio orientation) { - int i = 0; - for (ScreenRatio orient : values()) { - if (orient == orientation) { - return i; - } - - i++; - } - - return -1; - } - - public static ScreenRatio getByIndex(int index) { - int i = 0; - for (ScreenRatio orient : values()) { - if (i == index) { - return orient; - } - i++; - } - - return null; - } - } - public ScreenRatioQualifier() { } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenSizeQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenSizeQualifier.java index f48f54d..59d5ca1 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenSizeQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenSizeQualifier.java @@ -19,6 +19,7 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.ScreenSize; import org.eclipse.swt.graphics.Image; @@ -31,70 +32,6 @@ public class ScreenSizeQualifier extends ResourceQualifier { private ScreenSize mValue = null; - /** - * Screen Orientation enum. - */ - public static enum ScreenSize { - SMALL("small", "Small"), //$NON-NLS-1$ - NORMAL("normal", "Normal"), //$NON-NLS-1$ - LARGE("large", "Large"); //$NON-NLS-1$ - - private String mValue; - private String mDisplayValue; - - private ScreenSize(String value, String displayValue) { - mValue = value; - mDisplayValue = displayValue; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static ScreenSize getEnum(String value) { - for (ScreenSize orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - public static int getIndex(ScreenSize orientation) { - int i = 0; - for (ScreenSize orient : values()) { - if (orient == orientation) { - return i; - } - - i++; - } - - return -1; - } - - public static ScreenSize getByIndex(int index) { - int i = 0; - for (ScreenSize orient : values()) { - if (i == index) { - return orient; - } - i++; - } - - return null; - } - } public ScreenSizeQualifier() { } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TextInputMethodQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TextInputMethodQualifier.java index b73776c..a4d2ad3 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TextInputMethodQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TextInputMethodQualifier.java @@ -18,12 +18,10 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.Keyboard; import org.eclipse.swt.graphics.Image; - - - /** * Resource Qualifier for Text Input Method. */ @@ -31,81 +29,18 @@ public final class TextInputMethodQualifier extends ResourceQualifier { public static final String NAME = "Text Input Method"; - private TextInputMethod mValue; - - /** - * Screen Orientation enum. - */ - public static enum TextInputMethod { - NOKEY("nokeys", "No Keys"), //$NON-NLS-1$ - QWERTY("qwerty", "Qwerty"), //$NON-NLS-1$ - TWELVEKEYS("12key", "12 Key"); //$NON-NLS-1$ - - private String mValue; - private String mDisplayValue; - - private TextInputMethod(String value, String displayValue) { - mValue = value; - mDisplayValue = displayValue; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static TextInputMethod getEnum(String value) { - for (TextInputMethod orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } + private Keyboard mValue; - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - public static int getIndex(TextInputMethod value) { - int i = 0; - for (TextInputMethod input : values()) { - if (value == input) { - return i; - } - - i++; - } - - return -1; - } - - public static TextInputMethod getByIndex(int index) { - int i = 0; - for (TextInputMethod value : values()) { - if (i == index) { - return value; - } - i++; - } - return null; - } - } public TextInputMethodQualifier() { // pass } - public TextInputMethodQualifier(TextInputMethod value) { + public TextInputMethodQualifier(Keyboard value) { mValue = value; } - public TextInputMethod getValue() { + public Keyboard getValue() { return mValue; } @@ -131,7 +66,7 @@ public final class TextInputMethodQualifier extends ResourceQualifier { @Override public boolean checkAndSet(String value, FolderConfiguration config) { - TextInputMethod method = TextInputMethod.getEnum(value); + Keyboard method = Keyboard.getEnum(value); if (method != null) { TextInputMethodQualifier qualifier = new TextInputMethodQualifier(); qualifier.mValue = method; diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TouchScreenQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TouchScreenQualifier.java index b3bad48..b46b014 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TouchScreenQualifier.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TouchScreenQualifier.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.resources.configurations; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.sdklib.IAndroidTarget; +import com.android.sdklib.resources.TouchScreen; import org.eclipse.swt.graphics.Image; @@ -29,82 +30,17 @@ public final class TouchScreenQualifier extends ResourceQualifier { public static final String NAME = "Touch Screen"; - private TouchScreenType mValue; - - /** - * Screen Orientation enum. - */ - public static enum TouchScreenType { - NOTOUCH("notouch", "No Touch"), //$NON-NLS-1$ - STYLUS("stylus", "Stylus"), //$NON-NLS-1$ - FINGER("finger", "Finger"); //$NON-NLS-1$ - - private String mValue; - private String mDisplayValue; - - private TouchScreenType(String value, String displayValue) { - mValue = value; - mDisplayValue = displayValue; - } - - /** - * Returns the enum for matching the provided qualifier value. - * @param value The qualifier value. - * @return the enum for the qualifier value or null if no matching was found. - */ - public static TouchScreenType getEnum(String value) { - for (TouchScreenType orient : values()) { - if (orient.mValue.equals(value)) { - return orient; - } - } - - return null; - } - - public String getValue() { - return mValue; - } - - public String getDisplayValue() { - return mDisplayValue; - } - - public static int getIndex(TouchScreenType touch) { - int i = 0; - for (TouchScreenType t : values()) { - if (t == touch) { - return i; - } - - i++; - } - - return -1; - } - - public static TouchScreenType getByIndex(int index) { - int i = 0; - for (TouchScreenType value : values()) { - if (i == index) { - return value; - } - i++; - } - - return null; - } - } + private TouchScreen mValue; public TouchScreenQualifier() { // pass } - public TouchScreenQualifier(TouchScreenType touchValue) { + public TouchScreenQualifier(TouchScreen touchValue) { mValue = touchValue; } - public TouchScreenType getValue() { + public TouchScreen getValue() { return mValue; } @@ -130,7 +66,7 @@ public final class TouchScreenQualifier extends ResourceQualifier { @Override public boolean checkAndSet(String value, FolderConfiguration config) { - TouchScreenType type = TouchScreenType.getEnum(value); + TouchScreen type = TouchScreen.getEnum(value); if (type != null) { TouchScreenQualifier qualifier = new TouchScreenQualifier(); qualifier.mValue = type; diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/SingleResourceFile.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/SingleResourceFile.java index 074180b..f17c397 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/SingleResourceFile.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/SingleResourceFile.java @@ -19,6 +19,7 @@ package com.android.ide.eclipse.adt.internal.resources.manager; import com.android.ide.eclipse.adt.internal.resources.ResourceType; import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier; import com.android.layoutlib.api.IResourceValue; +import com.android.layoutlib.api.IDensityBasedResourceValue.Density; import com.android.layoutlib.utils.DensityBasedResourceValue; import com.android.layoutlib.utils.ResourceValue; import com.android.sdklib.io.IAbstractFile; @@ -75,8 +76,12 @@ public class SingleResourceFile extends ResourceFile { mValue = new ResourceValue(mType.getName(), getResourceName(mType), file.getOsLocation(), isFramework()); } else { - mValue = new DensityBasedResourceValue(mType.getName(), getResourceName(mType), - file.getOsLocation(), qualifier.getValue().getDensity(), isFramework()); + mValue = new DensityBasedResourceValue( + mType.getName(), + getResourceName(mType), + file.getOsLocation(), + Density.getEnum(qualifier.getValue().getDpiValue()), + isFramework()); } } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDeviceHandler.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDeviceHandler.java index 7ad4e5d..8f54255 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDeviceHandler.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDeviceHandler.java @@ -28,14 +28,14 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatio import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier; -import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier.KeyboardState; -import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier.NavigationMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatioQualifier.ScreenRatio; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier.ScreenSize; -import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier.TextInputMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier.TouchScreenType; +import com.android.sdklib.resources.Density; +import com.android.sdklib.resources.Keyboard; +import com.android.sdklib.resources.KeyboardState; +import com.android.sdklib.resources.Navigation; +import com.android.sdklib.resources.ScreenOrientation; +import com.android.sdklib.resources.ScreenRatio; +import com.android.sdklib.resources.ScreenSize; +import com.android.sdklib.resources.TouchScreen; import org.xml.sax.Attributes; import org.xml.sax.SAXException; @@ -145,7 +145,7 @@ class LayoutDeviceHandler extends DefaultHandler { mCurrentConfig.setPixelDensityQualifier(pdq); } else if (LayoutDevicesXsd.NODE_TOUCH_TYPE.equals(localName)) { TouchScreenQualifier tsq = new TouchScreenQualifier( - TouchScreenType.getEnum(mStringAccumulator.toString())); + TouchScreen.getEnum(mStringAccumulator.toString())); mCurrentConfig.setTouchTypeQualifier(tsq); } else if (LayoutDevicesXsd.NODE_KEYBOARD_STATE.equals(localName)) { KeyboardStateQualifier ksq = new KeyboardStateQualifier( @@ -153,11 +153,11 @@ class LayoutDeviceHandler extends DefaultHandler { mCurrentConfig.setKeyboardStateQualifier(ksq); } else if (LayoutDevicesXsd.NODE_TEXT_INPUT_METHOD.equals(localName)) { TextInputMethodQualifier timq = new TextInputMethodQualifier( - TextInputMethod.getEnum(mStringAccumulator.toString())); + Keyboard.getEnum(mStringAccumulator.toString())); mCurrentConfig.setTextInputMethodQualifier(timq); } else if (LayoutDevicesXsd.NODE_NAV_METHOD.equals(localName)) { NavigationMethodQualifier nmq = new NavigationMethodQualifier( - NavigationMethod.getEnum(mStringAccumulator.toString())); + Navigation.getEnum(mStringAccumulator.toString())); mCurrentConfig.setNavigationMethodQualifier(nmq); } else if (LayoutDevicesXsd.NODE_SCREEN_DIMENSION.equals(localName)) { ScreenDimensionQualifier qual = ScreenDimensionQualifier.getQualifier(mSize1, mSize2); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/ui/ConfigurationSelector.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/ui/ConfigurationSelector.java index f52a069..89bc57f 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/ui/ConfigurationSelector.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/ui/ConfigurationSelector.java @@ -32,15 +32,15 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQ import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.VersionQualifier; -import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier.KeyboardState; -import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier.NavigationMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatioQualifier.ScreenRatio; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier.ScreenSize; -import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier.TextInputMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier.TouchScreenType; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; +import com.android.sdklib.resources.Density; +import com.android.sdklib.resources.Keyboard; +import com.android.sdklib.resources.KeyboardState; +import com.android.sdklib.resources.Navigation; +import com.android.sdklib.resources.ScreenOrientation; +import com.android.sdklib.resources.ScreenRatio; +import com.android.sdklib.resources.ScreenSize; +import com.android.sdklib.resources.TouchScreen; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ISelection; @@ -1152,8 +1152,8 @@ public class ConfigurationSelector extends Composite { super(parent, TouchScreenQualifier.NAME); mTouchScreen = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY); - TouchScreenType[] tstValues = TouchScreenType.values(); - for (TouchScreenType value : tstValues) { + TouchScreen[] tstValues = TouchScreen.values(); + for (TouchScreen value : tstValues) { mTouchScreen.add(value.getDisplayValue()); } @@ -1174,7 +1174,7 @@ public class ConfigurationSelector extends Composite { if (index != -1) { mSelectedConfiguration.setTouchTypeQualifier(new TouchScreenQualifier( - TouchScreenType.getByIndex(index))); + TouchScreen.getByIndex(index))); } else { // empty selection, means no qualifier. // Since the qualifier classes are immutable, and we don't want to @@ -1190,11 +1190,11 @@ public class ConfigurationSelector extends Composite { public void setQualifier(ResourceQualifier qualifier) { TouchScreenQualifier q = (TouchScreenQualifier)qualifier; - TouchScreenType value = q.getValue(); + TouchScreen value = q.getValue(); if (value == null) { mTouchScreen.clearSelection(); } else { - mTouchScreen.select(TouchScreenType.getIndex(value)); + mTouchScreen.select(TouchScreen.getIndex(value)); } } } @@ -1269,8 +1269,8 @@ public class ConfigurationSelector extends Composite { super(parent, TextInputMethodQualifier.NAME); mTextInput = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY); - TextInputMethod[] timValues = TextInputMethod.values(); - for (TextInputMethod value : timValues) { + Keyboard[] timValues = Keyboard.values(); + for (Keyboard value : timValues) { mTextInput.add(value.getDisplayValue()); } @@ -1291,7 +1291,7 @@ public class ConfigurationSelector extends Composite { if (index != -1) { mSelectedConfiguration.setTextInputMethodQualifier(new TextInputMethodQualifier( - TextInputMethod.getByIndex(index))); + Keyboard.getByIndex(index))); } else { // empty selection, means no qualifier. // Since the qualifier classes are immutable, and we don't want to @@ -1308,11 +1308,11 @@ public class ConfigurationSelector extends Composite { public void setQualifier(ResourceQualifier qualifier) { TextInputMethodQualifier q = (TextInputMethodQualifier)qualifier; - TextInputMethod value = q.getValue(); + Keyboard value = q.getValue(); if (value == null) { mTextInput.clearSelection(); } else { - mTextInput.select(TextInputMethod.getIndex(value)); + mTextInput.select(Keyboard.getIndex(value)); } } } @@ -1328,8 +1328,8 @@ public class ConfigurationSelector extends Composite { super(parent, NavigationMethodQualifier.NAME); mNavigation = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY); - NavigationMethod[] nmValues = NavigationMethod.values(); - for (NavigationMethod value : nmValues) { + Navigation[] nmValues = Navigation.values(); + for (Navigation value : nmValues) { mNavigation.add(value.getDisplayValue()); } @@ -1350,7 +1350,7 @@ public class ConfigurationSelector extends Composite { if (index != -1) { mSelectedConfiguration.setNavigationMethodQualifier(new NavigationMethodQualifier( - NavigationMethod.getByIndex(index))); + Navigation.getByIndex(index))); } else { // empty selection, means no qualifier. // Since the qualifier classes are immutable, and we don't want to @@ -1367,11 +1367,11 @@ public class ConfigurationSelector extends Composite { public void setQualifier(ResourceQualifier qualifier) { NavigationMethodQualifier q = (NavigationMethodQualifier)qualifier; - NavigationMethod value = q.getValue(); + Navigation value = q.getValue(); if (value == null) { mNavigation.clearSelection(); } else { - mNavigation.select(NavigationMethod.getIndex(value)); + mNavigation.select(Navigation.getIndex(value)); } } } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectWizard.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectWizard.java index 1bfff9f..901bafe 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectWizard.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectWizard.java @@ -20,12 +20,12 @@ import com.android.ide.eclipse.adt.AdtPlugin; import com.android.ide.eclipse.adt.AndroidConstants; import com.android.ide.eclipse.adt.internal.project.AndroidNature; import com.android.ide.eclipse.adt.internal.project.ProjectHelper; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; import com.android.ide.eclipse.adt.internal.sdk.Sdk; import com.android.ide.eclipse.adt.internal.wizards.newproject.NewProjectCreationPage.IMainInfo; import com.android.ide.eclipse.adt.internal.wizards.newproject.NewTestProjectCreationPage.TestInfo; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.SdkConstants; +import com.android.sdklib.resources.Density; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java index 0712cf9..900e031 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java @@ -26,14 +26,6 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatio import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier; -import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier.KeyboardState; -import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier.NavigationMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatioQualifier.ScreenRatio; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier.ScreenSize; -import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier.TextInputMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier.TouchScreenType; import com.android.ide.eclipse.adt.internal.resources.manager.ProjectResources; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData; @@ -47,6 +39,14 @@ import com.android.layoutlib.api.IXmlPullParser; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.SdkConstants; import com.android.sdklib.io.FolderWrapper; +import com.android.sdklib.resources.Density; +import com.android.sdklib.resources.Keyboard; +import com.android.sdklib.resources.KeyboardState; +import com.android.sdklib.resources.Navigation; +import com.android.sdklib.resources.ScreenOrientation; +import com.android.sdklib.resources.ScreenRatio; +import com.android.sdklib.resources.ScreenSize; +import com.android.sdklib.resources.TouchScreen; import org.kxml2.io.KXmlParser; import org.xmlpull.v1.XmlPullParser; @@ -242,10 +242,10 @@ public class ApiDemosRenderingTest extends SdkTestCase { config.addQualifier(new ScreenRatioQualifier(ScreenRatio.NOTLONG)); config.addQualifier(new ScreenOrientationQualifier(ScreenOrientation.PORTRAIT)); config.addQualifier(new PixelDensityQualifier(Density.MEDIUM)); - config.addQualifier(new TouchScreenQualifier(TouchScreenType.FINGER)); + config.addQualifier(new TouchScreenQualifier(TouchScreen.FINGER)); config.addQualifier(new KeyboardStateQualifier(KeyboardState.HIDDEN)); - config.addQualifier(new TextInputMethodQualifier(TextInputMethod.QWERTY)); - config.addQualifier(new NavigationMethodQualifier(NavigationMethod.TRACKBALL)); + config.addQualifier(new TextInputMethodQualifier(Keyboard.QWERTY)); + config.addQualifier(new NavigationMethodQualifier(Navigation.TRACKBALL)); config.addQualifier(new ScreenDimensionQualifier(480, 320)); return config; diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java index 7499f5d..72dbf81 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java @@ -19,11 +19,10 @@ package com.android.ide.eclipse.adt.internal.editors.layout; import com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.TextAttributeDescriptor; -import com.android.ide.eclipse.adt.internal.editors.layout.UiElementPullParser; import com.android.ide.eclipse.adt.internal.editors.mock.MockXmlNode; import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; import com.android.sdklib.SdkConstants; +import com.android.sdklib.resources.Density; import org.w3c.dom.Node; import org.xmlpull.v1.XmlPullParser; diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/KeyboardStateQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/KeyboardStateQualifierTest.java index 4953747..0ae0a08 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/KeyboardStateQualifierTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/KeyboardStateQualifierTest.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.editors.resources.configurations; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier; +import com.android.sdklib.resources.KeyboardState; import junit.framework.TestCase; @@ -43,16 +44,14 @@ public class KeyboardStateQualifierTest extends TestCase { public void testExposed() { assertEquals(true, ksq.checkAndSet("keysexposed", config)); //$NON-NLS-1$ assertTrue(config.getKeyboardStateQualifier() != null); - assertEquals(KeyboardStateQualifier.KeyboardState.EXPOSED, - config.getKeyboardStateQualifier().getValue()); + assertEquals(KeyboardState.EXPOSED, config.getKeyboardStateQualifier().getValue()); assertEquals("keysexposed", config.getKeyboardStateQualifier().toString()); //$NON-NLS-1$ } public void testHidden() { assertEquals(true, ksq.checkAndSet("keyshidden", config)); //$NON-NLS-1$ assertTrue(config.getKeyboardStateQualifier() != null); - assertEquals(KeyboardStateQualifier.KeyboardState.HIDDEN, - config.getKeyboardStateQualifier().getValue()); + assertEquals(KeyboardState.HIDDEN, config.getKeyboardStateQualifier().getValue()); assertEquals("keyshidden", config.getKeyboardStateQualifier().toString()); //$NON-NLS-1$ } diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/NavigationMethodQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/NavigationMethodQualifierTest.java index 8e5d9ec..384f29f 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/NavigationMethodQualifierTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/NavigationMethodQualifierTest.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.editors.resources.configurations; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier; +import com.android.sdklib.resources.Navigation; import junit.framework.TestCase; @@ -39,28 +40,25 @@ public class NavigationMethodQualifierTest extends TestCase { config = null; nmq = null; } - + public void testDPad() { assertEquals(true, nmq.checkAndSet("dpad", config)); //$NON-NLS-1$ assertTrue(config.getNavigationMethodQualifier() != null); - assertEquals(NavigationMethodQualifier.NavigationMethod.DPAD, - config.getNavigationMethodQualifier().getValue()); + assertEquals(Navigation.DPAD, config.getNavigationMethodQualifier().getValue()); assertEquals("dpad", config.getNavigationMethodQualifier().toString()); //$NON-NLS-1$ } public void testTrackball() { assertEquals(true, nmq.checkAndSet("trackball", config)); //$NON-NLS-1$ assertTrue(config.getNavigationMethodQualifier() != null); - assertEquals(NavigationMethodQualifier.NavigationMethod.TRACKBALL, - config.getNavigationMethodQualifier().getValue()); + assertEquals(Navigation.TRACKBALL, config.getNavigationMethodQualifier().getValue()); assertEquals("trackball", config.getNavigationMethodQualifier().toString()); //$NON-NLS-1$ } public void testWheel() { assertEquals(true, nmq.checkAndSet("wheel", config)); //$NON-NLS-1$ assertTrue(config.getNavigationMethodQualifier() != null); - assertEquals(NavigationMethodQualifier.NavigationMethod.WHEEL, - config.getNavigationMethodQualifier().getValue()); + assertEquals(Navigation.WHEEL, config.getNavigationMethodQualifier().getValue()); assertEquals("wheel", config.getNavigationMethodQualifier().toString()); //$NON-NLS-1$ } diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/PixelDensityQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/PixelDensityQualifierTest.java index 658d4d2..bb05adb 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/PixelDensityQualifierTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/PixelDensityQualifierTest.java @@ -18,7 +18,7 @@ package com.android.ide.eclipse.adt.internal.editors.resources.configurations; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier; -import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; +import com.android.sdklib.resources.Density; import junit.framework.TestCase; diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/ScreenOrientationQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/ScreenOrientationQualifierTest.java index 15d9686..452a1ff 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/ScreenOrientationQualifierTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/ScreenOrientationQualifierTest.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.editors.resources.configurations; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier; +import com.android.sdklib.resources.ScreenOrientation; import junit.framework.TestCase; @@ -43,15 +44,14 @@ public class ScreenOrientationQualifierTest extends TestCase { public void testPortrait() { assertEquals(true, soq.checkAndSet("port", config)); //$NON-NLS-1$ assertTrue(config.getScreenOrientationQualifier() != null); - assertEquals(ScreenOrientationQualifier.ScreenOrientation.PORTRAIT, - config.getScreenOrientationQualifier().getValue()); + assertEquals(ScreenOrientation.PORTRAIT, config.getScreenOrientationQualifier().getValue()); assertEquals("port", config.getScreenOrientationQualifier().toString()); //$NON-NLS-1$ } public void testLanscape() { assertEquals(true, soq.checkAndSet("land", config)); //$NON-NLS-1$ assertTrue(config.getScreenOrientationQualifier() != null); - assertEquals(ScreenOrientationQualifier.ScreenOrientation.LANDSCAPE, + assertEquals(ScreenOrientation.LANDSCAPE, config.getScreenOrientationQualifier().getValue()); assertEquals("land", config.getScreenOrientationQualifier().toString()); //$NON-NLS-1$ } @@ -59,7 +59,7 @@ public class ScreenOrientationQualifierTest extends TestCase { public void testSquare() { assertEquals(true, soq.checkAndSet("square", config)); //$NON-NLS-1$ assertTrue(config.getScreenOrientationQualifier() != null); - assertEquals(ScreenOrientationQualifier.ScreenOrientation.SQUARE, + assertEquals(ScreenOrientation.SQUARE, config.getScreenOrientationQualifier().getValue()); assertEquals("square", config.getScreenOrientationQualifier().toString()); //$NON-NLS-1$ } diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TextInputMethodQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TextInputMethodQualifierTest.java index c679295..04eb8da 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TextInputMethodQualifierTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TextInputMethodQualifierTest.java @@ -18,11 +18,12 @@ package com.android.ide.eclipse.adt.internal.editors.resources.configurations; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier; +import com.android.sdklib.resources.Keyboard; import junit.framework.TestCase; public class TextInputMethodQualifierTest extends TestCase { - + private TextInputMethodQualifier timq; private FolderConfiguration config; @@ -43,24 +44,21 @@ public class TextInputMethodQualifierTest extends TestCase { public void testQuerty() { assertEquals(true, timq.checkAndSet("qwerty", config)); //$NON-NLS-1$ assertTrue(config.getTextInputMethodQualifier() != null); - assertEquals(TextInputMethodQualifier.TextInputMethod.QWERTY, - config.getTextInputMethodQualifier().getValue()); + assertEquals(Keyboard.QWERTY, config.getTextInputMethodQualifier().getValue()); assertEquals("qwerty", config.getTextInputMethodQualifier().toString()); //$NON-NLS-1$ } public void test12Key() { assertEquals(true, timq.checkAndSet("12key", config)); //$NON-NLS-1$ assertTrue(config.getTextInputMethodQualifier() != null); - assertEquals(TextInputMethodQualifier.TextInputMethod.TWELVEKEYS, - config.getTextInputMethodQualifier().getValue()); + assertEquals(Keyboard.TWELVEKEYS, config.getTextInputMethodQualifier().getValue()); assertEquals("12key", config.getTextInputMethodQualifier().toString()); //$NON-NLS-1$ } public void testNoKey() { assertEquals(true, timq.checkAndSet("nokeys", config)); //$NON-NLS-1$ assertTrue(config.getTextInputMethodQualifier() != null); - assertEquals(TextInputMethodQualifier.TextInputMethod.NOKEY, - config.getTextInputMethodQualifier().getValue()); + assertEquals(Keyboard.NOKEY, config.getTextInputMethodQualifier().getValue()); assertEquals("nokeys", config.getTextInputMethodQualifier().toString()); //$NON-NLS-1$ } diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TouchScreenQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TouchScreenQualifierTest.java index b5d7933..209bb57 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TouchScreenQualifierTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/TouchScreenQualifierTest.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.editors.resources.configurations; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier; +import com.android.sdklib.resources.TouchScreen; import junit.framework.TestCase; @@ -43,24 +44,21 @@ public class TouchScreenQualifierTest extends TestCase { public void testNoTouch() { assertEquals(true, tsq.checkAndSet("notouch", config)); //$NON-NLS-1$ assertTrue(config.getTouchTypeQualifier() != null); - assertEquals(TouchScreenQualifier.TouchScreenType.NOTOUCH, - config.getTouchTypeQualifier().getValue()); + assertEquals(TouchScreen.NOTOUCH, config.getTouchTypeQualifier().getValue()); assertEquals("notouch", config.getTouchTypeQualifier().toString()); //$NON-NLS-1$ } public void testFinger() { assertEquals(true, tsq.checkAndSet("finger", config)); //$NON-NLS-1$ assertTrue(config.getTouchTypeQualifier() != null); - assertEquals(TouchScreenQualifier.TouchScreenType.FINGER, - config.getTouchTypeQualifier().getValue()); + assertEquals(TouchScreen.FINGER, config.getTouchTypeQualifier().getValue()); assertEquals("finger", config.getTouchTypeQualifier().toString()); //$NON-NLS-1$ } public void testStylus() { assertEquals(true, tsq.checkAndSet("stylus", config)); //$NON-NLS-1$ assertTrue(config.getTouchTypeQualifier() != null); - assertEquals(TouchScreenQualifier.TouchScreenType.STYLUS, - config.getTouchTypeQualifier().getValue()); + assertEquals(TouchScreen.STYLUS, config.getTouchTypeQualifier().getValue()); assertEquals("stylus", config.getTouchTypeQualifier().toString()); //$NON-NLS-1$ } @@ -69,5 +67,4 @@ public class TouchScreenQualifierTest extends TestCase { assertEquals(false, tsq.checkAndSet("STYLUS", config));//$NON-NLS-1$ assertEquals(false, tsq.checkAndSet("other", config));//$NON-NLS-1$ } - } diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/manager/ConfigMatchTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/manager/ConfigMatchTest.java index 4ce011e..31f9784 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/manager/ConfigMatchTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/manager/ConfigMatchTest.java @@ -18,11 +18,6 @@ package com.android.ide.eclipse.adt.internal.editors.resources.manager; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQualifier; -import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier.KeyboardState; -import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier.NavigationMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation; -import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier.TextInputMethod; -import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier.TouchScreenType; import com.android.ide.eclipse.adt.internal.resources.manager.ProjectResources; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFile; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFolder; @@ -35,6 +30,11 @@ import com.android.ide.eclipse.mock.FileMock; import com.android.ide.eclipse.mock.FolderMock; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.io.IAbstractFolder; +import com.android.sdklib.resources.Keyboard; +import com.android.sdklib.resources.KeyboardState; +import com.android.sdklib.resources.Navigation; +import com.android.sdklib.resources.ScreenOrientation; +import com.android.sdklib.resources.TouchScreen; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -164,10 +164,10 @@ public class ConfigMatchTest extends TestCase { "notlong", // screen ratio ScreenOrientation.LANDSCAPE.getValue(), // screen orientation "mdpi", // dpi - TouchScreenType.FINGER.getValue(), // touch mode + TouchScreen.FINGER.getValue(), // touch mode KeyboardState.EXPOSED.getValue(), // keyboard state - TextInputMethod.QWERTY.getValue(), // text input - NavigationMethod.DPAD.getValue(), // navigation + Keyboard.QWERTY.getValue(), // text input + Navigation.DPAD.getValue(), // navigation "480x320", // screen dimension "v3"); // version @@ -190,10 +190,10 @@ public class ConfigMatchTest extends TestCase { "notlong", // screen ratio ScreenOrientation.LANDSCAPE.getValue(), // screen orientation "mdpi", // dpi - TouchScreenType.FINGER.getValue(), // touch mode + TouchScreen.FINGER.getValue(), // touch mode KeyboardState.EXPOSED.getValue(), // keyboard state - TextInputMethod.QWERTY.getValue(), // text input - NavigationMethod.DPAD.getValue(), // navigation + Keyboard.QWERTY.getValue(), // text input + Navigation.DPAD.getValue(), // navigation "480x320", // screen dimension "v3"); // version diff --git a/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java index 57a776f..c004f2f 100644 --- a/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java +++ b/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java @@ -38,6 +38,21 @@ public interface IDensityBasedResourceValue extends IResourceValue { public int getValue() { return mValue; } + + /** + * Returns the enum matching the given density value + * @param value The density value. + * @return the enum for the density value or null if no match was found. + */ + public static Density getEnum(int value) { + for (Density d : values()) { + if (d.mValue == value) { + return d; + } + } + + return null; + } } /** diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java new file mode 100644 index 0000000..d4d5256 --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + + +/** + * Density enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names + * as well as other places needing to know the density values. + */ +public enum Density { + HIGH("hdpi", "High Density", 240), //$NON-NLS-1$ + MEDIUM("mdpi", "Medium Density", 160), //$NON-NLS-1$ + LOW("ldpi", "Low Density", 120), //$NON-NLS-1$ + NODPI("nodpi", "No Density", 0); //$NON-NLS-1$ + + public final static int DEFAULT_DENSITY = 160; + + private final String mValue; + private final String mDisplayValue; + private final int mDensity; + + private Density(String value, String displayValue, int density) { + mValue = value; + mDisplayValue = displayValue; + mDensity = density; + } + + /** + * Returns the enum matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no match was found. + */ + public static Density getEnum(String value) { + for (Density orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + /** + * Returns the enum matching the given density value + * @param value The density value. + * @return the enum for the density value or null if no match was found. + */ + public static Density getEnum(int value) { + for (Density d : values()) { + if (d.mDensity == value) { + return d; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public int getDpiValue() { + return mDensity; + } + + public String getLegacyValue() { + if (this != NODPI) { + return String.format("%1$ddpi", getDpiValue()); + } + + return ""; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(Density value) { + int i = 0; + for (Density input : values()) { + if (value == input) { + return i; + } + + i++; + } + + return -1; + } + + public static Density getByIndex(int index) { + int i = 0; + for (Density value : values()) { + if (i == index) { + return value; + } + i++; + } + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java new file mode 100644 index 0000000..1b910d4 --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Keyboard enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum Keyboard { + NOKEY("nokeys", "No Keys"), //$NON-NLS-1$ + QWERTY("qwerty", "Qwerty"), //$NON-NLS-1$ + TWELVEKEYS("12key", "12 Key"); //$NON-NLS-1$ + + private String mValue; + private String mDisplayValue; + + private Keyboard(String value, String displayValue) { + mValue = value; + mDisplayValue = displayValue; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static Keyboard getEnum(String value) { + for (Keyboard orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(Keyboard value) { + int i = 0; + for (Keyboard input : values()) { + if (value == input) { + return i; + } + + i++; + } + + return -1; + } + + public static Keyboard getByIndex(int index) { + int i = 0; + for (Keyboard value : values()) { + if (i == index) { + return value; + } + i++; + } + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java new file mode 100644 index 0000000..730a32b --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Keyboard state enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum KeyboardState { + EXPOSED("keysexposed", "Exposed"), //$NON-NLS-1$ + HIDDEN("keyshidden", "Hidden"), //$NON-NLS-1$ + SOFT("keyssoft", "Soft"); //$NON-NLS-1$ + + private String mValue; + private String mDisplayValue; + + private KeyboardState(String value, String displayValue) { + mValue = value; + mDisplayValue = displayValue; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static KeyboardState getEnum(String value) { + for (KeyboardState orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(KeyboardState value) { + int i = 0; + for (KeyboardState input : values()) { + if (value == input) { + return i; + } + + i++; + } + + return -1; + } + + public static KeyboardState getByIndex(int index) { + int i = 0; + for (KeyboardState value : values()) { + if (i == index) { + return value; + } + i++; + } + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java new file mode 100644 index 0000000..b69f855 --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Navigation enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum Navigation { + NONAV("nonav", "No Navigation"), //$NON-NLS-1$ + DPAD("dpad", "D-pad"), //$NON-NLS-1$ + TRACKBALL("trackball", "Trackball"), //$NON-NLS-1$ + WHEEL("wheel", "Wheel"); //$NON-NLS-1$ + + private String mValue; + private String mDisplay; + + private Navigation(String value, String display) { + mValue = value; + mDisplay = display; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static Navigation getEnum(String value) { + for (Navigation orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplay; + } + + public static int getIndex(Navigation value) { + int i = 0; + for (Navigation nav : values()) { + if (nav == value) { + return i; + } + + i++; + } + + return -1; + } + + public static Navigation getByIndex(int index) { + int i = 0; + for (Navigation value : values()) { + if (i == index) { + return value; + } + i++; + } + return null; + } +}
\ No newline at end of file diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java new file mode 100644 index 0000000..8e28b10 --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Screen Orientation enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum ScreenOrientation { + PORTRAIT("port", "Portrait"), //$NON-NLS-1$ + LANDSCAPE("land", "Landscape"), //$NON-NLS-1$ + SQUARE("square", "Square"); //$NON-NLS-1$ + + private String mValue; + private String mDisplayValue; + + private ScreenOrientation(String value, String displayValue) { + mValue = value; + mDisplayValue = displayValue; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static ScreenOrientation getEnum(String value) { + for (ScreenOrientation orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(ScreenOrientation orientation) { + int i = 0; + for (ScreenOrientation orient : values()) { + if (orient == orientation) { + return i; + } + + i++; + } + + return -1; + } + + public static ScreenOrientation getByIndex(int index) { + int i = 0; + for (ScreenOrientation orient : values()) { + if (i == index) { + return orient; + } + i++; + } + + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java new file mode 100644 index 0000000..4a3577f --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Screen Ratio enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum ScreenRatio { + NOTLONG("notlong", "Not Long"), //$NON-NLS-1$ + LONG("long", "Long"); //$NON-NLS-1$ + + private String mValue; + private String mDisplayValue; + + private ScreenRatio(String value, String displayValue) { + mValue = value; + mDisplayValue = displayValue; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static ScreenRatio getEnum(String value) { + for (ScreenRatio orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(ScreenRatio orientation) { + int i = 0; + for (ScreenRatio orient : values()) { + if (orient == orientation) { + return i; + } + + i++; + } + + return -1; + } + + public static ScreenRatio getByIndex(int index) { + int i = 0; + for (ScreenRatio orient : values()) { + if (i == index) { + return orient; + } + i++; + } + + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java new file mode 100644 index 0000000..1aae15a --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Screen size enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum ScreenSize { + SMALL("small", "Small"), //$NON-NLS-1$ + NORMAL("normal", "Normal"), //$NON-NLS-1$ + LARGE("large", "Large"); //$NON-NLS-1$ + + private String mValue; + private String mDisplayValue; + + private ScreenSize(String value, String displayValue) { + mValue = value; + mDisplayValue = displayValue; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static ScreenSize getEnum(String value) { + for (ScreenSize orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(ScreenSize orientation) { + int i = 0; + for (ScreenSize orient : values()) { + if (orient == orientation) { + return i; + } + + i++; + } + + return -1; + } + + public static ScreenSize getByIndex(int index) { + int i = 0; + for (ScreenSize orient : values()) { + if (i == index) { + return orient; + } + i++; + } + + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java new file mode 100644 index 0000000..3def049 --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010 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.android.sdklib.resources; + +/** + * Touch screen enum. + * <p/>This is used in the manifest in the uses-configuration node and in the resource folder names. + */ +public enum TouchScreen { + NOTOUCH("notouch", "No Touch"), //$NON-NLS-1$ + STYLUS("stylus", "Stylus"), //$NON-NLS-1$ + FINGER("finger", "Finger"); //$NON-NLS-1$ + + private String mValue; + private String mDisplayValue; + + private TouchScreen(String value, String displayValue) { + mValue = value; + mDisplayValue = displayValue; + } + + /** + * Returns the enum for matching the provided qualifier value. + * @param value The qualifier value. + * @return the enum for the qualifier value or null if no matching was found. + */ + public static TouchScreen getEnum(String value) { + for (TouchScreen orient : values()) { + if (orient.mValue.equals(value)) { + return orient; + } + } + + return null; + } + + public String getValue() { + return mValue; + } + + public String getDisplayValue() { + return mDisplayValue; + } + + public static int getIndex(TouchScreen touch) { + int i = 0; + for (TouchScreen t : values()) { + if (t == touch) { + return i; + } + + i++; + } + + return -1; + } + + public static TouchScreen getByIndex(int index) { + int i = 0; + for (TouchScreen value : values()) { + if (i == index) { + return value; + } + i++; + } + + return null; + } +} diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/AndroidManifestParser.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/AndroidManifestParser.java index 3b9cd0b..cd7bca4 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/AndroidManifestParser.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/AndroidManifestParser.java @@ -23,7 +23,6 @@ import com.android.sdklib.io.StreamException; import com.android.sdklib.xml.ManifestData.Activity; import com.android.sdklib.xml.ManifestData.Instrumentation; import com.android.sdklib.xml.ManifestData.SupportsScreens; -import com.sun.rowset.internal.XmlErrorHandler; import org.xml.sax.Attributes; import org.xml.sax.ErrorHandler; diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/ManifestData.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/ManifestData.java index 3a9d034..5101736 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/ManifestData.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/ManifestData.java @@ -23,7 +23,7 @@ import java.util.TreeSet; /** * Class containing the manifest info obtained during the parsing. */ -public class ManifestData { +public final class ManifestData { /** Application package */ String mPackage; /** Application version Code, null if the attribute is not present. */ @@ -49,7 +49,7 @@ public class ManifestData { /** * Instrumentation info obtained from manifest */ - public static class Instrumentation { + public final static class Instrumentation { private final String mName; private final String mTargetPackage; @@ -76,7 +76,7 @@ public class ManifestData { /** * Activity info obtained from the manifest. */ - public static class Activity { + public final static class Activity { private final String mName; private final boolean mIsExported; private boolean mHasAction = false; @@ -127,12 +127,37 @@ public class ManifestData { } } - public static class SupportsScreens { + public final static class SupportsScreens { Boolean mResizeable; - Boolean mSmallScreens; Boolean mAnyDensity; + Boolean mSmallScreens; Boolean mLargeScreens; Boolean mNormalScreens; + + public Boolean getResizeable() { + return mResizeable; + } + + public Boolean getAnyDensity() { + return mAnyDensity; + } + + public Boolean getSmallScreens() { + return mSmallScreens; + } + + public Boolean getNormalScreens() { + return mNormalScreens; + } + + public Boolean getLargeScreens() { + return mLargeScreens; + } + } + + public final static class UsesConfiguration { + Boolean mReqFiveWayNav; + Boolean mReqHardKeyboard; } /** @@ -210,6 +235,10 @@ public class ManifestData { return mLibraries.toArray(new String[mLibraries.size()]); } + public SupportsScreens getSupportsScreens() { + return mSupportsScreens; + } + void addProcessName(String processName) { if (mProcesses == null) { mProcesses = new TreeSet<String>(); diff --git a/sdkmanager/libs/sdklib/tests/com/android/sdklib/xml/AndroidManifestParserTest.java b/sdkmanager/libs/sdklib/tests/com/android/sdklib/xml/AndroidManifestParserTest.java index c2ee943..647aa74 100644 --- a/sdkmanager/libs/sdklib/tests/com/android/sdklib/xml/AndroidManifestParserTest.java +++ b/sdkmanager/libs/sdklib/tests/com/android/sdklib/xml/AndroidManifestParserTest.java @@ -92,6 +92,16 @@ public class AndroidManifestParserTest extends TestCase { assertTrue(activity.isHomeActivity()); } + public void testSupportsScreen() { + ManifestData.SupportsScreens supportsScreens = mManifestTestApp.getSupportsScreens(); + + assertEquals(Boolean.TRUE, supportsScreens.getAnyDensity()); + assertEquals(Boolean.TRUE, supportsScreens.getResizeable()); + assertEquals(Boolean.TRUE, supportsScreens.getSmallScreens()); + assertEquals(Boolean.TRUE, supportsScreens.getNormalScreens()); + assertEquals(Boolean.TRUE, supportsScreens.getLargeScreens()); + } + private void assertEquals(ManifestData.Activity lhs, ManifestData.Activity rhs) { assertTrue(lhs == rhs || (lhs != null && rhs != null)); if (lhs != null && rhs != null) { |