diff options
author | Tor Norbye <tnorbye@google.com> | 2012-06-15 13:16:56 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-06-15 13:16:56 -0700 |
commit | c3d196041abe8a07cbbb99c7bcc1e29c6ced613f (patch) | |
tree | ba2e07b8353ac49b6a62f33ba87f3cf0fa99cab5 /eclipse | |
parent | fe8059195f93ccf31ed9eb5273550abbb13f41c7 (diff) | |
parent | 47412b5c2252df2624e5ff4ad2f9054af86c5065 (diff) | |
download | sdk-c3d196041abe8a07cbbb99c7bcc1e29c6ced613f.zip sdk-c3d196041abe8a07cbbb99c7bcc1e29c6ced613f.tar.gz sdk-c3d196041abe8a07cbbb99c7bcc1e29c6ced613f.tar.bz2 |
Merge "Misc bugfixes"
Diffstat (limited to 'eclipse')
12 files changed, 97 insertions, 49 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java index 4167010..7bcff46 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java @@ -20,6 +20,7 @@ import static java.awt.image.BufferedImage.TYPE_INT_ARGB; import com.android.assetstudiolib.ActionBarIconGenerator; import com.android.assetstudiolib.GraphicGenerator; +import com.android.assetstudiolib.GraphicGenerator.Shape; import com.android.assetstudiolib.GraphicGeneratorContext; import com.android.assetstudiolib.LauncherIconGenerator; import com.android.assetstudiolib.MenuIconGenerator; @@ -546,7 +547,14 @@ public class ConfigureAssetSetPage extends WizardPage implements SelectionListen } setSourceType(mValues.sourceType); + + // Shape=NONE does not apply for notification icons; it's needed for API < 9 + if (mValues.shape == Shape.NONE && mValues.type == AssetType.NOTIFICATION) { + mValues.shape = Shape.SQUARE; + } + setShape(mValues.shape); + mNoShapeRadio.setEnabled(mValues.type != AssetType.NOTIFICATION); if (mValues.sourceType == SourceType.CLIPART && mValues.clipartName != null) { 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 5330752..070fc20 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 @@ -883,9 +883,10 @@ public class ConfigurationComposite extends Composite implements SelectionListen } private void onSelectActivity() { - String activity = getSelectedActivity();; + String activity = getSelectedActivity(); mState.activity = activity; saveState(); + storeState(); if (activity == null) { return; @@ -923,7 +924,25 @@ public class ConfigurationComposite extends Composite implements SelectionListen private String getActivityLabel(String fqcn, boolean brief) { if (brief) { - return fqcn.substring(fqcn.lastIndexOf('.') + 1); + String label = fqcn; + int packageIndex = label.lastIndexOf('.'); + if (packageIndex != -1) { + label = label.substring(packageIndex + 1); + } + int innerClass = label.lastIndexOf('$'); + if (innerClass != -1) { + label = label.substring(innerClass + 1); + } + + // Also strip out the "Activity" or "Fragment" common suffix + // if this is a long name + if (label.endsWith("Activity") && label.length() > 8 + 12) { // 12 chars + 8 in suffix + label = label.substring(0, label.length() - 8); + } else if (label.endsWith("Fragment") && label.length() > 8 + 12) { + label = label.substring(0, label.length() - 8); + } + + return label; } return fqcn; 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 addb8bd..fcb39fb 100644 --- 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 @@ -145,6 +145,7 @@ import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.INullSelectionListener; +import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; @@ -1218,6 +1219,11 @@ public class GraphicalEditorPart extends EditorPart */ public void deactivated() { mActive = false; + + LayoutCanvas canvas = getCanvasControl(); + if (canvas != null) { + canvas.deactivated(); + } } /** diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutActionBar.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutActionBar.java index 63a36f2..13f6cec 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutActionBar.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutActionBar.java @@ -608,7 +608,7 @@ public class LayoutActionBar extends Composite { if (!current.equals(existing)) { mLintToolBar.setData(current); boolean layout = false; - boolean hasLintWarnings = markerCount > 0; + boolean hasLintWarnings = markerCount > 0 && AdtPrefs.getPrefs().isLintOnSave(); if (layoutData.exclude == hasLintWarnings) { layoutData.exclude = !hasLintWarnings; mLintToolBar.setVisible(hasLintWarnings); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutCanvas.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutCanvas.java index f218069..91a55fd 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutCanvas.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutCanvas.java @@ -233,6 +233,9 @@ public class LayoutCanvas extends Canvas { */ private ClipboardSupport mClipboardSupport; + /** Tooltip manager for lint warnings */ + private LintTooltipManager mLintTooltipManager; + public LayoutCanvas(LayoutEditorDelegate editorDelegate, RulesEngine rulesEngine, Composite parent, @@ -338,7 +341,8 @@ public class LayoutCanvas extends Canvas { mOutlinePage = editorDelegate.getGraphicalOutline(); } - new LintTooltipManager(this).register(); + mLintTooltipManager = new LintTooltipManager(this); + mLintTooltipManager.register(); } private Runnable mZoomCheck = new Runnable() { @@ -402,6 +406,11 @@ public class LayoutCanvas extends Canvas { mGestureManager.unregisterListeners(mDragSource, mDropTarget); + if (mLintTooltipManager != null) { + mLintTooltipManager.unregister(); + mLintTooltipManager = null; + } + if (mDropTarget != null) { mDropTarget.dispose(); mDropTarget = null; @@ -1491,4 +1500,13 @@ public class LayoutCanvas extends Canvas { AdtPlugin.printToConsole("Canvas", String.format(message, params)); } } + + /** The associated editor has been deactivated */ + public void deactivated() { + // Force the tooltip to be hidden. If you switch from the layout editor + // to a Java editor with the keyboard, the tooltip can stay open. + if (mLintTooltipManager != null) { + mLintTooltipManager.hide(); + } + } } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutWindowCoordinator.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutWindowCoordinator.java index a0672c6..5375dea 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutWindowCoordinator.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutWindowCoordinator.java @@ -308,31 +308,8 @@ public class LayoutWindowCoordinator implements IPartListener2 { } } - // Does this look like a window getting maximized? If so, show the editor - // outline and propertysheet views! - // (Note: We can't use activePage.isPageZoomed() here because the state flag - // is updated too late so querying it here gives us the previous state) - IViewReference[] viewReferences = activePage.getViewReferences(); - int visibleCount = 0; - for (IViewReference reference : viewReferences) { - IWorkbenchPart part = reference.getPart(false /*restore*/); - if (part != null && activePage.isPartVisible(part)) { - visibleCount++; - if (visibleCount > 1) { - break; - } - } - } - - boolean wasMaximized = mEditorMaximized; - mEditorMaximized = visibleCount <= 1; - if (mEditorMaximized && !wasMaximized) { - // Only consider -maximizing- the window to be occasion for handling - // a "property sheet closed" event as a "show outline. - // And in fact we may want to remove it once you re-expose things - // in this mode! - syncActive(); - } + // Does this look like a window getting maximized? + syncMaximizedState(activePage); } @Override diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintOverlay.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintOverlay.java index d5d5ce7..7ddb372 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintOverlay.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintOverlay.java @@ -18,6 +18,7 @@ package com.android.ide.eclipse.adt.internal.editors.layout.gle2; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate; +import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs; import org.eclipse.core.resources.IMarker; import org.eclipse.swt.graphics.GC; @@ -54,6 +55,11 @@ public class LintOverlay extends Overlay { } @Override + public boolean isHiding() { + return super.isHiding() || !AdtPrefs.getPrefs().isLintOnSave(); + } + + @Override public void paint(GC gc) { LayoutEditorDelegate editor = mCanvas.getEditorDelegate(); Collection<Node> nodes = editor.getLintNodes(); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintTooltipManager.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintTooltipManager.java index a2bbdf4..f719358 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintTooltipManager.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LintTooltipManager.java @@ -20,6 +20,7 @@ import static com.android.ide.eclipse.adt.internal.editors.layout.gle2.LintOverl import com.android.annotations.Nullable; import com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.layout.uimodel.UiViewElementNode; +import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; @@ -56,10 +57,12 @@ class LintTooltipManager implements Listener { } void unregister() { - mCanvas.removeListener(SWT.Dispose, this); - mCanvas.removeListener(SWT.KeyDown, this); - mCanvas.removeListener(SWT.MouseMove, this); - mCanvas.removeListener(SWT.MouseHover, this); + if (!mCanvas.isDisposed()) { + mCanvas.removeListener(SWT.Dispose, this); + mCanvas.removeListener(SWT.KeyDown, this); + mCanvas.removeListener(SWT.MouseMove, this); + mCanvas.removeListener(SWT.MouseHover, this); + } } @Override @@ -97,7 +100,7 @@ class LintTooltipManager implements Listener { } } - private void hide() { + void hide() { if (mTip != null) { mTip.dispose(); mTip = null; @@ -116,6 +119,10 @@ class LintTooltipManager implements Listener { private void show(List<UiViewElementNode> nodes) { hide(); + if (!AdtPrefs.getPrefs().isLintOnSave()) { + return; + } + mTip = new LintTooltip(mCanvas, nodes); Rectangle rect = mCanvas.getBounds(); Point size = mTip.computeSize(SWT.DEFAULT, SWT.DEFAULT); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/ViewMetadataRepository.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/ViewMetadataRepository.java index 45698eb..eed9e34 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/ViewMetadataRepository.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/ViewMetadataRepository.java @@ -16,13 +16,15 @@ package com.android.ide.eclipse.adt.internal.editors.layout.gre; -import static com.android.util.XmlUtils.ANDROID_URI; import static com.android.ide.common.layout.LayoutConstants.ATTR_ID; import static com.android.ide.common.layout.LayoutConstants.FQCN_BUTTON; import static com.android.ide.common.layout.LayoutConstants.FQCN_SPINNER; import static com.android.ide.common.layout.LayoutConstants.FQCN_TOGGLE_BUTTON; import static com.android.ide.common.layout.LayoutConstants.ID_PREFIX; import static com.android.ide.common.layout.LayoutConstants.NEW_ID_PREFIX; +import static com.android.ide.eclipse.adt.internal.editors.layout.descriptors.LayoutDescriptors.VIEW_FRAGMENT; +import static com.android.ide.eclipse.adt.internal.editors.layout.descriptors.LayoutDescriptors.VIEW_INCLUDE; +import static com.android.util.XmlUtils.ANDROID_URI; import com.android.annotations.VisibleForTesting; import com.android.ide.common.api.IViewMetadata.FillPreference; @@ -550,7 +552,11 @@ public class ViewMetadataRepository { break; } } - assert found : basename; + if (basename.equals(VIEW_FRAGMENT) || basename.equals(VIEW_INCLUDE)) { + result.add(basename); + } else { + assert found : basename; + } } return result; diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/extra-view-metadata.xml b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/extra-view-metadata.xml index 3e369a6..db3bd7b 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/extra-view-metadata.xml +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gre/extra-view-metadata.xml @@ -211,13 +211,15 @@ class="include" topAttrs="layout" name="Include Other Layout" - render="skip" /> + render="skip" + relatedTo="fragment" /> <view class="fragment" topAttrs="class,name" name="Fragment" fill="opposite" - render="skip" /> + render="skip" + relatedTo="include" /> <view class="android.widget.TableLayout" topAttrs="stretchColumns,shrinkColumns,orientation" diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/ChangeViewRefactoring.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/ChangeViewRefactoring.java index 9cf3a3f..2102bf9 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/ChangeViewRefactoring.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/refactoring/ChangeViewRefactoring.java @@ -15,11 +15,13 @@ */ package com.android.ide.eclipse.adt.internal.editors.layout.refactoring; -import static com.android.util.XmlUtils.ANDROID_URI; import static com.android.ide.common.layout.LayoutConstants.ANDROID_WIDGET_PREFIX; import static com.android.ide.common.layout.LayoutConstants.ATTR_LAYOUT_PREFIX; import static com.android.ide.common.layout.LayoutConstants.ATTR_TEXT; import static com.android.ide.eclipse.adt.AdtConstants.EXT_XML; +import static com.android.ide.eclipse.adt.internal.editors.layout.descriptors.LayoutDescriptors.VIEW_FRAGMENT; +import static com.android.ide.eclipse.adt.internal.editors.layout.descriptors.LayoutDescriptors.VIEW_INCLUDE; +import static com.android.util.XmlUtils.ANDROID_URI; import com.android.annotations.NonNull; import com.android.annotations.VisibleForTesting; @@ -266,7 +268,8 @@ public class ChangeViewRefactoring extends VisualRefactoring { List<String> types = new ArrayList<String>(); for (Element primary : getElements()) { String oldType = primary.getTagName(); - if (oldType.indexOf('.') == -1) { + if (oldType.indexOf('.') == -1 + && !oldType.equals(VIEW_INCLUDE) && !oldType.equals(VIEW_FRAGMENT)) { oldType = ANDROID_WIDGET_PREFIX + oldType; } types.add(oldType); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectCreator.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectCreator.java index 41c88d7..04225ab 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectCreator.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/NewProjectCreator.java @@ -1137,18 +1137,14 @@ public class NewProjectCreator { if (!file.exists()) { copyFile(JAVA_ACTIVITY_TEMPLATE, file, java_activity_parameters, monitor, false); } - } - // create the layout file - IFolder layoutfolder = project.getFolder(RES_DIRECTORY).getFolder(LAYOUT_DIRECTORY); - IFile file = layoutfolder.getFile(MAIN_LAYOUT_XML); - if (!file.exists()) { - copyFile(LAYOUT_TEMPLATE, file, parameters, monitor, true); - if (activityName != null) { + // create the layout file (if we're creating an + IFolder layoutfolder = project.getFolder(RES_DIRECTORY).getFolder(LAYOUT_DIRECTORY); + file = layoutfolder.getFile(MAIN_LAYOUT_XML); + if (!file.exists()) { + copyFile(LAYOUT_TEMPLATE, file, parameters, monitor, true); dictionary.put(STRING_HELLO_WORLD, String.format("Hello World, %1$s!", activityName)); - } else { - dictionary.put(STRING_HELLO_WORLD, "Hello World!"); } } } |