aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2010-07-09 14:17:10 -0700
committerAndroid Code Review <code-review@android.com>2010-07-09 14:17:10 -0700
commitde559da1ce494e61e63b85ce8d10007cdfa1e086 (patch)
tree3209654d5992349d23d81918da13e9a9ad894ad7
parentf24ba5fdf67b84f5f91ecd4af77ea62133c18efe (diff)
parentca341273a09f696470872eb1a5aa28a935e073c5 (diff)
downloadsdk-de559da1ce494e61e63b85ce8d10007cdfa1e086.zip
sdk-de559da1ce494e61e63b85ce8d10007cdfa1e086.tar.gz
sdk-de559da1ce494e61e63b85ce8d10007cdfa1e086.tar.bz2
Merge "ADT: dock/night combos in layout editor."
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.pngbin0 -> 214 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.pngbin0 -> 296 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.pngbin325 -> 175 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.pngbin0 -> 163 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/icons/size.pngbin0 -> 179 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/icons/version.pngbin0 -> 197 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigEditDialog.java16
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigurationComposite.java119
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/LayoutCreatorDialog.java8
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle1/GraphicalLayoutEditor.java10
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java10
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/extractstring/ExtractStringInputPage.java2
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/CountryCodeQualifier.java16
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/DockModeQualifier.java59
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/EnumBasedResourceQualifier.java92
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/FolderConfiguration.java55
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/KeyboardStateQualifier.java53
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/LanguageQualifier.java20
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationMethodQualifier.java53
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationStateQualifier.java53
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NetworkCodeQualifier.java16
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NightModeQualifier.java53
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/PixelDensityQualifier.java60
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/RegionQualifier.java20
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ResourceQualifier.java19
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenDimensionQualifier.java19
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenOrientationQualifier.java53
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenRatioQualifier.java63
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenSizeQualifier.java63
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TextInputMethodQualifier.java53
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/TouchScreenQualifier.java52
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/VersionQualifier.java26
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/ProjectResources.java6
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDevice.java18
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/ui/ConfigurationSelector.java117
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectWizard.java6
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newxmlfile/NewXmlFileCreationPage.java7
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/DockModeQualifierTest.java67
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/manager/ConfigMatchTest.java29
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/internal/export/ProjectConfig.java13
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java18
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/DockMode.java31
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java37
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java37
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java39
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NavigationState.java35
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NightMode.java35
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ResourceEnum.java60
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java37
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java36
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java37
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java37
52 files changed, 932 insertions, 833 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.png
new file mode 100644
index 0000000..71d1804
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.png
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.png
new file mode 100644
index 0000000..a04e4cf
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.png
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.png
index 423c3cd..53b5e62 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.png
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.png
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.png
new file mode 100644
index 0000000..8bf07f2
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.png
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/size.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/size.png
new file mode 100644
index 0000000..c8a82b0
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/size.png
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/version.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/version.png
new file mode 100644
index 0000000..a8dc35e
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/version.png
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigEditDialog.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigEditDialog.java
index e786ff2..f337cdf 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigEditDialog.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigEditDialog.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
+ *
+ * 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.ide.eclipse.adt.internal.editors.layout.configuration;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
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 4b1d5f6..c267422 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
@@ -19,8 +19,10 @@ package com.android.ide.eclipse.adt.internal.editors.layout.configuration;
import com.android.ide.eclipse.adt.AdtPlugin;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
import com.android.ide.eclipse.adt.internal.resources.ResourceType;
+import com.android.ide.eclipse.adt.internal.resources.configurations.DockModeQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration;
import com.android.ide.eclipse.adt.internal.resources.configurations.LanguageQualifier;
+import com.android.ide.eclipse.adt.internal.resources.configurations.NightModeQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.RegionQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQualifier;
@@ -37,11 +39,12 @@ import com.android.ide.eclipse.adt.internal.sdk.LayoutDeviceManager;
import com.android.ide.eclipse.adt.internal.sdk.LoadStatus;
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData.LayoutBridge;
-import com.android.ide.eclipse.adt.internal.ui.ConfigurationSelector.LanguageRegionVerifier;
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.DockMode;
+import com.android.sdklib.resources.NightMode;
import com.android.sdklib.resources.ScreenOrientation;
import org.eclipse.core.resources.IFile;
@@ -100,7 +103,6 @@ public class ConfigurationComposite extends Composite {
private final static String CONFIG_STATE = "state"; //$NON-NLS-1$
private final static String THEME_SEPARATOR = "----------"; //$NON-NLS-1$
- private final static String FAKE_LOCALE_VALUE = "__"; //$NON-NLS-1$
private final static int LOCALE_LANG = 0;
private final static int LOCALE_REGION = 1;
@@ -111,6 +113,8 @@ public class ConfigurationComposite extends Composite {
private Combo mDeviceCombo;
private Combo mDeviceConfigCombo;
private Combo mLocaleCombo;
+ private Combo mDockCombo;
+ private Combo mNightCombo;
private Combo mThemeCombo;
private Button mCreateButton;
@@ -180,6 +184,10 @@ public class ConfigurationComposite extends Composite {
String configName;
ResourceQualifier[] locale;
String theme;
+ /** dock mode. Guaranteed to be non null */
+ DockMode dock = DockMode.NONE;
+ /** night mode. Guaranteed to be non null */
+ NightMode night = NightMode.NOTNIGHT;
String getData() {
StringBuilder sb = new StringBuilder();
@@ -199,6 +207,10 @@ public class ConfigurationComposite extends Composite {
sb.append(SEP);
sb.append(theme);
sb.append(SEP);
+ sb.append(dock.getResourceValue());
+ sb.append(SEP);
+ sb.append(night.getResourceValue());
+ sb.append(SEP);
}
return sb.toString();
@@ -206,7 +218,7 @@ public class ConfigurationComposite extends Composite {
boolean setData(String data) {
String[] values = data.split(SEP);
- if (values.length == 4) {
+ if (values.length == 6) {
for (LayoutDevice d : mDeviceList) {
if (d.getName().equals(values[0])) {
device = d;
@@ -226,6 +238,14 @@ public class ConfigurationComposite extends Composite {
}
theme = values[3];
+ dock = DockMode.getEnum(values[4]);
+ if (dock == null) {
+ dock = DockMode.NONE;
+ }
+ night = NightMode.getEnum(values[5]);
+ if (night == null) {
+ night = NightMode.NOTNIGHT;
+ }
return true;
}
@@ -255,6 +275,10 @@ public class ConfigurationComposite extends Composite {
sb.append(SEP);
sb.append(theme);
sb.append(SEP);
+ sb.append(dock.getResourceValue());
+ sb.append(SEP);
+ sb.append(night.getResourceValue());
+ sb.append(SEP);
return sb.toString();
}
@@ -340,7 +364,7 @@ public class ConfigurationComposite extends Composite {
GridLayout gl;
GridData gd;
- int cols = 10; // device*2+config*2+locale*2+separator*2+theme+createBtn
+ int cols = 9; // device+config+locale+dock+day/night+separator*2+theme+createBtn
// ---- First line: custom buttons, clipping button, editing config display.
Composite labelParent = new Composite(this, SWT.NONE);
@@ -376,7 +400,6 @@ public class ConfigurationComposite extends Composite {
gl.marginHeight = 0;
gl.horizontalSpacing = 0;
- new Label(this, SWT.NONE).setText("Devices");
mDeviceCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
mDeviceCombo.setLayoutData(new GridData(
GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
@@ -387,7 +410,6 @@ public class ConfigurationComposite extends Composite {
}
});
- new Label(this, SWT.NONE).setText("Config");
mDeviceConfigCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
mDeviceConfigCombo.setLayoutData(new GridData(
GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
@@ -398,11 +420,9 @@ public class ConfigurationComposite extends Composite {
}
});
- new Label(this, SWT.NONE).setText("Locale");
mLocaleCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
mLocaleCombo.setLayoutData(new GridData(
GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
- mLocaleCombo.addVerifyListener(new LanguageRegionVerifier());
mLocaleCombo.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
onLocaleChange();
@@ -412,6 +432,36 @@ public class ConfigurationComposite extends Composite {
}
});
+ mDockCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ mDockCombo.setLayoutData(new GridData(
+ GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
+ for (DockMode mode : DockMode.values()) {
+ mDockCombo.add(mode.getLongDisplayValue());
+ }
+ mDockCombo.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ onDockChange();
+ }
+ public void widgetSelected(SelectionEvent e) {
+ onDockChange();
+ }
+ });
+
+ mNightCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ mNightCombo.setLayoutData(new GridData(
+ GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
+ for (NightMode mode : NightMode.values()) {
+ mNightCombo.add(mode.getLongDisplayValue());
+ }
+ mNightCombo.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ onDayChange();
+ }
+ public void widgetSelected(SelectionEvent e) {
+ onDayChange();
+ }
+ });
+
// first separator
Label separator = new Label(this, SWT.SEPARATOR | SWT.VERTICAL);
separator.setLayoutData(gd = new GridData(
@@ -640,8 +690,14 @@ public class ConfigurationComposite extends Composite {
fillConfigCombo(mState.configName);
adaptConfigSelection(false /*needBestMatch*/);
+
+ mDockCombo.select(DockMode.getIndex(mState.dock));
+ mNightCombo.select(NightMode.getIndex(mState.night));
} else {
findAndSetCompatibleConfig(false /*favorCurrentConfig*/);
+
+ mDockCombo.select(0);
+ mNightCombo.select(0);
}
// update the string showing the config value
@@ -835,7 +891,7 @@ public class ConfigurationComposite extends Composite {
if (locale[LOCALE_LANG].equals(language)) {
// region comparison is more complex, as the region could be null.
if (region == null) {
- if (FAKE_LOCALE_VALUE.equals(
+ if (RegionQualifier.FAKE_REGION_VALUE.equals(
((RegionQualifier)locale[LOCALE_REGION]).getValue())) {
// match!
mLocaleCombo.select(i);
@@ -876,6 +932,16 @@ public class ConfigurationComposite extends Composite {
if (index != -1) {
mState.theme = mThemeCombo.getItem(index);
}
+
+ index = mDockCombo.getSelectionIndex();
+ if (index != -1) {
+ mState.dock = DockMode.getByIndex(index);
+ }
+
+ index = mNightCombo.getSelectionIndex();
+ if (index != -1) {
+ mState.night = NightMode.getByIndex(index);
+ }
}
}
@@ -939,7 +1005,7 @@ public class ConfigurationComposite extends Composite {
// create a region qualifier that will never be matched by qualified resources.
mLocaleList.add(new ResourceQualifier[] {
langQual,
- new RegionQualifier(FAKE_LOCALE_VALUE)
+ new RegionQualifier(RegionQualifier.FAKE_REGION_VALUE)
});
}
}
@@ -949,13 +1015,13 @@ public class ConfigurationComposite extends Composite {
if (hasLocale) {
mLocaleCombo.add("Other");
} else {
- mLocaleCombo.add("Any");
+ mLocaleCombo.add("Any locale");
}
// create language/region qualifier that will never be matched by qualified resources.
mLocaleList.add(new ResourceQualifier[] {
- new LanguageQualifier(FAKE_LOCALE_VALUE),
- new RegionQualifier(FAKE_LOCALE_VALUE)
+ new LanguageQualifier(LanguageQualifier.FAKE_LANG_VALUE),
+ new RegionQualifier(RegionQualifier.FAKE_REGION_VALUE)
});
if (mState.locale != null) {
@@ -1486,7 +1552,7 @@ public class ConfigurationComposite extends Composite {
* Call back for language combo selection
*/
private void onLocaleChange() {
- // because mLanguage triggers onLanguageChange at each modification, the filling
+ // because mLocaleList triggers onLanguageChange at each modification, the filling
// of the combo with data will trigger notifications, and we don't want that.
if (mDisableUpdates > 0) {
return;
@@ -1497,6 +1563,18 @@ public class ConfigurationComposite extends Composite {
}
}
+ private void onDockChange() {
+ if (computeCurrentConfig(false /*force*/) && mListener != null) {
+ mListener.onConfigurationChange();
+ }
+ }
+
+ private void onDayChange() {
+ if (computeCurrentConfig(false /*force*/) && mListener != null) {
+ mListener.onConfigurationChange();
+ }
+ }
+
/**
* Saves the current state and the current configuration
* @param force forces saving the states even if updates are disabled
@@ -1526,6 +1604,19 @@ public class ConfigurationComposite extends Composite {
(RegionQualifier)localeQualifiers[LOCALE_REGION]);
}
+ int index = mDockCombo.getSelectionIndex();
+ if (index == -1) {
+ index = 0; // no selection = 0
+ }
+ mCurrentConfig.setDockModeQualifier(new DockModeQualifier(DockMode.getByIndex(index)));
+
+ index = mNightCombo.getSelectionIndex();
+ if (index == -1) {
+ index = 0; // no selection = 0
+ }
+ mCurrentConfig.setNightModeQualifier(
+ new NightModeQualifier(NightMode.getByIndex(index)));
+
// update the create button.
checkCreateEnable();
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/LayoutCreatorDialog.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/LayoutCreatorDialog.java
index fdbb366..de31ca4 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/LayoutCreatorDialog.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/LayoutCreatorDialog.java
@@ -22,7 +22,6 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQua
import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFolderType;
import com.android.ide.eclipse.adt.internal.ui.ConfigurationSelector;
import com.android.ide.eclipse.adt.internal.ui.ConfigurationSelector.ConfigurationState;
-import com.android.sdklib.IAndroidTarget;
import com.android.sdkuilib.ui.GridDialog;
import org.eclipse.jface.dialogs.Dialog;
@@ -46,19 +45,16 @@ public final class LayoutCreatorDialog extends GridDialog {
private final FolderConfiguration mConfig = new FolderConfiguration();
private final String mFileName;
- private final IAndroidTarget mTarget;
/**
* Creates a dialog, and init the UI from a {@link FolderConfiguration}.
* @param parentShell the parent {@link Shell}.
* @param config The starting configuration.
*/
- public LayoutCreatorDialog(Shell parentShell, String fileName, IAndroidTarget target,
- FolderConfiguration config) {
+ public LayoutCreatorDialog(Shell parentShell, String fileName, FolderConfiguration config) {
super(parentShell, 1, false);
mFileName = fileName;
- mTarget = target;
// FIXME: add some data to know what configurations already exist.
mConfig.set(config);
@@ -134,7 +130,7 @@ public final class LayoutCreatorDialog extends GridDialog {
*/
private void resetStatus() {
String displayString = Dialog.shortenText(String.format("New File: res/%1$s/%2$s",
- mConfig.getFolderName(ResourceFolderType.LAYOUT, mTarget), mFileName),
+ mConfig.getFolderName(ResourceFolderType.LAYOUT), mFileName),
mStatusLabel);
mStatusLabel.setText(displayString);
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle1/GraphicalLayoutEditor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle1/GraphicalLayoutEditor.java
index a0fc40d..45a56d7 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle1/GraphicalLayoutEditor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle1/GraphicalLayoutEditor.java
@@ -856,8 +856,7 @@ public class GraphicalLayoutEditor extends GraphicalEditorWithPalette
String message = String.format(
"No resources match the configuration\n \n\t%1$s\n \nChange the configuration or create:\n \n\tres/%2$s/%3$s\n \nYou can also click the 'Create' button above.",
currentConfig.toDisplayString(),
- currentConfig.getFolderName(ResourceFolderType.LAYOUT,
- Sdk.getCurrent().getTarget(mEditedFile.getProject())),
+ currentConfig.getFolderName(ResourceFolderType.LAYOUT),
mEditedFile.getName());
showErrorInEditor(message);
}
@@ -878,9 +877,7 @@ public class GraphicalLayoutEditor extends GraphicalEditorWithPalette
public void onCreate() {
LayoutCreatorDialog dialog = new LayoutCreatorDialog(mParent.getShell(),
- mEditedFile.getName(),
- Sdk.getCurrent().getTarget(mEditedFile.getProject()),
- mConfigComposite.getCurrentConfig());
+ mEditedFile.getName(), mConfigComposite.getCurrentConfig());
if (dialog.open() == Dialog.OK) {
final FolderConfiguration config = new FolderConfiguration();
dialog.getConfiguration(config);
@@ -1285,8 +1282,7 @@ public class GraphicalLayoutEditor extends GraphicalEditorWithPalette
@Override
protected IStatus run(IProgressMonitor monitor) {
// get the folder name
- String folderName = config.getFolderName(ResourceFolderType.LAYOUT,
- Sdk.getCurrent().getTarget(mEditedFile.getProject()));
+ String folderName = config.getFolderName(ResourceFolderType.LAYOUT);
try {
// look to see if it exists.
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java
index d2d82f6..fbfea59 100755
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java
@@ -487,8 +487,7 @@ public class GraphicalEditorPart extends EditorPart
displayError(
"No resources match the configuration\n \n\t%1$s\n \nChange the configuration or create:\n \n\tres/%2$s/%3$s\n \nYou can also click the 'Create' button above.",
currentConfig.toDisplayString(),
- currentConfig.getFolderName(ResourceFolderType.LAYOUT,
- Sdk.getCurrent().getTarget(mEditedFile.getProject())),
+ currentConfig.getFolderName(ResourceFolderType.LAYOUT),
mEditedFile.getName());
}
}
@@ -507,9 +506,7 @@ public class GraphicalEditorPart extends EditorPart
public void onCreate() {
LayoutCreatorDialog dialog = new LayoutCreatorDialog(mConfigComposite.getShell(),
- mEditedFile.getName(),
- Sdk.getCurrent().getTarget(mEditedFile.getProject()),
- mConfigComposite.getCurrentConfig());
+ mEditedFile.getName(), mConfigComposite.getCurrentConfig());
if (dialog.open() == Dialog.OK) {
final FolderConfiguration config = new FolderConfiguration();
dialog.getConfiguration(config);
@@ -589,8 +586,7 @@ public class GraphicalEditorPart extends EditorPart
@Override
protected IStatus run(IProgressMonitor monitor) {
// get the folder name
- String folderName = config.getFolderName(ResourceFolderType.LAYOUT,
- Sdk.getCurrent().getTarget(mEditedFile.getProject()));
+ String folderName = config.getFolderName(ResourceFolderType.LAYOUT);
try {
// look to see if it exists.
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/extractstring/ExtractStringInputPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/extractstring/ExtractStringInputPage.java
index a54f8b6..954e58c 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/extractstring/ExtractStringInputPage.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/extractstring/ExtractStringInputPage.java
@@ -420,7 +420,7 @@ class ExtractStringInputPage extends UserInputWizardPage implements IWizardPage
// recreate the res path from the current configuration
mConfigSelector.getConfiguration(mTempConfig);
StringBuffer sb = new StringBuffer(RES_FOLDER_ABS);
- sb.append(mTempConfig.getFolderName(ResourceFolderType.VALUES, mProject));
+ sb.append(mTempConfig.getFolderName(ResourceFolderType.VALUES));
sb.append('/');
String newPath = sb.toString();
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/CountryCodeQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/CountryCodeQualifier.java
index 97028e9..fcad2dc 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/CountryCodeQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/CountryCodeQualifier.java
@@ -17,7 +17,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
-import com.android.sdklib.IAndroidTarget;
import org.eclipse.swt.graphics.Image;
@@ -109,6 +108,11 @@ public final class CountryCodeQualifier extends ResourceQualifier {
}
@Override
+ public boolean hasFakeValue() {
+ return false;
+ }
+
+ @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
CountryCodeQualifier qualifier = getQualifier(value);
if (qualifier != null) {
@@ -137,16 +141,22 @@ public final class CountryCodeQualifier extends ResourceQualifier {
* Returns the string used to represent this qualifier in the folder name.
*/
@Override
- public String getFolderSegment(IAndroidTarget target) {
+ public String getFolderSegment() {
return getFolderSegment(mCode);
}
@Override
- public String getStringValue() {
+ public String getShortDisplayValue() {
if (mCode != DEFAULT_CODE) {
return String.format("MCC %1$d", mCode);
}
return ""; //$NON-NLS-1$
}
+
+ @Override
+ public String getLongDisplayValue() {
+ return getShortDisplayValue();
+ }
+
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/DockModeQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/DockModeQualifier.java
index 27b5ea2..8b431b1 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/DockModeQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/DockModeQualifier.java
@@ -17,15 +17,15 @@
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.DockMode;
+import com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Navigation Method.
*/
-public final class DockModeQualifier extends ResourceQualifier {
+public final class DockModeQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Dock Mode";
@@ -44,6 +44,11 @@ public final class DockModeQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -60,11 +65,6 @@ public final class DockModeQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
DockMode mode = DockMode.getEnum(value);
if (mode != null) {
@@ -77,41 +77,32 @@ public final class DockModeQualifier extends ResourceQualifier {
}
@Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof DockModeQualifier) {
- return mValue == ((DockModeQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
+ public boolean isMatchFor(ResourceQualifier qualifier) {
+ // only NONE is a match other DockModes
+ if (mValue == DockMode.NONE) {
+ return true;
}
- return 0;
+ // others must be an exact match
+ return ((DockModeQualifier)qualifier).mValue == mValue;
}
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
@Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
+ public boolean isBetterMatchThan(ResourceQualifier compareTo, ResourceQualifier reference) {
+ if (compareTo == null) {
+ return true;
}
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
+ DockModeQualifier compareQualifier = (DockModeQualifier)compareTo;
+ DockModeQualifier referenceQualifier = (DockModeQualifier)reference;
+ // if they are a perfect match, the receiver cannot be a better match.
+ if (compareQualifier.getValue() == referenceQualifier.getValue()) {
+ return false;
+ } else if (mValue == DockMode.NONE) {
+ // else "none" can be a match in case there's no exact match
+ return true;
}
- return ""; //$NON-NLS-1$
+ return false;
}
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/EnumBasedResourceQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/EnumBasedResourceQualifier.java
new file mode 100644
index 0000000..a112d1e
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/EnumBasedResourceQualifier.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
+ *
+ * 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.ide.eclipse.adt.internal.resources.configurations;
+
+import com.android.sdklib.resources.ResourceEnum;
+
+/**
+ * Base class for {@link ResourceQualifier} whose value is an {@link ResourceEnum}.
+ *
+ */
+abstract class EnumBasedResourceQualifier extends ResourceQualifier {
+
+ abstract ResourceEnum getEnumValue();
+
+ @Override
+ public boolean isValid() {
+ return getEnumValue() != null;
+ }
+
+ @Override
+ public boolean hasFakeValue() {
+ return getEnumValue().isFakeValue();
+ }
+
+ @Override
+ public boolean equals(Object qualifier) {
+ if (qualifier instanceof EnumBasedResourceQualifier) {
+ return getEnumValue() == ((EnumBasedResourceQualifier)qualifier).getEnumValue();
+ }
+
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ ResourceEnum value = getEnumValue();
+ if (value != null) {
+ return value.hashCode();
+ }
+
+ return 0;
+ }
+
+ /**
+ * Returns the string used to represent this qualifier in the folder name.
+ */
+ @Override
+ public final String getFolderSegment() {
+ ResourceEnum value = getEnumValue();
+ if (value != null) {
+ return value.getResourceValue();
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+
+
+ @Override
+ public String getShortDisplayValue() {
+ ResourceEnum value = getEnumValue();
+ if (value != null) {
+ return value.getShortDisplayValue();
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public String getLongDisplayValue() {
+ ResourceEnum value = getEnumValue();
+ if (value != null) {
+ return value.getLongDisplayValue();
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+
+}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/FolderConfiguration.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/FolderConfiguration.java
index f3e22cb..6eed4d6 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/FolderConfiguration.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/FolderConfiguration.java
@@ -17,10 +17,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFolderType;
-import com.android.ide.eclipse.adt.internal.sdk.Sdk;
-import com.android.sdklib.IAndroidTarget;
-
-import org.eclipse.core.resources.IProject;
/**
@@ -60,12 +56,30 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
/**
* Sets the config from the qualifiers of a given <var>config</var>.
- * @param config
+ * <p/>This is equivalent to <code>set(config, false)</code>
+ * @param config the configuration to set
+ *
+ * @see #set(FolderConfiguration, boolean)
*/
public void set(FolderConfiguration config) {
+ set(config, false /*nonFakeValuesOnly*/);
+ }
+
+ /**
+ * Sets the config from the qualifiers of a given <var>config</var>.
+ * @param config the configuration to set
+ * @param nonFakeValuesOnly if set to true this ignore qualifiers for which the
+ * current value is a fake value.
+ *
+ * @see ResourceQualifier#hasFakeValue()
+ */
+ public void set(FolderConfiguration config, boolean nonFakeValuesOnly) {
if (config != null) {
for (int i = 0 ; i < INDEX_COUNT ; i++) {
- mQualifiers[i] = config.mQualifiers[i];
+ ResourceQualifier q = config.mQualifiers[i];
+ if (nonFakeValuesOnly == false || q == null || q.hasFakeValue() == false) {
+ mQualifiers[i] = q;
+ }
}
}
}
@@ -361,12 +375,12 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
/**
* Returns the name of a folder with the configuration.
*/
- public String getFolderName(ResourceFolderType folder, IAndroidTarget target) {
+ public String getFolderName(ResourceFolderType folder) {
StringBuilder result = new StringBuilder(folder.getName());
for (ResourceQualifier qualifier : mQualifiers) {
if (qualifier != null) {
- String segment = qualifier.getFolderSegment(target);
+ String segment = qualifier.getFolderSegment();
if (segment != null && segment.length() > 0) {
result.append(QUALIFIER_SEP);
result.append(segment);
@@ -378,21 +392,6 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
}
/**
- * Returns the name of a folder with the configuration.
- */
- public String getFolderName(ResourceFolderType folder, IProject project) {
- IAndroidTarget target = null;
- if (project != null) {
- Sdk currentSdk = Sdk.getCurrent();
- if (currentSdk != null) {
- target = currentSdk.getTarget(project);
- }
- }
-
- return getFolderName(folder, target);
- }
-
- /**
* Returns {@link #toDisplayString()}.
*/
@Override
@@ -421,22 +420,22 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
} else {
result.append(", "); //$NON-NLS-1$
}
- result.append(qualifier.getStringValue());
+ result.append(qualifier.getLongDisplayValue());
}
}
// process the language/region qualifier in a custom way, if there are both non null.
if (mQualifiers[INDEX_LANGUAGE] != null && mQualifiers[INDEX_REGION] != null) {
- String language = mQualifiers[INDEX_LANGUAGE].getStringValue();
- String region = mQualifiers[INDEX_REGION].getStringValue();
+ String language = mQualifiers[INDEX_LANGUAGE].getLongDisplayValue();
+ String region = mQualifiers[INDEX_REGION].getLongDisplayValue();
if (result == null) {
result = new StringBuilder();
} else {
result.append(", "); //$NON-NLS-1$
}
- result.append(String.format("%s_%s", language, region)); //$NON-NLS-1$
+ result.append(String.format("Locale %s_%s", language, region)); //$NON-NLS-1$
index += 2;
}
@@ -450,7 +449,7 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
} else {
result.append(", "); //$NON-NLS-1$
}
- result.append(qualifier.getStringValue());
+ result.append(qualifier.getLongDisplayValue());
}
}
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 1375d2a..6c6e961 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
@@ -17,15 +17,15 @@
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 com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for keyboard state.
*/
-public final class KeyboardStateQualifier extends ResourceQualifier {
+public final class KeyboardStateQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Keyboard State";
@@ -44,6 +44,11 @@ public final class KeyboardStateQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -59,11 +64,6 @@ public final class KeyboardStateQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
KeyboardState orientation = KeyboardState.getEnum(value);
if (orientation != null) {
@@ -111,43 +111,4 @@ public final class KeyboardStateQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof KeyboardStateQualifier) {
- return mValue == ((KeyboardStateQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/LanguageQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/LanguageQualifier.java
index 50f5c52..2686eac 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/LanguageQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/LanguageQualifier.java
@@ -17,7 +17,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
-import com.android.sdklib.IAndroidTarget;
import org.eclipse.swt.graphics.Image;
@@ -29,6 +28,7 @@ import java.util.regex.Pattern;
public final class LanguageQualifier extends ResourceQualifier {
private final static Pattern sLanguagePattern = Pattern.compile("^[a-z]{2}$"); //$NON-NLS-1$
+ public static final String FAKE_LANG_VALUE = "__"; //$NON-NLS-1$
public static final String NAME = "Language";
private String mValue;
@@ -100,6 +100,11 @@ public final class LanguageQualifier extends ResourceQualifier {
}
@Override
+ public boolean hasFakeValue() {
+ return FAKE_LANG_VALUE.equals(mValue);
+ }
+
+ @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
LanguageQualifier qualifier = getQualifier(value);
if (qualifier != null) {
@@ -135,7 +140,7 @@ public final class LanguageQualifier extends ResourceQualifier {
* Returns the string used to represent this qualifier in the folder name.
*/
@Override
- public String getFolderSegment(IAndroidTarget target) {
+ public String getFolderSegment() {
if (mValue != null) {
return getFolderSegment(mValue);
}
@@ -144,11 +149,20 @@ public final class LanguageQualifier extends ResourceQualifier {
}
@Override
- public String getStringValue() {
+ public String getShortDisplayValue() {
if (mValue != null) {
return mValue;
}
return ""; //$NON-NLS-1$
}
+
+ @Override
+ public String getLongDisplayValue() {
+ if (mValue != null) {
+ return String.format("Language %s", mValue);
+ }
+
+ return ""; //$NON-NLS-1$
+ }
}
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 9d27e5a..c4d84ee 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
@@ -17,15 +17,15 @@
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 com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Navigation Method.
*/
-public final class NavigationMethodQualifier extends ResourceQualifier {
+public final class NavigationMethodQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Navigation Method";
@@ -44,6 +44,11 @@ public final class NavigationMethodQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -60,11 +65,6 @@ public final class NavigationMethodQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
Navigation method = Navigation.getEnum(value);
if (method != null) {
@@ -75,43 +75,4 @@ public final class NavigationMethodQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof NavigationMethodQualifier) {
- return mValue == ((NavigationMethodQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationStateQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationStateQualifier.java
index 264930c..cf63160 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationStateQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NavigationStateQualifier.java
@@ -17,15 +17,15 @@
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.NavigationState;
+import com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for navigation state.
*/
-public final class NavigationStateQualifier extends ResourceQualifier {
+public final class NavigationStateQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Navigation State";
@@ -44,6 +44,11 @@ public final class NavigationStateQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -59,11 +64,6 @@ public final class NavigationStateQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
NavigationState state = NavigationState.getEnum(value);
if (state != null) {
@@ -75,43 +75,4 @@ public final class NavigationStateQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof NavigationStateQualifier) {
- return mValue == ((NavigationStateQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NetworkCodeQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NetworkCodeQualifier.java
index 655fe4e..4ef0c75 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NetworkCodeQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NetworkCodeQualifier.java
@@ -17,7 +17,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
-import com.android.sdklib.IAndroidTarget;
import org.eclipse.swt.graphics.Image;
@@ -109,6 +108,11 @@ public final class NetworkCodeQualifier extends ResourceQualifier {
}
@Override
+ public boolean hasFakeValue() {
+ return false;
+ }
+
+ @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
Matcher m = sNetworkCodePattern.matcher(value);
if (m.matches()) {
@@ -148,16 +152,22 @@ public final class NetworkCodeQualifier extends ResourceQualifier {
* Returns the string used to represent this qualifier in the folder name.
*/
@Override
- public String getFolderSegment(IAndroidTarget target) {
+ public String getFolderSegment() {
return getFolderSegment(mCode);
}
@Override
- public String getStringValue() {
+ public String getShortDisplayValue() {
if (mCode != DEFAULT_CODE) {
return String.format("MNC %1$d", mCode);
}
return ""; //$NON-NLS-1$
}
+
+ @Override
+ public String getLongDisplayValue() {
+ return getShortDisplayValue();
+ }
+
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NightModeQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NightModeQualifier.java
index 8f23373..03093cf 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NightModeQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/NightModeQualifier.java
@@ -17,15 +17,15 @@
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.NightMode;
+import com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Navigation Method.
*/
-public final class NightModeQualifier extends ResourceQualifier {
+public final class NightModeQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Night Mode";
@@ -44,6 +44,11 @@ public final class NightModeQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -59,11 +64,6 @@ public final class NightModeQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
NightMode mode = NightMode.getEnum(value);
if (mode != null) {
@@ -74,43 +74,4 @@ public final class NightModeQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof NightModeQualifier) {
- return mValue == ((NightModeQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
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 5b3ba91..e4cc1bc 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,8 @@
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.Density;
+import com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
@@ -29,7 +28,7 @@ import java.util.regex.Pattern;
/**
* Resource Qualifier for Screen Pixel Density.
*/
-public final class PixelDensityQualifier extends ResourceQualifier {
+public final class PixelDensityQualifier extends EnumBasedResourceQualifier {
private final static Pattern sDensityLegacyPattern = Pattern.compile("^(\\d+)dpi$");//$NON-NLS-1$
public static final String NAME = "Pixel Density";
@@ -49,6 +48,11 @@ public final class PixelDensityQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -64,11 +68,6 @@ public final class PixelDensityQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
Density density = Density.getEnum(value);
if (density == null) {
@@ -128,49 +127,4 @@ public final class PixelDensityQualifier extends ResourceQualifier {
return mValue.getDpiValue() > compareQ.mValue.getDpiValue();
}
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof PixelDensityQualifier) {
- return mValue == ((PixelDensityQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- if (target != null) {
- AndroidVersion version = target.getVersion();
- if (version.getApiLevel() <= 3 && version.getCodename() == null) {
- return mValue.getLegacyValue();
- }
- }
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/RegionQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/RegionQualifier.java
index bf192c2..dfe02cf 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/RegionQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/RegionQualifier.java
@@ -17,7 +17,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
-import com.android.sdklib.IAndroidTarget;
import org.eclipse.swt.graphics.Image;
@@ -30,6 +29,7 @@ import java.util.regex.Pattern;
public final class RegionQualifier extends ResourceQualifier {
private final static Pattern sRegionPattern = Pattern.compile("^r([A-Z]{2})$"); //$NON-NLS-1$
+ public static final String FAKE_REGION_VALUE = "__"; //$NON-NLS-1$
public static final String NAME = "Region";
private String mValue;
@@ -104,6 +104,11 @@ public final class RegionQualifier extends ResourceQualifier {
}
@Override
+ public boolean hasFakeValue() {
+ return FAKE_REGION_VALUE.equals(mValue);
+ }
+
+ @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
RegionQualifier qualifier = getQualifier(value);
if (qualifier != null) {
@@ -139,16 +144,25 @@ public final class RegionQualifier extends ResourceQualifier {
* Returns the string used to represent this qualifier in the folder name.
*/
@Override
- public String getFolderSegment(IAndroidTarget target) {
+ public String getFolderSegment() {
return getFolderSegment(mValue);
}
@Override
- public String getStringValue() {
+ public String getShortDisplayValue() {
if (mValue != null) {
return mValue;
}
return ""; //$NON-NLS-1$
}
+
+ @Override
+ public String getLongDisplayValue() {
+ if (mValue != null) {
+ return String.format("Region %s", mValue);
+ }
+
+ return ""; //$NON-NLS-1$
+ }
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ResourceQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ResourceQualifier.java
index ba54ad0..b4d9a34 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ResourceQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ResourceQualifier.java
@@ -16,8 +16,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
-import com.android.sdklib.IAndroidTarget;
-
import org.eclipse.swt.graphics.Image;
/**
@@ -48,6 +46,12 @@ public abstract class ResourceQualifier implements Comparable<ResourceQualifier>
public abstract boolean isValid();
/**
+ * Returns whether the qualifier has a fake value.
+ * <p/>Fake values are used internally and should not be used as real qualifier value.
+ */
+ public abstract boolean hasFakeValue();
+
+ /**
* Check if the value is valid for this qualifier, and if so sets the value
* into a Folder Configuration.
* @param value The value to check and set. Must not be null.
@@ -60,7 +64,7 @@ public abstract class ResourceQualifier implements Comparable<ResourceQualifier>
* Returns a string formated to be used in a folder name.
* <p/>This is declared as abstract to force children classes to implement it.
*/
- public abstract String getFolderSegment(IAndroidTarget target);
+ public abstract String getFolderSegment();
/**
* Returns whether the given qualifier is a match for the receiver.
@@ -90,13 +94,18 @@ public abstract class ResourceQualifier implements Comparable<ResourceQualifier>
@Override
public String toString() {
- return getFolderSegment(null);
+ return getFolderSegment();
}
/**
* Returns a string formatted for display purpose.
*/
- public abstract String getStringValue();
+ public abstract String getShortDisplayValue();
+
+ /**
+ * Returns a string formatted for display purpose.
+ */
+ public abstract String getLongDisplayValue();
/**
* Returns <code>true</code> if both objects are equal.
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenDimensionQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenDimensionQualifier.java
index 30929b2..c9ff7c2 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenDimensionQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/ScreenDimensionQualifier.java
@@ -17,7 +17,6 @@
package com.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
-import com.android.sdklib.IAndroidTarget;
import org.eclipse.swt.graphics.Image;
@@ -86,6 +85,11 @@ public final class ScreenDimensionQualifier extends ResourceQualifier {
}
@Override
+ public boolean hasFakeValue() {
+ return false;
+ }
+
+ @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
Matcher m = sDimensionPattern.matcher(value);
if (m.matches()) {
@@ -143,16 +147,25 @@ public final class ScreenDimensionQualifier extends ResourceQualifier {
* Returns the string used to represent this qualifier in the folder name.
*/
@Override
- public String getFolderSegment(IAndroidTarget target) {
+ public String getFolderSegment() {
return String.format("%1$dx%2$d", mValue1, mValue2); //$NON-NLS-1$
}
@Override
- public String getStringValue() {
+ public String getShortDisplayValue() {
if (mValue1 != -1 && mValue2 != -1) {
return String.format("%1$dx%2$d", mValue1, mValue2);
}
return ""; //$NON-NLS-1$
}
+
+ @Override
+ public String getLongDisplayValue() {
+ if (mValue1 != -1 && mValue2 != -1) {
+ return String.format("Screen resolution %1$dx%2$d", mValue1, mValue2);
+ }
+
+ return ""; //$NON-NLS-1$
+ }
}
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 9ba6abb..107d7f4 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
@@ -17,7 +17,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.ResourceEnum;
import com.android.sdklib.resources.ScreenOrientation;
import org.eclipse.swt.graphics.Image;
@@ -25,7 +25,7 @@ import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Screen Orientation.
*/
-public final class ScreenOrientationQualifier extends ResourceQualifier {
+public final class ScreenOrientationQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Screen Orientation";
@@ -43,6 +43,11 @@ public final class ScreenOrientationQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -58,11 +63,6 @@ public final class ScreenOrientationQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
ScreenOrientation orientation = ScreenOrientation.getEnum(value);
if (orientation != null) {
@@ -73,43 +73,4 @@ public final class ScreenOrientationQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof ScreenOrientationQualifier) {
- return mValue == ((ScreenOrientationQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
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 73feb60..8ae11a8 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
@@ -17,13 +17,12 @@
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.ResourceEnum;
import com.android.sdklib.resources.ScreenRatio;
import org.eclipse.swt.graphics.Image;
-public class ScreenRatioQualifier extends ResourceQualifier {
+public class ScreenRatioQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Screen Ratio";
@@ -41,6 +40,11 @@ public class ScreenRatioQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -56,11 +60,6 @@ public class ScreenRatioQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
ScreenRatio size = ScreenRatio.getEnum(value);
if (size != null) {
@@ -71,52 +70,4 @@ public class ScreenRatioQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof ScreenRatioQualifier) {
- return mValue == ((ScreenRatioQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- if (target == null) {
- // Default behavior (when target==null) is qualifier is supported
- return mValue.getValue();
- }
-
- AndroidVersion version = target.getVersion();
- if (version.getApiLevel() >= 4 ||
- (version.getApiLevel() == 3 && "Donut".equals(version.getCodename()))) {
- return mValue.getValue();
- }
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
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 59d5ca1..b36bd09 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
@@ -17,8 +17,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.ResourceEnum;
import com.android.sdklib.resources.ScreenSize;
import org.eclipse.swt.graphics.Image;
@@ -26,7 +25,7 @@ import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Screen Size. Size can be "small", "normal", and "large"
*/
-public class ScreenSizeQualifier extends ResourceQualifier {
+public class ScreenSizeQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Screen Size";
@@ -45,6 +44,11 @@ public class ScreenSizeQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -60,11 +64,6 @@ public class ScreenSizeQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
ScreenSize size = ScreenSize.getEnum(value);
if (size != null) {
@@ -75,52 +74,4 @@ public class ScreenSizeQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof ScreenSizeQualifier) {
- return mValue == ((ScreenSizeQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- if (target == null) {
- // Default behavior (when target==null) is qualifier is supported
- return mValue.getValue();
- }
-
- AndroidVersion version = target.getVersion();
- if (version.getApiLevel() >= 4 ||
- (version.getApiLevel() == 3 && "Donut".equals(version.getCodename()))) {
- return mValue.getValue();
- }
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
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 a4d2ad3..e6276e8 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
@@ -17,15 +17,15 @@
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 com.android.sdklib.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Text Input Method.
*/
-public final class TextInputMethodQualifier extends ResourceQualifier {
+public final class TextInputMethodQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Text Input Method";
@@ -45,6 +45,11 @@ public final class TextInputMethodQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -60,11 +65,6 @@ public final class TextInputMethodQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
Keyboard method = Keyboard.getEnum(value);
if (method != null) {
@@ -76,43 +76,4 @@ public final class TextInputMethodQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof TextInputMethodQualifier) {
- return mValue == ((TextInputMethodQualifier)qualifier).mValue;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
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 b46b014..23ef94f 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
@@ -17,7 +17,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.ResourceEnum;
import com.android.sdklib.resources.TouchScreen;
import org.eclipse.swt.graphics.Image;
@@ -26,7 +26,7 @@ import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Touch Screen type.
*/
-public final class TouchScreenQualifier extends ResourceQualifier {
+public final class TouchScreenQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Touch Screen";
@@ -45,6 +45,11 @@ public final class TouchScreenQualifier extends ResourceQualifier {
}
@Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
public String getName() {
return NAME;
}
@@ -60,11 +65,6 @@ public final class TouchScreenQualifier extends ResourceQualifier {
}
@Override
- public boolean isValid() {
- return mValue != null;
- }
-
- @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
TouchScreen type = TouchScreen.getEnum(value);
if (type != null) {
@@ -76,42 +76,4 @@ public final class TouchScreenQualifier extends ResourceQualifier {
return false;
}
-
- @Override
- public boolean equals(Object qualifier) {
- if (qualifier instanceof TouchScreenQualifier) {
- return mValue == ((TouchScreenQualifier)qualifier).mValue;
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- if (mValue != null) {
- return mValue.hashCode();
- }
-
- return 0;
- }
-
- /**
- * Returns the string used to represent this qualifier in the folder name.
- */
- @Override
- public String getFolderSegment(IAndroidTarget target) {
- if (mValue != null) {
- return mValue.getValue();
- }
-
- return ""; //$NON-NLS-1$
- }
-
- @Override
- public String getStringValue() {
- if (mValue != null) {
- return mValue.getDisplayValue();
- }
-
- return ""; //$NON-NLS-1$
- }
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/VersionQualifier.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/VersionQualifier.java
index 5744fea..f3df195 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/VersionQualifier.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/configurations/VersionQualifier.java
@@ -17,8 +17,6 @@
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 org.eclipse.swt.graphics.Image;
@@ -103,6 +101,11 @@ public final class VersionQualifier extends ResourceQualifier {
}
@Override
+ public boolean hasFakeValue() {
+ return false;
+ }
+
+ @Override
public boolean checkAndSet(String value, FolderConfiguration config) {
VersionQualifier qualifier = getQualifier(value);
if (qualifier != null) {
@@ -131,24 +134,23 @@ public final class VersionQualifier extends ResourceQualifier {
* Returns the string used to represent this qualifier in the folder name.
*/
@Override
- public String getFolderSegment(IAndroidTarget target) {
- if (target == null) {
- // Default behavior (when target==null) is qualifier is supported
- return getFolderSegment(mVersion);
- }
+ public String getFolderSegment() {
+ return getFolderSegment(mVersion);
+ }
- AndroidVersion version = target.getVersion();
- if (version.getApiLevel() >= 3) {
- return getFolderSegment(mVersion);
+ @Override
+ public String getShortDisplayValue() {
+ if (mVersion != DEFAULT_VERSION) {
+ return String.format("API %1$d", mVersion);
}
return ""; //$NON-NLS-1$
}
@Override
- public String getStringValue() {
+ public String getLongDisplayValue() {
if (mVersion != DEFAULT_VERSION) {
- return String.format("API %1$d", mVersion);
+ return String.format("API Level %1$d", mVersion);
}
return ""; //$NON-NLS-1$
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/ProjectResources.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/ProjectResources.java
index e46c964..fb00824 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/ProjectResources.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/ProjectResources.java
@@ -547,7 +547,7 @@ public class ProjectResources implements IResourceRepository {
FolderConfiguration config = folder.getConfiguration();
LanguageQualifier lang = config.getLanguageQualifier();
if (lang != null) {
- set.add(lang.getStringValue());
+ set.add(lang.getShortDisplayValue());
}
}
}
@@ -569,10 +569,10 @@ public class ProjectResources implements IResourceRepository {
// get the language
LanguageQualifier lang = config.getLanguageQualifier();
- if (lang != null && lang.getStringValue().equals(currentLanguage)) {
+ if (lang != null && lang.getShortDisplayValue().equals(currentLanguage)) {
RegionQualifier region = config.getRegionQualifier();
if (region != null) {
- set.add(region.getStringValue());
+ set.add(region.getShortDisplayValue());
}
}
}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDevice.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDevice.java
index cac776a..dd0fb74 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDevice.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/LayoutDevice.java
@@ -144,55 +144,55 @@ public class LayoutDevice {
ScreenSizeQualifier ssq = config.getScreenSizeQualifier();
if (ssq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_SCREEN_SIZE);
- node.setTextContent(ssq.getFolderSegment(null));
+ node.setTextContent(ssq.getFolderSegment());
}
ScreenRatioQualifier srq = config.getScreenRatioQualifier();
if (srq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_SCREEN_RATIO);
- node.setTextContent(srq.getFolderSegment(null));
+ node.setTextContent(srq.getFolderSegment());
}
ScreenOrientationQualifier soq = config.getScreenOrientationQualifier();
if (soq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_SCREEN_ORIENTATION);
- node.setTextContent(soq.getFolderSegment(null));
+ node.setTextContent(soq.getFolderSegment());
}
PixelDensityQualifier pdq = config.getPixelDensityQualifier();
if (pdq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_PIXEL_DENSITY);
- node.setTextContent(pdq.getFolderSegment(null));
+ node.setTextContent(pdq.getFolderSegment());
}
TouchScreenQualifier ttq = config.getTouchTypeQualifier();
if (ttq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_TOUCH_TYPE);
- node.setTextContent(ttq.getFolderSegment(null));
+ node.setTextContent(ttq.getFolderSegment());
}
KeyboardStateQualifier ksq = config.getKeyboardStateQualifier();
if (ksq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_KEYBOARD_STATE);
- node.setTextContent(ksq.getFolderSegment(null));
+ node.setTextContent(ksq.getFolderSegment());
}
TextInputMethodQualifier timq = config.getTextInputMethodQualifier();
if (timq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_TEXT_INPUT_METHOD);
- node.setTextContent(timq.getFolderSegment(null));
+ node.setTextContent(timq.getFolderSegment());
}
NavigationStateQualifier nsq = config.getNavigationStateQualifier();
if (nsq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_NAV_STATE);
- node.setTextContent(nsq.getFolderSegment(null));
+ node.setTextContent(nsq.getFolderSegment());
}
NavigationMethodQualifier nmq = config.getNavigationMethodQualifier();
if (nmq != null) {
Element node = createNode(doc, configNode, LayoutDevicesXsd.NODE_NAV_METHOD);
- node.setTextContent(nmq.getFolderSegment(null));
+ node.setTextContent(nmq.getFolderSegment());
}
ScreenDimensionQualifier sdq = config.getScreenDimensionQualifier();
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 51525b8..fd22298 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
@@ -43,6 +43,7 @@ import com.android.sdklib.resources.KeyboardState;
import com.android.sdklib.resources.Navigation;
import com.android.sdklib.resources.NavigationState;
import com.android.sdklib.resources.NightMode;
+import com.android.sdklib.resources.ResourceEnum;
import com.android.sdklib.resources.ScreenOrientation;
import com.android.sdklib.resources.ScreenRatio;
import com.android.sdklib.resources.ScreenSize;
@@ -433,7 +434,7 @@ public class ConfigurationSelector extends Composite {
* @param config The configuration.
*/
public void setConfiguration(FolderConfiguration config) {
- mSelectedConfiguration.set(config);
+ mSelectedConfiguration.set(config, true /*nonFakeValuesOnly*/);
mSelectionTableViewer.refresh();
// create the base config, which is the default config minus the qualifiers
@@ -533,6 +534,19 @@ public class ConfigurationSelector extends Composite {
}
}
+ private void fillCombo(Combo combo, ResourceEnum[] resEnums) {
+ for (ResourceEnum resEnum : resEnums) {
+ // only add the enum if:
+ // - it's not a fake value. Those are never added as they are used for internal purpose
+ // only.
+ // - if it's a valid value for device only if mDeviceMode is true.
+ if ((mDeviceMode == false || resEnum.isValidValueForDevice() == false) &&
+ resEnum.isFakeValue() == false) {
+ combo.add(resEnum.getShortDisplayValue());
+ }
+ }
+ }
+
/**
* Content provider around a {@link FolderConfiguration}.
*/
@@ -587,7 +601,7 @@ public class ConfigurationSelector extends Composite {
// only one column, so we can ignore columnIndex
if (element instanceof ResourceQualifier) {
if (mShowQualifierValue) {
- String value = ((ResourceQualifier)element).getStringValue();
+ String value = ((ResourceQualifier)element).getShortDisplayValue();
if (value.length() == 0) {
return String.format("%1$s (?)",
((ResourceQualifier)element).getShortName());
@@ -924,10 +938,7 @@ public class ConfigurationSelector extends Composite {
super(parent, ScreenSizeQualifier.NAME);
mSize = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- ScreenSize[] ssValues = ScreenSize.values();
- for (ScreenSize value : ssValues) {
- mSize.add(value.getDisplayValue());
- }
+ fillCombo(mSize, ScreenSize.values());
mSize.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mSize.addSelectionListener(new SelectionListener() {
@@ -977,19 +988,16 @@ public class ConfigurationSelector extends Composite {
*/
private class ScreenRatioEdit extends QualifierEditBase {
- private Combo mSize;
+ private Combo mRatio;
public ScreenRatioEdit(Composite parent) {
super(parent, ScreenRatioQualifier.NAME);
- mSize = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- ScreenRatio[] srValues = ScreenRatio.values();
- for (ScreenRatio value : srValues) {
- mSize.add(value.getDisplayValue());
- }
+ mRatio = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ fillCombo(mRatio, ScreenRatio.values());
- mSize.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- mSize.addSelectionListener(new SelectionListener() {
+ mRatio.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ mRatio.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
onScreenRatioChange();
}
@@ -1001,7 +1009,7 @@ public class ConfigurationSelector extends Composite {
protected void onScreenRatioChange() {
// update the current config
- int index = mSize.getSelectionIndex();
+ int index = mRatio.getSelectionIndex();
if (index != -1) {
mSelectedConfiguration.setScreenRatioQualifier(new ScreenRatioQualifier(
@@ -1024,9 +1032,9 @@ public class ConfigurationSelector extends Composite {
ScreenRatio value = q.getValue();
if (value == null) {
- mSize.clearSelection();
+ mRatio.clearSelection();
} else {
- mSize.select(ScreenRatio.getIndex(value));
+ mRatio.select(ScreenRatio.getIndex(value));
}
}
}
@@ -1042,10 +1050,7 @@ public class ConfigurationSelector extends Composite {
super(parent, ScreenOrientationQualifier.NAME);
mOrientation = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- ScreenOrientation[] soValues = ScreenOrientation.values();
- for (ScreenOrientation value : soValues) {
- mOrientation.add(value.getDisplayValue());
- }
+ fillCombo(mOrientation, ScreenOrientation.values());
mOrientation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mOrientation.addSelectionListener(new SelectionListener() {
@@ -1101,10 +1106,7 @@ public class ConfigurationSelector extends Composite {
super(parent, DockModeQualifier.NAME);
mDockMode = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- DockMode[] values = DockMode.values();
- for (DockMode value : values) {
- mDockMode.add(value.getDisplayValue());
- }
+ fillCombo(mDockMode, DockMode.values());
mDockMode.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mDockMode.addSelectionListener(new SelectionListener() {
@@ -1159,10 +1161,7 @@ public class ConfigurationSelector extends Composite {
super(parent, NightModeQualifier.NAME);
mNightMode = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- NightMode[] values = NightMode.values();
- for (NightMode value : values) {
- mNightMode.add(value.getDisplayValue());
- }
+ fillCombo(mNightMode, NightMode.values());
mNightMode.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mNightMode.addSelectionListener(new SelectionListener() {
@@ -1217,12 +1216,7 @@ public class ConfigurationSelector extends Composite {
super(parent, PixelDensityQualifier.NAME);
mDensity = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- Density[] soValues = Density.values();
- for (Density value : soValues) {
- if (mDeviceMode == false || value != Density.NODPI) {
- mDensity.add(value.getDisplayValue());
- }
- }
+ fillCombo(mDensity, Density.values());
mDensity.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mDensity.addSelectionListener(new SelectionListener() {
@@ -1278,10 +1272,7 @@ public class ConfigurationSelector extends Composite {
super(parent, TouchScreenQualifier.NAME);
mTouchScreen = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- TouchScreen[] tstValues = TouchScreen.values();
- for (TouchScreen value : tstValues) {
- mTouchScreen.add(value.getDisplayValue());
- }
+ fillCombo(mTouchScreen, TouchScreen.values());
mTouchScreen.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mTouchScreen.addSelectionListener(new SelectionListener() {
@@ -1330,19 +1321,16 @@ public class ConfigurationSelector extends Composite {
*/
private class KeyboardEdit extends QualifierEditBase {
- private Combo mKeyboard;
+ private Combo mKeyboardState;
public KeyboardEdit(Composite parent) {
super(parent, KeyboardStateQualifier.NAME);
- mKeyboard = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- KeyboardState[] ksValues = KeyboardState.values();
- for (KeyboardState value : ksValues) {
- mKeyboard.add(value.getDisplayValue());
- }
+ mKeyboardState = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ fillCombo(mKeyboardState, KeyboardState.values());
- mKeyboard.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- mKeyboard.addSelectionListener(new SelectionListener() {
+ mKeyboardState.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ mKeyboardState.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
onKeyboardChange();
}
@@ -1354,7 +1342,7 @@ public class ConfigurationSelector extends Composite {
protected void onKeyboardChange() {
// update the current config
- int index = mKeyboard.getSelectionIndex();
+ int index = mKeyboardState.getSelectionIndex();
if (index != -1) {
mSelectedConfiguration.setKeyboardStateQualifier(new KeyboardStateQualifier(
@@ -1377,9 +1365,9 @@ public class ConfigurationSelector extends Composite {
KeyboardState value = q.getValue();
if (value == null) {
- mKeyboard.clearSelection();
+ mKeyboardState.clearSelection();
} else {
- mKeyboard.select(KeyboardState.getIndex(value));
+ mKeyboardState.select(KeyboardState.getIndex(value));
}
}
}
@@ -1395,10 +1383,7 @@ public class ConfigurationSelector extends Composite {
super(parent, TextInputMethodQualifier.NAME);
mTextInput = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- Keyboard[] timValues = Keyboard.values();
- for (Keyboard value : timValues) {
- mTextInput.add(value.getDisplayValue());
- }
+ fillCombo(mTextInput, Keyboard.values());
mTextInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mTextInput.addSelectionListener(new SelectionListener() {
@@ -1448,19 +1433,16 @@ public class ConfigurationSelector extends Composite {
*/
private class NavigationStateEdit extends QualifierEditBase {
- private Combo mNavigation;
+ private Combo mNavigationState;
public NavigationStateEdit(Composite parent) {
super(parent, NavigationStateQualifier.NAME);
- mNavigation = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- NavigationState[] values = NavigationState.values();
- for (NavigationState value : values) {
- mNavigation.add(value.getDisplayValue());
- }
+ mNavigationState = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ fillCombo(mNavigationState, NavigationState.values());
- mNavigation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- mNavigation.addSelectionListener(new SelectionListener() {
+ mNavigationState.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ mNavigationState.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
onNavigationChange();
}
@@ -1472,7 +1454,7 @@ public class ConfigurationSelector extends Composite {
protected void onNavigationChange() {
// update the current config
- int index = mNavigation.getSelectionIndex();
+ int index = mNavigationState.getSelectionIndex();
if (index != -1) {
mSelectedConfiguration.setNavigationStateQualifier(
@@ -1494,9 +1476,9 @@ public class ConfigurationSelector extends Composite {
NavigationState value = q.getValue();
if (value == null) {
- mNavigation.clearSelection();
+ mNavigationState.clearSelection();
} else {
- mNavigation.select(NavigationState.getIndex(value));
+ mNavigationState.select(NavigationState.getIndex(value));
}
}
}
@@ -1513,10 +1495,7 @@ public class ConfigurationSelector extends Composite {
super(parent, NavigationMethodQualifier.NAME);
mNavigation = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
- Navigation[] nmValues = Navigation.values();
- for (Navigation value : nmValues) {
- mNavigation.add(value.getDisplayValue());
- }
+ fillCombo(mNavigation, Navigation.values());
mNavigation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mNavigation.addSelectionListener(new SelectionListener() {
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 89baa1c..7a4eaaa 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
@@ -136,11 +136,11 @@ public class NewProjectWizard extends Wizard implements INewWizard {
private static final String DRAWABLE_DIRECTORY =
SdkConstants.FD_DRAWABLE + AndroidConstants.WS_SEP;
private static final String DRAWABLE_HDPI_DIRECTORY =
- SdkConstants.FD_DRAWABLE + "-" + Density.HIGH.getValue() + AndroidConstants.WS_SEP; //$NON-NLS-1$
+ SdkConstants.FD_DRAWABLE + "-" + Density.HIGH.getResourceValue() + AndroidConstants.WS_SEP; //$NON-NLS-1$
private static final String DRAWABLE_MDPI_DIRECTORY =
- SdkConstants.FD_DRAWABLE + "-" + Density.MEDIUM.getValue() + AndroidConstants.WS_SEP; //$NON-NLS-1$
+ SdkConstants.FD_DRAWABLE + "-" + Density.MEDIUM.getResourceValue() + AndroidConstants.WS_SEP; //$NON-NLS-1$
private static final String DRAWABLE_LDPI_DIRECTORY =
- SdkConstants.FD_DRAWABLE + "-" + Density.LOW.getValue() + AndroidConstants.WS_SEP; //$NON-NLS-1$
+ SdkConstants.FD_DRAWABLE + "-" + Density.LOW.getResourceValue() + AndroidConstants.WS_SEP; //$NON-NLS-1$
private static final String LAYOUT_DIRECTORY =
SdkConstants.FD_LAYOUT + AndroidConstants.WS_SEP;
private static final String VALUES_DIRECTORY =
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newxmlfile/NewXmlFileCreationPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newxmlfile/NewXmlFileCreationPage.java
index 4926277..7837d66 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newxmlfile/NewXmlFileCreationPage.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newxmlfile/NewXmlFileCreationPage.java
@@ -1025,7 +1025,7 @@ class NewXmlFileCreationPage extends WizardPage {
// The configuration is valid. Reformat the folder path using the canonical
// value from the configuration.
- newPath = RES_FOLDER_ABS + mTempConfig.getFolderName(type.getResFolderType(), mProject);
+ newPath = RES_FOLDER_ABS + mTempConfig.getFolderName(type.getResFolderType());
} else {
// The configuration is invalid. We still update the path but this time
// do it manually on the string.
@@ -1034,8 +1034,7 @@ class NewXmlFileCreationPage extends WizardPage {
"^(" + RES_FOLDER_ABS +")[^-]*(.*)", //$NON-NLS-1$ //$NON-NLS-2$
"\\1" + type.getResFolderName() + "\\2"); //$NON-NLS-1$ //$NON-NLS-2$
} else {
- newPath = RES_FOLDER_ABS + mTempConfig.getFolderName(type.getResFolderType(),
- mProject);
+ newPath = RES_FOLDER_ABS + mTempConfig.getFolderName(type.getResFolderType());
}
}
@@ -1139,7 +1138,7 @@ class NewXmlFileCreationPage extends WizardPage {
if (type != null) {
mConfigSelector.getConfiguration(mTempConfig);
StringBuffer sb = new StringBuffer(RES_FOLDER_ABS);
- sb.append(mTempConfig.getFolderName(type.getResFolderType(), mProject));
+ sb.append(mTempConfig.getFolderName(type.getResFolderType()));
mInternalWsFolderPathUpdate = true;
mWsFolderPathTextField.setText(sb.toString());
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/DockModeQualifierTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/DockModeQualifierTest.java
new file mode 100644
index 0000000..1cdc91b
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/resources/configurations/DockModeQualifierTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
+ *
+ * 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.ide.eclipse.adt.internal.editors.resources.configurations;
+
+import com.android.ide.eclipse.adt.internal.resources.configurations.DockModeQualifier;
+import com.android.sdklib.resources.DockMode;
+
+import junit.framework.TestCase;
+
+public class DockModeQualifierTest extends TestCase {
+
+ private DockModeQualifier mCarQualifier;
+ private DockModeQualifier mDeskQualifier;
+ private DockModeQualifier mNoneQualifier;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mCarQualifier = new DockModeQualifier(DockMode.CAR);
+ mDeskQualifier = new DockModeQualifier(DockMode.DESK);
+ mNoneQualifier = new DockModeQualifier(DockMode.NONE);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ mCarQualifier = null;
+ mDeskQualifier = null;
+ mNoneQualifier = null;
+ }
+
+ public void testIsBetterMatchThan() {
+ assertTrue(mNoneQualifier.isBetterMatchThan(mCarQualifier, mDeskQualifier));
+ assertFalse(mNoneQualifier.isBetterMatchThan(mDeskQualifier, mDeskQualifier));
+ assertTrue(mNoneQualifier.isBetterMatchThan(mDeskQualifier, mCarQualifier));
+ assertFalse(mNoneQualifier.isBetterMatchThan(mCarQualifier, mCarQualifier));
+
+ assertFalse(mDeskQualifier.isBetterMatchThan(mCarQualifier, mCarQualifier));
+ assertFalse(mCarQualifier.isBetterMatchThan(mDeskQualifier, mDeskQualifier));
+ }
+
+ public void testIsMatchFor() {
+ assertTrue(mNoneQualifier.isMatchFor(mCarQualifier));
+ assertTrue(mNoneQualifier.isMatchFor(mDeskQualifier));
+ assertTrue(mCarQualifier.isMatchFor(mCarQualifier));
+ assertTrue(mDeskQualifier.isMatchFor(mDeskQualifier));
+
+ assertFalse(mCarQualifier.isMatchFor(mNoneQualifier));
+ assertFalse(mCarQualifier.isMatchFor(mDeskQualifier));
+ assertFalse(mDeskQualifier.isMatchFor(mCarQualifier));
+ assertFalse(mDeskQualifier.isMatchFor(mNoneQualifier));
+ }
+}
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 31f9784..117654d 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
@@ -28,7 +28,6 @@ import com.android.ide.eclipse.adt.io.IFileWrapper;
import com.android.ide.eclipse.adt.io.IFolderWrapper;
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;
@@ -111,7 +110,7 @@ public class ConfigMatchTest extends TestCase {
null, // screen orientation
null, // dpi
null, // touch mode
- KeyboardState.EXPOSED.getValue(), // keyboard state
+ KeyboardState.EXPOSED.getResourceValue(), // keyboard state
null, // text input
null, // navigation
null, // screen dimension
@@ -129,7 +128,7 @@ public class ConfigMatchTest extends TestCase {
null, // screen orientation
null, // dpi
null, // touch mode
- KeyboardState.HIDDEN.getValue(), // keyboard state
+ KeyboardState.HIDDEN.getResourceValue(), // keyboard state
null, // text input
null, // navigation
null, // screen dimension
@@ -144,7 +143,7 @@ public class ConfigMatchTest extends TestCase {
null, // region
null, // screen size
null, // screen ratio
- ScreenOrientation.LANDSCAPE.getValue(), // screen orientation
+ ScreenOrientation.LANDSCAPE.getResourceValue(), // screen orientation
null, // dpi
null, // touch mode
null, // keyboard state
@@ -162,12 +161,12 @@ public class ConfigMatchTest extends TestCase {
"rUS", // region
"normal", // screen size
"notlong", // screen ratio
- ScreenOrientation.LANDSCAPE.getValue(), // screen orientation
+ ScreenOrientation.LANDSCAPE.getResourceValue(), // screen orientation
"mdpi", // dpi
- TouchScreen.FINGER.getValue(), // touch mode
- KeyboardState.EXPOSED.getValue(), // keyboard state
- Keyboard.QWERTY.getValue(), // text input
- Navigation.DPAD.getValue(), // navigation
+ TouchScreen.FINGER.getResourceValue(), // touch mode
+ KeyboardState.EXPOSED.getResourceValue(), // keyboard state
+ Keyboard.QWERTY.getResourceValue(), // text input
+ Navigation.DPAD.getResourceValue(), // navigation
"480x320", // screen dimension
"v3"); // version
@@ -188,12 +187,12 @@ public class ConfigMatchTest extends TestCase {
"rUS", // region
"normal", // screen size
"notlong", // screen ratio
- ScreenOrientation.LANDSCAPE.getValue(), // screen orientation
+ ScreenOrientation.LANDSCAPE.getResourceValue(), // screen orientation
"mdpi", // dpi
- TouchScreen.FINGER.getValue(), // touch mode
- KeyboardState.EXPOSED.getValue(), // keyboard state
- Keyboard.QWERTY.getValue(), // text input
- Navigation.DPAD.getValue(), // navigation
+ TouchScreen.FINGER.getResourceValue(), // touch mode
+ KeyboardState.EXPOSED.getResourceValue(), // keyboard state
+ Keyboard.QWERTY.getResourceValue(), // text input
+ Navigation.DPAD.getResourceValue(), // navigation
"480x320", // screen dimension
"v3"); // version
@@ -239,7 +238,7 @@ public class ConfigMatchTest extends TestCase {
FileMock[] memberList) throws Exception {
// figure out the folder name based on the configuration
- String folderName = config.getFolderName(ResourceFolderType.LAYOUT, (IAndroidTarget)null);
+ String folderName = config.getFolderName(ResourceFolderType.LAYOUT);
// create the folder mock
FolderMock folder = new FolderMock(folderName, memberList);
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/export/ProjectConfig.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/export/ProjectConfig.java
index 387e8ff..271e427 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/export/ProjectConfig.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/export/ProjectConfig.java
@@ -51,12 +51,13 @@ public final class ProjectConfig {
* List of densities and their associated aapt filter.
*/
private static final String[][] DENSITY_LIST = new String[][] {
- new String[] { Density.HIGH.getValue(),
- Density.HIGH.getValue() + "," + Density.NODPI.getValue() },
- new String[] { Density.MEDIUM.getValue(),
- Density.MEDIUM.getValue() + "," + Density.NODPI.getValue() },
- new String[] { Density.MEDIUM.getValue(),
- Density.MEDIUM.getValue() + "," + Density.NODPI.getValue() },
+ new String[] { Density.HIGH.getResourceValue(),
+ Density.HIGH.getResourceValue() + "," + Density.NODPI.getResourceValue() },
+ new String[] { Density.MEDIUM.getResourceValue(),
+ Density.MEDIUM.getResourceValue() + "," +
+ Density.NODPI.getResourceValue() },
+ new String[] { Density.MEDIUM.getResourceValue(),
+ Density.MEDIUM.getResourceValue() + "," + Density.NODPI.getResourceValue() },
};
private final File mProjectFolder;
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java
index d4d5256..ac0fb91 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Density.java
@@ -22,7 +22,7 @@ package com.android.sdklib.resources;
* <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 {
+public enum Density implements ResourceEnum {
HIGH("hdpi", "High Density", 240), //$NON-NLS-1$
MEDIUM("mdpi", "Medium Density", 160), //$NON-NLS-1$
LOW("ldpi", "Low Density", 120), //$NON-NLS-1$
@@ -70,7 +70,7 @@ public enum Density {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
@@ -86,7 +86,11 @@ public enum Density {
return "";
}
- public String getDisplayValue() {
+ public String getShortDisplayValue() {
+ return mDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
return mDisplayValue;
}
@@ -113,4 +117,12 @@ public enum Density {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return this != NODPI; // nodpi is not a valid config for devices.
+ }
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/DockMode.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/DockMode.java
index 3b9f9ca..4bac3e9 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/DockMode.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/DockMode.java
@@ -20,16 +20,17 @@ package com.android.sdklib.resources;
* Dock enum.
* <p/>This is used in the resource folder names.
*/
-public enum DockMode {
- CAR("car", "Car"),
- DESK("desk", "Desk");
+public enum DockMode implements ResourceEnum {
+ NONE("", "No Dock"),
+ CAR("car", "Car Dock"),
+ DESK("desk", "Desk Dock");
- private String mValue;
- private String mDisplay;
+ private final String mValue;
+ private final String mDisplayValue;
private DockMode(String value, String display) {
mValue = value;
- mDisplay = display;
+ mDisplayValue = display;
}
/**
@@ -47,12 +48,16 @@ public enum DockMode {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplay;
+ public String getShortDisplayValue() {
+ return mDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mDisplayValue;
}
public static int getIndex(DockMode value) {
@@ -78,4 +83,12 @@ public enum DockMode {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return this == NONE; // NONE is not a real enum. it's used for internal state only.
+ }
+
+ public boolean isValidValueForDevice() {
+ return this != NONE;
+ }
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java
index 914b205..c5ff18b 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Keyboard.java
@@ -20,18 +20,21 @@ 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", null, "No Keys"), //$NON-NLS-1$
- QWERTY("qwerty", null, "Qwerty"), //$NON-NLS-1$
- TWELVEKEY("12key", "twelvekey", "12 Key"); //$NON-NLS-1$
+public enum Keyboard implements ResourceEnum {
+ NOKEY("nokeys", null, "No Keys", "No keyboard"), //$NON-NLS-1$
+ QWERTY("qwerty", null, "Qwerty", "Qwerty keybard"), //$NON-NLS-1$
+ TWELVEKEY("12key", "twelvekey", "12 Key", "12 key keyboard"); //$NON-NLS-1$ //$NON-NLS-2$
- private String mValue, mValue2;
- private String mDisplayValue;
+ private final String mValue, mValue2;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private Keyboard(String value, String value2, String displayValue) {
+ private Keyboard(String value, String value2, String shortDisplayValue,
+ String longDisplayValue) {
mValue = value;
mValue2 = value2;
- mDisplayValue = displayValue;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -50,12 +53,16 @@ public enum Keyboard {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(Keyboard value) {
@@ -81,4 +88,12 @@ public enum Keyboard {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java
index d6c3f6a..c6461a4 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/KeyboardState.java
@@ -20,17 +20,19 @@ 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$
+public enum KeyboardState implements ResourceEnum {
+ EXPOSED("keysexposed", "Exposed", "Exposed keyboard"), //$NON-NLS-1$
+ HIDDEN("keyshidden", "Hidden", "Hidden keyboard"), //$NON-NLS-1$
+ SOFT("keyssoft", "Soft", "Soft keyboard"); //$NON-NLS-1$
- private String mValue;
- private String mDisplayValue;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private KeyboardState(String value, String displayValue) {
+ private KeyboardState(String value, String shortDisplayValue, String longDisplayValue) {
mValue = value;
- mDisplayValue = displayValue;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -48,12 +50,16 @@ public enum KeyboardState {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(KeyboardState value) {
@@ -79,4 +85,13 @@ public enum KeyboardState {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java
index ae54215..5ac67f4 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/Navigation.java
@@ -20,18 +20,20 @@ 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$
+public enum Navigation implements ResourceEnum {
+ NONAV("nonav", "None", "No navigation"), //$NON-NLS-1$
+ DPAD("dpad", "D-pad", "D-pad navigation"), //$NON-NLS-1$
+ TRACKBALL("trackball", "Trackball", "Trackball navigation"), //$NON-NLS-1$
+ WHEEL("wheel", "Wheel", "Wheel navigation"); //$NON-NLS-1$
- private String mValue;
- private String mDisplay;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private Navigation(String value, String display) {
+ private Navigation(String value, String shortDisplayValue, String longDisplayValue) {
mValue = value;
- mDisplay = display;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -49,12 +51,16 @@ public enum Navigation {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplay;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(Navigation value) {
@@ -80,4 +86,13 @@ public enum Navigation {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
} \ No newline at end of file
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NavigationState.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NavigationState.java
index bf24136..612c119 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NavigationState.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NavigationState.java
@@ -20,16 +20,18 @@ package com.android.sdklib.resources;
* Navigation state enum.
* <p/>This is used in the resource folder names.
*/
-public enum NavigationState {
- EXPOSED("navexposed", "Exposed"), //$NON-NLS-1$
- HIDDEN("navhidden", "Hidden"); //$NON-NLS-1$
+public enum NavigationState implements ResourceEnum {
+ EXPOSED("navexposed", "Exposed", "Exposed navigation"), //$NON-NLS-1$
+ HIDDEN("navhidden", "Hidden", "Hidden navigation"); //$NON-NLS-1$
- private String mValue;
- private String mDisplayValue;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private NavigationState(String value, String displayValue) {
+ private NavigationState(String value, String shortDisplayValue, String longDisplayValue) {
mValue = value;
- mDisplayValue = displayValue;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -47,12 +49,16 @@ public enum NavigationState {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(NavigationState value) {
@@ -78,4 +84,13 @@ public enum NavigationState {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NightMode.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NightMode.java
index a8fae0c..c694f19 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NightMode.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/NightMode.java
@@ -20,16 +20,18 @@ package com.android.sdklib.resources;
* Night enum.
* <p/>This is used in the resource folder names.
*/
-public enum NightMode {
- NIGHT("night", "Night time"),
- NOTNIGHT("notnight", "Day time");
+public enum NightMode implements ResourceEnum {
+ NOTNIGHT("notnight", "Not Night", "Day time"),
+ NIGHT("night", "Night", "Night time");
- private String mValue;
- private String mDisplay;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private NightMode(String value, String display) {
+ private NightMode(String value, String shortDisplayValue, String longDisplayValue) {
mValue = value;
- mDisplay = display;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -47,12 +49,16 @@ public enum NightMode {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplay;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(NightMode value) {
@@ -78,4 +84,13 @@ public enum NightMode {
}
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ResourceEnum.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ResourceEnum.java
new file mode 100644
index 0000000..7bbcfcb
--- /dev/null
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ResourceEnum.java
@@ -0,0 +1,60 @@
+/*
+ * 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;
+
+/**
+ * An enum representing a resource qualifier value.
+ */
+public interface ResourceEnum {
+
+ /**
+ * Returns the resource string. This is to be used in resource folder names.
+ */
+ String getResourceValue();
+
+ /**
+ * Whether the value actually used on device. This returns true only if a device can report
+ * this value, false if it's just used to qualify resources.
+ */
+ boolean isValidValueForDevice();
+
+ /**
+ * Whether the value is neither used for device nor resources. This returns false when
+ * the value is only used for internal usage in the custom editors.
+ */
+ boolean isFakeValue();
+
+ /**
+ * Returns a short string for display value. The string does not need to show the context.
+ * <p/>For instance "exposed", which can be the value for the keyboard state or the navigation
+ * state, would be valid since something else in the UI is expected to show if this is about the
+ * keyboard or the navigation state.
+ *
+ * @see #getLongDisplayValue()
+ */
+ String getShortDisplayValue();
+
+ /**
+ * Returns a long string for display value. This must not only include the enum value but
+ * context (qualifier) about what the value represents.
+ * <p/>For instance "Exposed keyboard", and "Export navigation", as "exposed" would not be
+ * enough to know what qualifier the value is about.
+ *
+ * @see #getShortDisplayValue()
+ */
+ String getLongDisplayValue();
+}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java
index 8e28b10..d6fdc59 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenOrientation.java
@@ -20,17 +20,19 @@ 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$
+public enum ScreenOrientation implements ResourceEnum {
+ PORTRAIT("port", "Portrait", "Portrait Orientation"), //$NON-NLS-1$
+ LANDSCAPE("land", "Landscape", "Landscape Orientation"), //$NON-NLS-1$
+ SQUARE("square", "Square", "Square Orientation"); //$NON-NLS-1$
- private String mValue;
- private String mDisplayValue;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private ScreenOrientation(String value, String displayValue) {
+ private ScreenOrientation(String value, String shortDisplayValue, String longDisplayValue) {
mValue = value;
- mDisplayValue = displayValue;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -48,12 +50,16 @@ public enum ScreenOrientation {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(ScreenOrientation orientation) {
@@ -80,4 +86,13 @@ public enum ScreenOrientation {
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java
index 4a3577f..28d4024 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenRatio.java
@@ -20,16 +20,18 @@ 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$
+public enum ScreenRatio implements ResourceEnum {
+ NOTLONG("notlong", "Not Long", "Short screen aspect ratio"), //$NON-NLS-1$
+ LONG("long", "Long", "Long screen aspect ratio"); //$NON-NLS-1$
- private String mValue;
- private String mDisplayValue;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private ScreenRatio(String value, String displayValue) {
+ private ScreenRatio(String value, String displayValue, String longDisplayValue) {
mValue = value;
- mDisplayValue = displayValue;
+ mShortDisplayValue = displayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -47,12 +49,16 @@ public enum ScreenRatio {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(ScreenRatio orientation) {
@@ -79,4 +85,14 @@ public enum ScreenRatio {
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}
+
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java
index 1aae15a..dc94afb 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/ScreenSize.java
@@ -20,17 +20,19 @@ 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$
+public enum ScreenSize implements ResourceEnum {
+ SMALL("small", "Small", "Small Screen"), //$NON-NLS-1$
+ NORMAL("normal", "Normal", "Normal Screen"), //$NON-NLS-1$
+ LARGE("large", "Large", "Large Screen"); //$NON-NLS-1$
- private String mValue;
- private String mDisplayValue;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private ScreenSize(String value, String displayValue) {
+ private ScreenSize(String value, String shortDisplayValue, String longDisplayValue) {
mValue = value;
- mDisplayValue = displayValue;
+ mShortDisplayValue = shortDisplayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -48,12 +50,16 @@ public enum ScreenSize {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(ScreenSize orientation) {
@@ -80,4 +86,13 @@ public enum ScreenSize {
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java
index 3def049..233308b 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/resources/TouchScreen.java
@@ -20,17 +20,19 @@ 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$
+public enum TouchScreen implements ResourceEnum {
+ NOTOUCH("notouch", "No Touch", "No-touch screen"), //$NON-NLS-1$
+ STYLUS("stylus", "Stylus", "Stylus-based touchscreen"), //$NON-NLS-1$
+ FINGER("finger", "Finger", "Finger-based touchscreen"); //$NON-NLS-1$
- private String mValue;
- private String mDisplayValue;
+ private final String mValue;
+ private final String mShortDisplayValue;
+ private final String mLongDisplayValue;
- private TouchScreen(String value, String displayValue) {
+ private TouchScreen(String value, String displayValue, String longDisplayValue) {
mValue = value;
- mDisplayValue = displayValue;
+ mShortDisplayValue = displayValue;
+ mLongDisplayValue = longDisplayValue;
}
/**
@@ -48,12 +50,16 @@ public enum TouchScreen {
return null;
}
- public String getValue() {
+ public String getResourceValue() {
return mValue;
}
- public String getDisplayValue() {
- return mDisplayValue;
+ public String getShortDisplayValue() {
+ return mShortDisplayValue;
+ }
+
+ public String getLongDisplayValue() {
+ return mLongDisplayValue;
}
public static int getIndex(TouchScreen touch) {
@@ -80,4 +86,13 @@ public enum TouchScreen {
return null;
}
+
+ public boolean isFakeValue() {
+ return false;
+ }
+
+ public boolean isValidValueForDevice() {
+ return true;
+ }
+
}