diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/TargetMenuListener.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/TargetMenuListener.java | 54 |
1 files changed, 50 insertions, 4 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/TargetMenuListener.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/TargetMenuListener.java index cae6596..71905f7 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/TargetMenuListener.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/configuration/TargetMenuListener.java @@ -18,6 +18,8 @@ package com.android.ide.eclipse.adt.internal.editors.layout.configuration; import com.android.annotations.NonNull; import com.android.annotations.Nullable; +import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs; +import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; import org.eclipse.swt.SWT; @@ -30,6 +32,7 @@ import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.ToolItem; import java.util.List; +import java.util.RandomAccess; /** * The {@linkplain TargetMenuListener} class is responsible for @@ -38,17 +41,36 @@ import java.util.List; class TargetMenuListener extends SelectionAdapter { private final ConfigurationChooser mConfigChooser; private final IAndroidTarget mTarget; + private final boolean mPickBest; TargetMenuListener( @NonNull ConfigurationChooser configChooser, - @Nullable IAndroidTarget target) { + @Nullable IAndroidTarget target, + boolean pickBest) { mConfigChooser = configChooser; mTarget = target; + mPickBest = pickBest; } @Override public void widgetSelected(SelectionEvent e) { - mConfigChooser.selectTarget(mTarget); + IAndroidTarget target = mTarget; + AdtPrefs prefs = AdtPrefs.getPrefs(); + if (mPickBest) { + boolean autoPick = prefs.isAutoPickRenderTarget(); + autoPick = !autoPick; + prefs.setAutoPickRenderTarget(autoPick); + if (autoPick) { + target = ConfigurationMatcher.findDefaultRenderTarget(mConfigChooser); + } else { + // Turn it off, but keep current target until another one is chosen + return; + } + } else { + // Manually picked some other target: turn off auto-pick + prefs.setAutoPickRenderTarget(false); + } + mConfigChooser.selectTarget(target); mConfigChooser.onRenderingTargetChange(); } @@ -57,8 +79,32 @@ class TargetMenuListener extends SelectionAdapter { Configuration configuration = chooser.getConfiguration(); IAndroidTarget current = configuration.getTarget(); List<IAndroidTarget> targets = chooser.getTargetList(); + boolean haveRecent = false; + + MenuItem menuItem = new MenuItem(menu, SWT.CHECK); + menuItem.setText("Automatically Pick Best"); + menuItem.addSelectionListener(new TargetMenuListener(chooser, null, true)); + if (AdtPrefs.getPrefs().isAutoPickRenderTarget()) { + menuItem.setSelection(true); + } + + @SuppressWarnings("unused") + MenuItem separator = new MenuItem(menu, SWT.SEPARATOR); + + // Process in reverse order: most important targets first + assert targets instanceof RandomAccess; + for (int i = targets.size() - 1; i >= 0; i--) { + IAndroidTarget target = targets.get(i); + + AndroidVersion version = target.getVersion(); + if (version.getApiLevel() >= 7) { + haveRecent = true; + } else if (haveRecent) { + // Don't show ancient rendering targets; they're pretty broken + // (unless of course all you have are ancient targets) + break; + } - for (final IAndroidTarget target : targets) { String title = ConfigurationChooser.getRenderingTargetLabel(target, false); MenuItem item = new MenuItem(menu, SWT.CHECK); item.setText(title); @@ -68,7 +114,7 @@ class TargetMenuListener extends SelectionAdapter { item.setSelection(true); } - item.addSelectionListener(new TargetMenuListener(chooser, target)); + item.addSelectionListener(new TargetMenuListener(chooser, target, false)); } Rectangle bounds = combo.getBounds(); |