diff options
| author | Xavier Ducrohet <xav@android.com> | 2010-07-09 14:17:10 -0700 | 
|---|---|---|
| committer | Android Code Review <code-review@android.com> | 2010-07-09 14:17:10 -0700 | 
| commit | de559da1ce494e61e63b85ce8d10007cdfa1e086 (patch) | |
| tree | 3209654d5992349d23d81918da13e9a9ad894ad7 /eclipse | |
| parent | f24ba5fdf67b84f5f91ecd4af77ea62133c18efe (diff) | |
| parent | ca341273a09f696470872eb1a5aa28a935e073c5 (diff) | |
| download | sdk-de559da1ce494e61e63b85ce8d10007cdfa1e086.zip sdk-de559da1ce494e61e63b85ce8d10007cdfa1e086.tar.gz sdk-de559da1ce494e61e63b85ce8d10007cdfa1e086.tar.bz2 | |
Merge "ADT: dock/night combos in layout editor."
Diffstat (limited to 'eclipse')
39 files changed, 595 insertions, 718 deletions
| diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.pngBinary files differ new file mode 100644 index 0000000..71d1804 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/dockmode.png diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.pngBinary files differ new file mode 100644 index 0000000..a04e4cf --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/nightmode.png diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/orientation.pngBinary files differ 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 diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.pngBinary files differ new file mode 100644 index 0000000..8bf07f2 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/ratio.png diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/size.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/size.pngBinary files differ new file mode 100644 index 0000000..c8a82b0 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/size.png diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/version.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/version.pngBinary files differ new file mode 100644 index 0000000..a8dc35e --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/version.png 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); | 
