aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java35
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditorDelegate.java10
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/LayoutCanvas.java29
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/properties/XmlProperty.java6
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/AdtStartup.java2
5 files changed, 61 insertions, 21 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java
index 10cd093..48cebee 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java
@@ -211,8 +211,6 @@ public class AdtPlugin extends AbstractUIPlugin implements ILogger, ISdkLog {
public void start(BundleContext context) throws Exception {
super.start(context);
- Display display = getDisplay();
-
// set the default android console.
mAndroidConsole = new MessageConsole("Android", null); //$NON-NLS-1$
ConsolePlugin.getDefault().getConsoleManager().addConsoles(
@@ -221,17 +219,6 @@ public class AdtPlugin extends AbstractUIPlugin implements ILogger, ISdkLog {
// get the stream to write in the android console.
mAndroidConsoleStream = mAndroidConsole.newMessageStream();
mAndroidConsoleErrorStream = mAndroidConsole.newMessageStream();
- mRed = new Color(display, 0xFF, 0x00, 0x00);
-
- // because this can be run, in some cases, by a non ui thread, and because
- // changing the console properties update the ui, we need to make this change
- // in the ui thread.
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- mAndroidConsoleErrorStream.setColor(mRed);
- }
- });
// get the eclipse store
IPreferenceStore eclipseStore = getPreferenceStore();
@@ -303,12 +290,32 @@ public class AdtPlugin extends AbstractUIPlugin implements ILogger, ISdkLog {
DesignerPlugin.dispose();
- mRed.dispose();
+ if (mRed != null) {
+ mRed.dispose();
+ mRed = null;
+ }
+
synchronized (AdtPlugin.class) {
sPlugin = null;
}
}
+ /** Called when the workbench has been started */
+ public void workbenchStarted() {
+ Display display = getDisplay();
+ mRed = new Color(display, 0xFF, 0x00, 0x00);
+
+ // because this can be run, in some cases, by a non ui thread, and because
+ // changing the console properties update the ui, we need to make this change
+ // in the ui thread.
+ display.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ mAndroidConsoleErrorStream.setColor(mRed);
+ }
+ });
+ }
+
/**
* Returns the shared instance
*
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditorDelegate.java
index 8d7b02e..f904f6e 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditorDelegate.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditorDelegate.java
@@ -687,6 +687,16 @@ public class LayoutEditorDelegate extends CommonXmlDelegate
public void delegatePostPageChange(int newPageIndex) {
super.delegatePostPageChange(newPageIndex);
+ if (mGraphicalEditor != null) {
+ LayoutCanvas canvas = mGraphicalEditor.getCanvasControl();
+ if (canvas != null) {
+ IActionBars bars = getEditor().getEditorSite().getActionBars();
+ if (bars != null) {
+ canvas.updateGlobalActions(bars);
+ }
+ }
+ }
+
IFormPage page = getEditor().getActivePageInstance();
updateOutline(page);
}
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 2154179..371852c 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
@@ -16,6 +16,7 @@
package com.android.ide.eclipse.adt.internal.editors.layout.gle2;
+import com.android.annotations.NonNull;
import com.android.ide.common.api.INode;
import com.android.ide.common.api.Margins;
import com.android.ide.common.api.Point;
@@ -1213,16 +1214,30 @@ public class LayoutCanvas extends Canvas {
*
* @param bars the action bar for this canvas
*/
- public void updateGlobalActions(IActionBars bars) {
+ public void updateGlobalActions(@NonNull IActionBars bars) {
updateMenuActionState();
- assert bars != null;
- bars.setGlobalActionHandler(ActionFactory.CUT.getId(), mCutAction);
- bars.setGlobalActionHandler(ActionFactory.COPY.getId(), mCopyAction);
- bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), mPasteAction);
- bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), mDeleteAction);
- bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), mSelectAllAction);
ITextEditor editor = mEditorDelegate.getEditor().getStructuredTextEditor();
+ boolean graphical = getEditorDelegate().getEditor().getActivePage() == 0;
+ if (graphical) {
+ bars.setGlobalActionHandler(ActionFactory.CUT.getId(), mCutAction);
+ bars.setGlobalActionHandler(ActionFactory.COPY.getId(), mCopyAction);
+ bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), mPasteAction);
+ bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), mDeleteAction);
+ bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), mSelectAllAction);
+ } else {
+ bars.setGlobalActionHandler(ActionFactory.CUT.getId(),
+ editor.getAction(ActionFactory.CUT.getId()));
+ bars.setGlobalActionHandler(ActionFactory.COPY.getId(),
+ editor.getAction(ActionFactory.COPY.getId()));
+ bars.setGlobalActionHandler(ActionFactory.PASTE.getId(),
+ editor.getAction(ActionFactory.PASTE.getId()));
+ bars.setGlobalActionHandler(ActionFactory.DELETE.getId(),
+ editor.getAction(ActionFactory.DELETE.getId()));
+ bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(),
+ editor.getAction(ActionFactory.SELECT_ALL.getId()));
+ }
+
IAction undoAction = editor.getAction(ActionFactory.UNDO.getId());
bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undoAction);
IAction redoAction = editor.getAction(ActionFactory.REDO.getId());
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/properties/XmlProperty.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/properties/XmlProperty.java
index c846ea1..6591575 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/properties/XmlProperty.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/properties/XmlProperty.java
@@ -167,6 +167,9 @@ class XmlProperty extends Property {
Object s = null;
try {
Element element = (Element) mNode.getXmlNode();
+ if (element == null) {
+ return false;
+ }
String name = mDescriptor.getXmlLocalName();
String uri = mDescriptor.getNamespaceUri();
if (uri != null) {
@@ -182,6 +185,9 @@ class XmlProperty extends Property {
public String getStringValue() {
Element element = (Element) mNode.getXmlNode();
+ if (element == null) {
+ return null;
+ }
String name = mDescriptor.getXmlLocalName();
String uri = mDescriptor.getNamespaceUri();
Attr attr;
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/AdtStartup.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/AdtStartup.java
index f6dc870..0fcf102 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/AdtStartup.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/AdtStartup.java
@@ -68,6 +68,8 @@ public class AdtStartup implements IStartup {
}
initializeWindowCoordinator();
+
+ AdtPlugin.getDefault().workbenchStarted();
}
private boolean isFirstTime() {