Merge change 21051 into donut

* changes:
  Add support for the new qualifier in the config selector.
This commit is contained in:
Android (Google) Code Review
2009-08-13 14:35:44 -07:00
4 changed files with 206 additions and 1 deletions

View File

@@ -159,6 +159,11 @@ public class ScreenRatioQualifier extends ResourceQualifier {
@Override @Override
public String getFolderSegment(IAndroidTarget target) { public String getFolderSegment(IAndroidTarget target) {
if (mValue != null) { if (mValue != null) {
if (target == null) {
// Default behavior (when target==null) is qualifier is supported
return mValue.getValue();
}
AndroidVersion version = target.getVersion(); AndroidVersion version = target.getVersion();
if (version.getApiLevel() >= 4 || if (version.getApiLevel() >= 4 ||
(version.getApiLevel() == 3 && "Donut".equals(version.getCodename()))) { (version.getApiLevel() == 3 && "Donut".equals(version.getCodename()))) {

View File

@@ -163,6 +163,11 @@ public class ScreenSizeQualifier extends ResourceQualifier {
@Override @Override
public String getFolderSegment(IAndroidTarget target) { public String getFolderSegment(IAndroidTarget target) {
if (mValue != null) { if (mValue != null) {
if (target == null) {
// Default behavior (when target==null) is qualifier is supported
return mValue.getValue();
}
AndroidVersion version = target.getVersion(); AndroidVersion version = target.getVersion();
if (version.getApiLevel() >= 4 || if (version.getApiLevel() >= 4 ||
(version.getApiLevel() == 3 && "Donut".equals(version.getCodename()))) { (version.getApiLevel() == 3 && "Donut".equals(version.getCodename()))) {

View File

@@ -132,6 +132,11 @@ public final class VersionQualifier extends ResourceQualifier {
*/ */
@Override @Override
public String getFolderSegment(IAndroidTarget target) { public String getFolderSegment(IAndroidTarget target) {
if (target == null) {
// Default behavior (when target==null) is qualifier is supported
return getFolderSegment(mVersion);
}
AndroidVersion version = target.getVersion(); AndroidVersion version = target.getVersion();
if (version.getApiLevel() >= 3) { if (version.getApiLevel() >= 3) {
return getFolderSegment(mVersion); return getFolderSegment(mVersion);
@@ -143,7 +148,7 @@ public final class VersionQualifier extends ResourceQualifier {
@Override @Override
public String getStringValue() { public String getStringValue() {
if (mVersion != DEFAULT_VERSION) { if (mVersion != DEFAULT_VERSION) {
return String.format("v%1$d", mVersion); return String.format("API %1$d", mVersion);
} }
return ""; //$NON-NLS-1$ return ""; //$NON-NLS-1$

View File

@@ -27,12 +27,17 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.RegionQuali
import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenDimensionQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenDimensionQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatioQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier; import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.VersionQualifier;
import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier.KeyboardState; import com.android.ide.eclipse.adt.internal.resources.configurations.KeyboardStateQualifier.KeyboardState;
import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier.NavigationMethod; import com.android.ide.eclipse.adt.internal.resources.configurations.NavigationMethodQualifier.NavigationMethod;
import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density; import com.android.ide.eclipse.adt.internal.resources.configurations.PixelDensityQualifier.Density;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation; import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenOrientationQualifier.ScreenOrientation;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenRatioQualifier.ScreenRatio;
import com.android.ide.eclipse.adt.internal.resources.configurations.ScreenSizeQualifier.ScreenSize;
import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier.TextInputMethod; import com.android.ide.eclipse.adt.internal.resources.configurations.TextInputMethodQualifier.TextInputMethod;
import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier.TouchScreenType; import com.android.ide.eclipse.adt.internal.resources.configurations.TouchScreenQualifier.TouchScreenType;
import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager;
@@ -357,6 +362,8 @@ public class ConfigurationSelector extends Composite {
mUiMap.put(NetworkCodeQualifier.class, new MNCEdit(mQualifierEditParent)); mUiMap.put(NetworkCodeQualifier.class, new MNCEdit(mQualifierEditParent));
mUiMap.put(LanguageQualifier.class, new LanguageEdit(mQualifierEditParent)); mUiMap.put(LanguageQualifier.class, new LanguageEdit(mQualifierEditParent));
mUiMap.put(RegionQualifier.class, new RegionEdit(mQualifierEditParent)); mUiMap.put(RegionQualifier.class, new RegionEdit(mQualifierEditParent));
mUiMap.put(ScreenSizeQualifier.class, new ScreenSizeEdit(mQualifierEditParent));
mUiMap.put(ScreenRatioQualifier.class, new ScreenRatioEdit(mQualifierEditParent));
mUiMap.put(ScreenOrientationQualifier.class, new OrientationEdit(mQualifierEditParent)); mUiMap.put(ScreenOrientationQualifier.class, new OrientationEdit(mQualifierEditParent));
mUiMap.put(PixelDensityQualifier.class, new PixelDensityEdit(mQualifierEditParent)); mUiMap.put(PixelDensityQualifier.class, new PixelDensityEdit(mQualifierEditParent));
mUiMap.put(TouchScreenQualifier.class, new TouchEdit(mQualifierEditParent)); mUiMap.put(TouchScreenQualifier.class, new TouchEdit(mQualifierEditParent));
@@ -364,6 +371,7 @@ public class ConfigurationSelector extends Composite {
mUiMap.put(TextInputMethodQualifier.class, new TextInputEdit(mQualifierEditParent)); mUiMap.put(TextInputMethodQualifier.class, new TextInputEdit(mQualifierEditParent));
mUiMap.put(NavigationMethodQualifier.class, new NavigationEdit(mQualifierEditParent)); mUiMap.put(NavigationMethodQualifier.class, new NavigationEdit(mQualifierEditParent));
mUiMap.put(ScreenDimensionQualifier.class, new ScreenDimensionEdit(mQualifierEditParent)); mUiMap.put(ScreenDimensionQualifier.class, new ScreenDimensionEdit(mQualifierEditParent));
mUiMap.put(VersionQualifier.class, new VersionEdit(mQualifierEditParent));
} }
/** /**
@@ -846,6 +854,124 @@ public class ConfigurationSelector extends Composite {
} }
} }
/**
* Edit widget for {@link ScreenSizeQualifier}.
*/
private class ScreenSizeEdit extends QualifierEditBase {
private Combo mSize;
public ScreenSizeEdit(Composite parent) {
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());
}
mSize.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mSize.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
onScreenSizeChange();
}
public void widgetSelected(SelectionEvent e) {
onScreenSizeChange();
}
});
}
protected void onScreenSizeChange() {
// update the current config
int index = mSize.getSelectionIndex();
if (index != -1) {
mSelectedConfiguration.setScreenSizeQualifier(new ScreenSizeQualifier(
ScreenSize.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.setScreenSizeQualifier(
new ScreenSizeQualifier());
}
// notify of change
onChange(true /* keepSelection */);
}
@Override
public void setQualifier(ResourceQualifier qualifier) {
ScreenSizeQualifier q = (ScreenSizeQualifier)qualifier;
ScreenSize value = q.getValue();
if (value == null) {
mSize.clearSelection();
} else {
mSize.select(ScreenSize.getIndex(value));
}
}
}
/**
* Edit widget for {@link ScreenRatioQualifier}.
*/
private class ScreenRatioEdit extends QualifierEditBase {
private Combo mSize;
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());
}
mSize.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
mSize.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
onScreenRatioChange();
}
public void widgetSelected(SelectionEvent e) {
onScreenRatioChange();
}
});
}
protected void onScreenRatioChange() {
// update the current config
int index = mSize.getSelectionIndex();
if (index != -1) {
mSelectedConfiguration.setScreenRatioQualifier(new ScreenRatioQualifier(
ScreenRatio.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.setScreenRatioQualifier(
new ScreenRatioQualifier());
}
// notify of change
onChange(true /* keepSelection */);
}
@Override
public void setQualifier(ResourceQualifier qualifier) {
ScreenRatioQualifier q = (ScreenRatioQualifier)qualifier;
ScreenRatio value = q.getValue();
if (value == null) {
mSize.clearSelection();
} else {
mSize.select(ScreenRatio.getIndex(value));
}
}
}
/** /**
* Edit widget for {@link ScreenOrientationQualifier}. * Edit widget for {@link ScreenOrientationQualifier}.
*/ */
@@ -1271,4 +1397,68 @@ public class ConfigurationSelector extends Composite {
mSize2.setText(Integer.toString(q.getValue2())); mSize2.setText(Integer.toString(q.getValue2()));
} }
} }
/**
* Edit widget for {@link VersionQualifier}.
*/
private class VersionEdit extends QualifierEditBase {
private Text mText;
public VersionEdit(Composite parent) {
super(parent, VersionQualifier.NAME);
mText = new Text(this, SWT.BORDER);
mText.addVerifyListener(new MobileCodeVerifier());
mText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
onVersionChange();
}
});
mText.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
onVersionChange();
}
});
new Label(this, SWT.NONE).setText("(Platform API level)");
}
private void onVersionChange() {
String value = mText.getText();
if (value.length() == 0) {
// empty string, means a qualifier with no value.
// 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.setVersionQualifier(new VersionQualifier());
} else {
try {
VersionQualifier qualifier = VersionQualifier.getQualifier(
VersionQualifier.getFolderSegment(Integer.parseInt(value)));
if (qualifier != null) {
mSelectedConfiguration.setVersionQualifier(qualifier);
} else {
// Failure! Looks like the value is wrong
mSelectedConfiguration.setVersionQualifier(new VersionQualifier());
}
} catch (NumberFormatException nfe) {
// Looks like the code is not a number. This should not happen since the text
// field has a VerifyListener that prevents it.
mSelectedConfiguration.setVersionQualifier(new VersionQualifier());
}
}
// notify of change
onChange(true /* keepSelection */);
}
@Override
public void setQualifier(ResourceQualifier qualifier) {
VersionQualifier q = (VersionQualifier)qualifier;
mText.setText(Integer.toString(q.getVersion()));
}
}
} }