diff options
author | Xavier Ducrohet <xav@android.com> | 2012-11-28 16:38:50 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2012-11-29 12:56:09 -0800 |
commit | d09b8a2d6ce570cc81ec6678b07f40541f4657f4 (patch) | |
tree | 08de690cd224142213c60321419dabd699ad97a9 /eclipse | |
parent | 79a4aff85957ef993e46dbbbe1f1ae0bab632d90 (diff) | |
download | sdk-d09b8a2d6ce570cc81ec6678b07f40541f4657f4.zip sdk-d09b8a2d6ce570cc81ec6678b07f40541f4657f4.tar.gz sdk-d09b8a2d6ce570cc81ec6678b07f40541f4657f4.tar.bz2 |
Add support for layout dir qualifiers.
Change-Id: I6da728d079975fa19f1ae816fa585031a9c6fe75
Diffstat (limited to 'eclipse')
3 files changed, 65 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/icons/bidi.png b/eclipse/plugins/com.android.ide.eclipse.adt/icons/bidi.png Binary files differnew file mode 100644 index 0000000..4ffe131 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/icons/bidi.png diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceHelper.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceHelper.java index 6b09b34..9695318 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceHelper.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceHelper.java @@ -40,6 +40,7 @@ import com.android.ide.common.resources.configuration.DensityQualifier; import com.android.ide.common.resources.configuration.FolderConfiguration; import com.android.ide.common.resources.configuration.KeyboardStateQualifier; import com.android.ide.common.resources.configuration.LanguageQualifier; +import com.android.ide.common.resources.configuration.LayoutDirectionQualifier; import com.android.ide.common.resources.configuration.NavigationMethodQualifier; import com.android.ide.common.resources.configuration.NavigationStateQualifier; import com.android.ide.common.resources.configuration.NetworkCodeQualifier; @@ -127,6 +128,7 @@ public class ResourceHelper { sIconMap.put(NetworkCodeQualifier.class, factory.getIcon("mnc")); //$NON-NLS-1$ sIconMap.put(LanguageQualifier.class, factory.getIcon("language")); //$NON-NLS-1$ sIconMap.put(RegionQualifier.class, factory.getIcon("region")); //$NON-NLS-1$ + sIconMap.put(LayoutDirectionQualifier.class, factory.getIcon("bidi")); //$NON-NLS-1$ sIconMap.put(ScreenSizeQualifier.class, factory.getIcon("size")); //$NON-NLS-1$ sIconMap.put(ScreenRatioQualifier.class, factory.getIcon("ratio")); //$NON-NLS-1$ sIconMap.put(ScreenOrientationQualifier.class, factory.getIcon("orientation")); //$NON-NLS-1$ 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 ce36457..15453fb 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 @@ -22,6 +22,7 @@ import com.android.ide.common.resources.configuration.DensityQualifier; import com.android.ide.common.resources.configuration.FolderConfiguration; import com.android.ide.common.resources.configuration.KeyboardStateQualifier; import com.android.ide.common.resources.configuration.LanguageQualifier; +import com.android.ide.common.resources.configuration.LayoutDirectionQualifier; import com.android.ide.common.resources.configuration.NavigationMethodQualifier; import com.android.ide.common.resources.configuration.NavigationStateQualifier; import com.android.ide.common.resources.configuration.NetworkCodeQualifier; @@ -44,6 +45,7 @@ import com.android.ide.eclipse.adt.internal.resources.ResourceHelper; import com.android.resources.Density; import com.android.resources.Keyboard; import com.android.resources.KeyboardState; +import com.android.resources.LayoutDirection; import com.android.resources.Navigation; import com.android.resources.NavigationState; import com.android.resources.NightMode; @@ -433,6 +435,8 @@ public class ConfigurationSelector extends Composite { mUiMap.put(NetworkCodeQualifier.class, new MNCEdit(mQualifierEditParent)); mUiMap.put(LanguageQualifier.class, new LanguageEdit(mQualifierEditParent)); mUiMap.put(RegionQualifier.class, new RegionEdit(mQualifierEditParent)); + mUiMap.put(LayoutDirectionQualifier.class, + new LayoutDirectionEdit(mQualifierEditParent)); mUiMap.put(SmallestScreenWidthQualifier.class, new SmallestScreenWidthEdit(mQualifierEditParent)); mUiMap.put(ScreenWidthQualifier.class, new ScreenWidthEdit(mQualifierEditParent)); @@ -1017,6 +1021,65 @@ public class ConfigurationSelector extends Composite { } /** + * Edit widget for {@link LayoutDirectionQualifier}. + */ + private class LayoutDirectionEdit extends QualifierEditBase { + + private Combo mDirection; + + public LayoutDirectionEdit(Composite parent) { + super(parent, LayoutDirectionQualifier.NAME); + + mDirection = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY); + fillCombo(mDirection, LayoutDirection.values()); + + mDirection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + mDirection.addSelectionListener(new SelectionListener() { + @Override + public void widgetDefaultSelected(SelectionEvent e) { + onDirectionChange(); + } + @Override + public void widgetSelected(SelectionEvent e) { + onDirectionChange(); + } + }); + } + + protected void onDirectionChange() { + // update the current config + int index = mDirection.getSelectionIndex(); + + if (index != -1) { + mSelectedConfiguration.setLayoutDirectionQualifier(new LayoutDirectionQualifier( + LayoutDirection.getByIndex(index))); + } else { + // empty selection, means no qualifier. + // Since the qualifier classes are immutable, and we don't want to + // remove the qualifier from the configuration, we create a new default one. + mSelectedConfiguration.setLayoutDirectionQualifier( + new LayoutDirectionQualifier()); + } + + // notify of change + onChange(true /* keepSelection */); + } + + @Override + public void setQualifier(ResourceQualifier qualifier) { + LayoutDirectionQualifier q = (LayoutDirectionQualifier)qualifier; + + LayoutDirection value = q.getValue(); + if (value == null) { + mDirection.clearSelection(); + } else { + mDirection.select(LayoutDirection.getIndex(value)); + } + } + } + + + /** * Edit widget for {@link SmallestScreenWidthQualifier}. */ private class SmallestScreenWidthEdit extends QualifierEditBase { |