diff options
author | Raphael <raphael@google.com> | 2012-01-17 14:52:09 -0800 |
---|---|---|
committer | Raphael <raphael@google.com> | 2012-01-19 13:22:46 -0800 |
commit | 7d7b8fb5d49f986d0e01619829ae3f4f82df46ce (patch) | |
tree | 44a717d64b0bf0c5126dc2624c86301e7d1e25e4 /eclipse | |
parent | 4c07263da057b6014342089097a3a4c6ebe993d2 (diff) | |
download | sdk-7d7b8fb5d49f986d0e01619829ae3f4f82df46ce.zip sdk-7d7b8fb5d49f986d0e01619829ae3f4f82df46ce.tar.gz sdk-7d7b8fb5d49f986d0e01619829ae3f4f82df46ce.tar.bz2 |
ADT: Refactor common parts of the EditorDelegates.
Change-Id: I439a81f8c05cacc257697d2cb0ac7f1e99b65439
Diffstat (limited to 'eclipse')
9 files changed, 155 insertions, 429 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidXmlCommonEditor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidXmlCommonEditor.java index 5f07ba5..0bf1c34 100755 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidXmlCommonEditor.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidXmlCommonEditor.java @@ -16,16 +16,19 @@ package com.android.ide.eclipse.adt.internal.editors; +import com.android.ide.common.resources.ResourceFolder; import com.android.ide.eclipse.adt.AdtConstants; import com.android.ide.eclipse.adt.AdtPlugin; import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate.IXmlEditorCreator; import com.android.ide.eclipse.adt.internal.editors.animator.AnimationEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.color.ColorEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.drawable.DrawableEditorDelegate; -import com.android.ide.eclipse.adt.internal.editors.menu.MenuEditorDelegator; +import com.android.ide.eclipse.adt.internal.editors.menu.MenuEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.resources.ResourcesEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; import com.android.ide.eclipse.adt.internal.editors.xml.OtherXmlEditorDelegate; +import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; +import com.android.resources.ResourceFolderType; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IProgressMonitor; @@ -64,7 +67,7 @@ public class AndroidXmlCommonEditor extends AndroidXmlEditor implements IShowEdi new AnimationEditorDelegate.Creator(), new ColorEditorDelegate.Creator(), new DrawableEditorDelegate.Creator(), - new MenuEditorDelegator.Creator(), + new MenuEditorDelegate.Creator(), new OtherXmlEditorDelegate.Creator(), }; @@ -97,8 +100,11 @@ public class AndroidXmlCommonEditor extends AndroidXmlEditor implements IShowEdi } } + ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(file); + ResourceFolderType type = resFolder == null ? null : resFolder.getType(); + for (IXmlEditorCreator creator : DELEGATES) { - mDelegate = creator.createForFile(this, fileInput); + mDelegate = creator.createForFile(this, fileInput, type); if (mDelegate != null) { return; } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlEditorDelegate.java index 8aa8985..4b96b3c 100755 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlEditorDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlEditorDelegate.java @@ -19,11 +19,13 @@ package com.android.ide.eclipse.adt.internal.editors; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; +import com.android.resources.ResourceFolderType; +import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.part.FileEditorInput; import org.w3c.dom.Document; /** @@ -34,6 +36,12 @@ import org.w3c.dom.Document; */ public abstract class XmlEditorDelegate { + /** The editor that created the delegate. Never null. */ + private final AndroidXmlCommonEditor mEditor; + + /** Root node of the UI element hierarchy. Can be null. */ + private UiElementNode mUiRootNode; + /** * Static creator for {@link XmlEditorDelegate}s. Delegates implement a method * that will decide whether this delegate can be created for the given file input. @@ -45,11 +53,21 @@ public abstract class XmlEditorDelegate { * * @param delegator The non-null instance of {@link AndroidXmlCommonEditor}. * @param input A non-null input file. + * @param type The {@link ResourceFolderType} of the folder containing the file, + * if it can be determined. Null otherwise. * @return A new delegate that can handle that file or null. */ public @Nullable <T extends XmlEditorDelegate> T createForFile( @NonNull AndroidXmlCommonEditor delegator, - @NonNull IFileEditorInput input); + @NonNull IFileEditorInput input, + @Nullable ResourceFolderType type); + } + + public XmlEditorDelegate(AndroidXmlCommonEditor editor) { + mEditor = editor; + } + + public void dispose() { } /** @@ -57,29 +75,30 @@ public abstract class XmlEditorDelegate { * * @return the editor that created this delegate. Never null. */ - public abstract @NonNull AndroidXmlCommonEditor getEditor(); - - - // ---- Common Methods, used by all XML editors - - public abstract void dispose(); + public @NonNull AndroidXmlCommonEditor getEditor() { + return mEditor; + } /** * @return The root node of the UI element hierarchy */ - public abstract UiElementNode getUiRootNode(); + public UiElementNode getUiRootNode() { + return mUiRootNode; + } + + protected void setUiRootNode(UiElementNode uiRootNode) { + mUiRootNode = uiRootNode; + } + /** Called to compute the initial {@code UiRootNode}. */ public abstract void initUiRootNode(boolean force); /** - * Returns whether the "save as" operation is supported by this editor. - * <p/> - * Save-As is a valid operation for the ManifestEditor since it acts on a - * single source file. - * - * @see IEditorPart + * Returns true, indicating the "save as" operation is supported by this editor. */ - public abstract boolean isSaveAsAllowed(); + public boolean isSaveAsAllowed() { + return true; + } /** * Create the various form pages. @@ -90,7 +109,16 @@ public abstract class XmlEditorDelegate { // pass } - public abstract void setInput(IEditorInput input); + /** + * Changes the tab/title name to include the project name. + */ + public void setInput(IEditorInput input) { + if (input instanceof FileEditorInput) { + FileEditorInput fileInput = (FileEditorInput) input; + IFile file = fileInput.getFile(); + getEditor().setPartName(String.format("%1$s", file.getName())); + } + } /** * Processes the new XML Model, which XML root node is given. diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlLayoutEditDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlLayoutEditDelegate.java index c9b5fd8..151dcb9 100755 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlLayoutEditDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/XmlLayoutEditDelegate.java @@ -32,6 +32,10 @@ import org.eclipse.ui.IEditorInput; */ public abstract class XmlLayoutEditDelegate extends XmlEditorDelegate { + public XmlLayoutEditDelegate(AndroidXmlCommonEditor editor) { + super(editor); + } + public abstract void setInputWithNotify(IEditorInput input); /** diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/animator/AnimationEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/animator/AnimationEditorDelegate.java index d97eb86..28d1a96 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/animator/AnimationEditorDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/animator/AnimationEditorDelegate.java @@ -18,20 +18,15 @@ package com.android.ide.eclipse.adt.internal.editors.animator; import static com.android.ide.eclipse.adt.AdtConstants.EDITORS_NAMESPACE; -import com.android.ide.common.resources.ResourceFolder; -import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; +import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.descriptors.DocumentDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; -import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; -import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData; import com.android.resources.ResourceFolderType; import org.eclipse.core.resources.IFile; -import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.part.FileEditorInput; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -48,11 +43,8 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { @SuppressWarnings("unchecked") public AnimationEditorDelegate createForFile( AndroidXmlCommonEditor delegator, - IFileEditorInput input) { - // get the IFile object and check it's the desired sub-resource folder - IFile iFile = input.getFile(); - ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(iFile); - ResourceFolderType type = resFolder == null ? null : resFolder.getType(); + IFileEditorInput input, + ResourceFolderType type) { if (ResourceFolderType.ANIM == type || ResourceFolderType.ANIMATOR == type) { return new AnimationEditorDelegate(delegator); } @@ -63,41 +55,15 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { /** * Old standalone-editor ID. - * @deprecated Use {@link AndroidXmlCommonEditor#ID} instead. + * Use {@link AndroidXmlCommonEditor#ID} instead. */ - @Deprecated public static final String OLD_STANDALONE_EDITOR_ID = EDITORS_NAMESPACE + ".animator.AnimationEditor"; //$NON-NLS-1$ - /** Root node of the UI element hierarchy */ - private UiElementNode mUiRootNode; /** The tag used at the root */ private String mRootTag; - private final AndroidXmlCommonEditor mDelegator; - - public AnimationEditorDelegate(AndroidXmlCommonEditor delegator) { - mDelegator = delegator; - } - - - @Override - public AndroidXmlCommonEditor getEditor() { - return mDelegator; - } - - @Override - public void dispose() { - // pass - } - - @Override - public UiElementNode getUiRootNode() { - return mUiRootNode; - } - - @Override - public boolean isSaveAsAllowed() { - return true; + public AnimationEditorDelegate(AndroidXmlCommonEditor editor) { + super(editor); } @Override @@ -112,18 +78,6 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { */ } - /* (non-java doc) - * Change the tab/title name to include the project name. - */ - @Override - public void setInput(IEditorInput input) { - if (input instanceof FileEditorInput) { - FileEditorInput fileInput = (FileEditorInput) input; - IFile file = fileInput.getFile(); - mDelegator.setPartName(String.format("%1$s", file.getName())); - } - } - /** * Processes the new XML Model. * @@ -140,7 +94,7 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { initUiRootNode(false /*force*/); if (mRootTag != null - && !mRootTag.equals(mUiRootNode.getDescriptor().getXmlLocalName())) { + && !mRootTag.equals(getUiRootNode().getDescriptor().getXmlLocalName())) { AndroidTargetData data = getEditor().getTargetData(); if (data != null) { ElementDescriptor descriptor; @@ -152,27 +106,27 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { // Replace top level node now that we know the actual type // Disconnect from old - mUiRootNode.setEditor(null); - mUiRootNode.setXmlDocument(null); + getUiRootNode().setEditor(null); + getUiRootNode().setXmlDocument(null); // Create new - mUiRootNode = descriptor.createUiNode(); - mUiRootNode.setXmlDocument(xmlDoc); - mUiRootNode.setEditor(mDelegator); + setUiRootNode(descriptor.createUiNode()); + getUiRootNode().setXmlDocument(xmlDoc); + getUiRootNode().setEditor(getEditor()); } } - if (mUiRootNode.getDescriptor() instanceof DocumentDescriptor) { - mUiRootNode.loadFromXmlNode(xmlDoc); + if (getUiRootNode().getDescriptor() instanceof DocumentDescriptor) { + getUiRootNode().loadFromXmlNode(xmlDoc); } else { - mUiRootNode.loadFromXmlNode(rootElement); + getUiRootNode().loadFromXmlNode(rootElement); } } @Override public void initUiRootNode(boolean force) { // The manifest UI node is always created, even if there's no corresponding XML node. - if (mUiRootNode == null || force) { + if (getUiRootNode() == null || force) { ElementDescriptor descriptor; boolean reload = false; AndroidTargetData data = getEditor().getTargetData(); @@ -186,8 +140,8 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { } reload = true; } - mUiRootNode = descriptor.createUiNode(); - mUiRootNode.setEditor(mDelegator); + setUiRootNode(descriptor.createUiNode()); + getUiRootNode().setEditor(getEditor()); if (reload) { onDescriptorsChanged(); @@ -196,7 +150,7 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { } private ResourceFolderType getFolderType() { - IFile inputFile = mDelegator.getInputFile(); + IFile inputFile = getEditor().getInputFile(); if (inputFile != null) { String folderName = inputFile.getParent().getName(); return ResourceFolderType.getFolderType(folderName); @@ -205,11 +159,11 @@ public class AnimationEditorDelegate extends XmlEditorDelegate { } private void onDescriptorsChanged() { - IStructuredModel model = mDelegator.getModelForRead(); + IStructuredModel model = getEditor().getModelForRead(); if (model != null) { try { - Node node = mDelegator.getXmlDocument(model).getDocumentElement(); - mUiRootNode.reloadFromXmlNode(node); + Node node = getEditor().getXmlDocument(model).getDocumentElement(); + getUiRootNode().reloadFromXmlNode(node); } finally { model.releaseFromRead(); } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/color/ColorEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/color/ColorEditorDelegate.java index 4e924a3..5e83eb8 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/color/ColorEditorDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/color/ColorEditorDelegate.java @@ -18,19 +18,13 @@ package com.android.ide.eclipse.adt.internal.editors.color; import static com.android.ide.eclipse.adt.AdtConstants.EDITORS_NAMESPACE; -import com.android.ide.common.resources.ResourceFolder; -import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; +import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; -import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; -import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData; import com.android.resources.ResourceFolderType; -import org.eclipse.core.resources.IFile; -import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.part.FileEditorInput; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -47,11 +41,8 @@ public class ColorEditorDelegate extends XmlEditorDelegate { @SuppressWarnings("unchecked") public ColorEditorDelegate createForFile( AndroidXmlCommonEditor delegator, - IFileEditorInput input) { - // get the IFile object and check it's the desired sub-resource folder - IFile iFile = input.getFile(); - ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(iFile); - ResourceFolderType type = resFolder == null ? null : resFolder.getType(); + IFileEditorInput input, + ResourceFolderType type) { if (ResourceFolderType.COLOR.equals(type)) { return new ColorEditorDelegate(delegator); } @@ -62,39 +53,13 @@ public class ColorEditorDelegate extends XmlEditorDelegate { /** * Old standalone-editor ID. - * @deprecated Use {@link AndroidXmlCommonEditor#ID} instead. + * Use {@link AndroidXmlCommonEditor#ID} instead. */ - @Deprecated public static final String OLD_STANDALONE_EDITOR_ID = EDITORS_NAMESPACE + ".color.ColorEditor"; //$NON-NLS-1$ - /** Root node of the UI element hierarchy */ - private UiElementNode mUiRootNode; - - private final AndroidXmlCommonEditor mDelegator; - - public ColorEditorDelegate(AndroidXmlCommonEditor delegator) { - super(); - mDelegator = delegator; - } - - @Override - public AndroidXmlCommonEditor getEditor() { - return mDelegator; - } - @Override - public void dispose() { - // pass - } - - @Override - public UiElementNode getUiRootNode() { - return mUiRootNode; - } - - @Override - public boolean isSaveAsAllowed() { - return true; + public ColorEditorDelegate(AndroidXmlCommonEditor editor) { + super(editor); } @Override @@ -107,19 +72,6 @@ public class ColorEditorDelegate extends XmlEditorDelegate { AdtPlugin.getDefault().getLog().log(e.getStatus()); } */ - } - - /* (non-java doc) - * Change the tab/title name to include the project name. - */ - @Override - public void setInput(IEditorInput input) { - if (input instanceof FileEditorInput) { - FileEditorInput fileInput = (FileEditorInput) input; - IFile file = fileInput.getFile(); - getEditor().setPartName(String.format("%1$s", - file.getName())); - } } @Override @@ -128,13 +80,13 @@ public class ColorEditorDelegate extends XmlEditorDelegate { initUiRootNode(false /*force*/); Element rootElement = xmlDoc.getDocumentElement(); - mUiRootNode.loadFromXmlNode(rootElement); + getUiRootNode().loadFromXmlNode(rootElement); } @Override public void initUiRootNode(boolean force) { // The manifest UI node is always created, even if there's no corresponding XML node. - if (mUiRootNode == null || force) { + if (getUiRootNode() == null || force) { ElementDescriptor descriptor; AndroidTargetData data = getEditor().getTargetData(); if (data == null) { @@ -142,8 +94,8 @@ public class ColorEditorDelegate extends XmlEditorDelegate { } else { descriptor = data.getColorDescriptors().getDescriptor(); } - mUiRootNode = descriptor.createUiNode(); - mUiRootNode.setEditor(getEditor()); + setUiRootNode(descriptor.createUiNode()); + getUiRootNode().setEditor(getEditor()); onDescriptorsChanged(); } } @@ -153,7 +105,7 @@ public class ColorEditorDelegate extends XmlEditorDelegate { if (model != null) { try { Node node = getEditor().getXmlDocument(model).getDocumentElement(); - mUiRootNode.reloadFromXmlNode(node); + getUiRootNode().reloadFromXmlNode(node); } finally { model.releaseFromRead(); } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/drawable/DrawableEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/drawable/DrawableEditorDelegate.java index 2c8bc1a..7b89d32 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/drawable/DrawableEditorDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/drawable/DrawableEditorDelegate.java @@ -18,20 +18,14 @@ package com.android.ide.eclipse.adt.internal.editors.drawable; import static com.android.ide.eclipse.adt.AdtConstants.EDITORS_NAMESPACE; -import com.android.ide.common.resources.ResourceFolder; -import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; +import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.descriptors.DocumentDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; -import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; -import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData; import com.android.resources.ResourceFolderType; -import org.eclipse.core.resources.IFile; -import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.part.FileEditorInput; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -48,11 +42,8 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { @SuppressWarnings("unchecked") public DrawableEditorDelegate createForFile( AndroidXmlCommonEditor delegator, - IFileEditorInput input) { - // get the IFile object and check it's the desired sub-resource folder - IFile iFile = input.getFile(); - ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(iFile); - ResourceFolderType type = resFolder == null ? null : resFolder.getType(); + IFileEditorInput input, + ResourceFolderType type) { if (ResourceFolderType.DRAWABLE.equals(type)) { return new DrawableEditorDelegate(delegator); } @@ -63,44 +54,18 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { /** * Old standalone-editor ID. - * @deprecated Use {@link AndroidXmlCommonEditor#ID} instead. + * Use {@link AndroidXmlCommonEditor#ID} instead. */ - @Deprecated public static final String OLD_STANDALONE_EDITOR_ID = EDITORS_NAMESPACE + ".drawable.DrawableEditor"; //$NON-NLS-1$ - /** Root node of the UI element hierarchy */ - private UiElementNode mUiRootNode; /** The tag used at the root */ private String mRootTag; - private final AndroidXmlCommonEditor mDelegator; - /** * Creates the form editor for resources XML files. */ - public DrawableEditorDelegate(AndroidXmlCommonEditor delegator) { - super(); - mDelegator = delegator; - } - - @Override - public AndroidXmlCommonEditor getEditor() { - return mDelegator; - } - - @Override - public void dispose() { - // pass - } - - @Override - public UiElementNode getUiRootNode() { - return mUiRootNode; - } - - @Override - public boolean isSaveAsAllowed() { - return true; + public DrawableEditorDelegate(AndroidXmlCommonEditor editor) { + super(editor); } @Override @@ -116,15 +81,6 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { } @Override - public void setInput(IEditorInput input) { - if (input instanceof FileEditorInput) { - FileEditorInput fileInput = (FileEditorInput) input; - IFile file = fileInput.getFile(); - getEditor().setPartName(String.format("%1$s", file.getName())); - } - } - - @Override public void xmlModelChanged(Document xmlDoc) { Element rootElement = xmlDoc.getDocumentElement(); if (rootElement != null) { @@ -134,7 +90,7 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { initUiRootNode(false /*force*/); if (mRootTag != null - && !mRootTag.equals(mUiRootNode.getDescriptor().getXmlLocalName())) { + && !mRootTag.equals(getUiRootNode().getDescriptor().getXmlLocalName())) { AndroidTargetData data = getEditor().getTargetData(); if (data != null) { ElementDescriptor descriptor = @@ -142,27 +98,27 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { // Replace top level node now that we know the actual type // Disconnect from old - mUiRootNode.setEditor(null); - mUiRootNode.setXmlDocument(null); + getUiRootNode().setEditor(null); + getUiRootNode().setXmlDocument(null); // Create new - mUiRootNode = descriptor.createUiNode(); - mUiRootNode.setXmlDocument(xmlDoc); - mUiRootNode.setEditor(getEditor()); + setUiRootNode(descriptor.createUiNode()); + getUiRootNode().setXmlDocument(xmlDoc); + getUiRootNode().setEditor(getEditor()); } } - if (mUiRootNode.getDescriptor() instanceof DocumentDescriptor) { - mUiRootNode.loadFromXmlNode(xmlDoc); + if (getUiRootNode().getDescriptor() instanceof DocumentDescriptor) { + getUiRootNode().loadFromXmlNode(xmlDoc); } else { - mUiRootNode.loadFromXmlNode(rootElement); + getUiRootNode().loadFromXmlNode(rootElement); } } @Override public void initUiRootNode(boolean force) { // The manifest UI node is always created, even if there's no corresponding XML node. - if (mUiRootNode == null || force) { + if (getUiRootNode() == null || force) { ElementDescriptor descriptor; boolean reload = false; AndroidTargetData data = getEditor().getTargetData(); @@ -172,8 +128,8 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { descriptor = data.getDrawableDescriptors().getElementDescriptor(mRootTag); reload = true; } - mUiRootNode = descriptor.createUiNode(); - mUiRootNode.setEditor(getEditor()); + setUiRootNode(descriptor.createUiNode()); + getUiRootNode().setEditor(getEditor()); if (reload) { onDescriptorsChanged(); @@ -186,7 +142,7 @@ public class DrawableEditorDelegate extends XmlEditorDelegate { if (model != null) { try { Node node = getEditor().getXmlDocument(model).getDocumentElement(); - mUiRootNode.reloadFromXmlNode(node); + getUiRootNode().reloadFromXmlNode(node); } finally { model.releaseFromRead(); } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/menu/MenuEditorDelegator.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/menu/MenuEditorDelegate.java index 0523f0c..0571947 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/menu/MenuEditorDelegator.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/menu/MenuEditorDelegate.java @@ -16,25 +16,18 @@ package com.android.ide.eclipse.adt.internal.editors.menu; -import com.android.ide.common.resources.ResourceFolder; import com.android.ide.eclipse.adt.AdtConstants; import com.android.ide.eclipse.adt.AdtPlugin; -import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; +import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor.Mandatory; -import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; -import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData; import com.android.resources.ResourceFolderType; import com.android.sdklib.xml.AndroidXPathFactory; -import org.eclipse.core.resources.IFile; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.FileEditorInput; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -45,20 +38,17 @@ import javax.xml.xpath.XPathExpressionException; /** * Multi-page form editor for /res/menu XML files. */ -public class MenuEditorDelegator extends XmlEditorDelegate { +public class MenuEditorDelegate extends XmlEditorDelegate { public static class Creator implements IXmlEditorCreator { @Override @SuppressWarnings("unchecked") - public MenuEditorDelegator createForFile( + public MenuEditorDelegate createForFile( AndroidXmlCommonEditor delegator, - IFileEditorInput input) { - // get the IFile object and check it's the desired sub-resource folder - IFile iFile = input.getFile(); - ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(iFile); - ResourceFolderType type = resFolder == null ? null : resFolder.getType(); + IFileEditorInput input, + ResourceFolderType type) { if (ResourceFolderType.MENU.equals(type)) { - return new MenuEditorDelegator(delegator); + return new MenuEditorDelegate(delegator); } return null; @@ -67,56 +57,16 @@ public class MenuEditorDelegator extends XmlEditorDelegate { /** * Old standalone-editor ID. - * @deprecated Use {@link AndroidXmlCommonEditor#ID} instead. + * Use {@link AndroidXmlCommonEditor#ID} instead. */ @Deprecated public static final String OLD_STANDALONE_EDITOR_ID = AdtConstants.EDITORS_NAMESPACE + ".menu.MenuEditor"; //$NON-NLS-1$ - /** Root node of the UI element hierarchy */ - private UiElementNode mUiRootNode; - - private final AndroidXmlCommonEditor mDelegator; - /** * Creates the form editor for resources XML files. */ - public MenuEditorDelegator(AndroidXmlCommonEditor delegator) { - super(); - mDelegator = delegator; - } - - @Override - public AndroidXmlCommonEditor getEditor() { - return mDelegator; - } - - @Override - public void dispose() { - // pass - } - - /** - * Returns the root node of the UI element hierarchy, which here is - * the "menu" node. - */ - @Override - public UiElementNode getUiRootNode() { - return mUiRootNode; - } - - // ---- Base Class Overrides ---- - - /** - * Returns whether the "save as" operation is supported by this editor. - * <p/> - * Save-As is a valid operation for the ManifestEditor since it acts on a - * single source file. - * - * @see IEditorPart - */ - @Override - public boolean isSaveAsAllowed() { - return true; + public MenuEditorDelegate(AndroidXmlCommonEditor editor) { + super(editor); } /** @@ -132,18 +82,6 @@ public class MenuEditorDelegator extends XmlEditorDelegate { } - /* (non-java doc) - * Change the tab/title name to include the project name. - */ - @Override - public void setInput(IEditorInput input) { - if (input instanceof FileEditorInput) { - FileEditorInput fileInput = (FileEditorInput) input; - IFile file = fileInput.getFile(); - getEditor().setPartName(String.format("%1$s", file.getName())); - } - } - private boolean mUpdatingModel; /** @@ -163,9 +101,9 @@ public class MenuEditorDelegator extends XmlEditorDelegate { // init the ui root on demand initUiRootNode(false /*force*/); - mUiRootNode.setXmlDocument(xml_doc); + getUiRootNode().setXmlDocument(xml_doc); if (xml_doc != null) { - ElementDescriptor root_desc = mUiRootNode.getDescriptor(); + ElementDescriptor root_desc = getUiRootNode().getDescriptor(); try { XPath xpath = AndroidXPathFactory.newXPath(); Node node = (Node) xpath.evaluate("/" + root_desc.getXmlName(), //$NON-NLS-1$ @@ -173,11 +111,11 @@ public class MenuEditorDelegator extends XmlEditorDelegate { XPathConstants.NODE); if (node == null && root_desc.getMandatory() != Mandatory.NOT_MANDATORY) { // Create the root element if it doesn't exist yet (for empty new documents) - node = mUiRootNode.createXmlNode(); + node = getUiRootNode().createXmlNode(); } // Refresh the manifest UI node and all its descendants - mUiRootNode.loadFromXmlNode(node); + getUiRootNode().loadFromXmlNode(node); // TODO ? startMonitoringMarkers(); } catch (XPathExpressionException e) { @@ -198,10 +136,10 @@ public class MenuEditorDelegator extends XmlEditorDelegate { @Override public void initUiRootNode(boolean force) { // The root UI node is always created, even if there's no corresponding XML node. - if (mUiRootNode == null || force) { + if (getUiRootNode() == null || force) { Document doc = null; - if (mUiRootNode != null) { - doc = mUiRootNode.getXmlDocument(); + if (getUiRootNode() != null) { + doc = getUiRootNode().getXmlDocument(); } // get the target data from the opened file (and its project) @@ -214,8 +152,8 @@ public class MenuEditorDelegator extends XmlEditorDelegate { desc = data.getMenuDescriptors().getDescriptor(); } - mUiRootNode = desc.createUiNode(); - mUiRootNode.setEditor(getEditor()); + setUiRootNode(desc.createUiNode()); + getUiRootNode().setEditor(getEditor()); onDescriptorsChanged(doc); } @@ -228,9 +166,9 @@ public class MenuEditorDelegator extends XmlEditorDelegate { */ private void onDescriptorsChanged(Document document) { if (document != null) { - mUiRootNode.loadFromXmlNode(document); + getUiRootNode().loadFromXmlNode(document); } else { - mUiRootNode.reloadFromXmlNode(mUiRootNode.getXmlNode()); + getUiRootNode().reloadFromXmlNode(getUiRootNode().getXmlNode()); } } } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/resources/ResourcesEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/resources/ResourcesEditorDelegate.java index c4efb1a..5387c40 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/resources/ResourcesEditorDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/resources/ResourcesEditorDelegate.java @@ -16,25 +16,18 @@ package com.android.ide.eclipse.adt.internal.editors.resources; -import com.android.ide.common.resources.ResourceFolder; import com.android.ide.eclipse.adt.AdtConstants; import com.android.ide.eclipse.adt.AdtPlugin; -import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; +import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; import com.android.ide.eclipse.adt.internal.editors.resources.descriptors.ResourcesDescriptors; -import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; -import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; import com.android.resources.ResourceFolderType; import com.android.sdklib.xml.AndroidXPathFactory; -import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IStatus; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.FileEditorInput; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -52,11 +45,8 @@ public class ResourcesEditorDelegate extends XmlEditorDelegate { @SuppressWarnings("unchecked") public ResourcesEditorDelegate createForFile( AndroidXmlCommonEditor delegator, - IFileEditorInput input) { - // get the IFile object and check it's the desired sub-resource folder - IFile iFile = input.getFile(); - ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(iFile); - ResourceFolderType type = resFolder == null ? null : resFolder.getType(); + IFileEditorInput input, + ResourceFolderType type) { if (ResourceFolderType.VALUES.equals(type)) { return new ResourcesEditorDelegate(delegator); } @@ -67,60 +57,22 @@ public class ResourcesEditorDelegate extends XmlEditorDelegate { /** * Old standalone-editor ID. - * @deprecated Use {@link AndroidXmlCommonEditor#ID} instead. + * Use {@link AndroidXmlCommonEditor#ID} instead. */ @Deprecated public static final String OLD_STANDALONE_EDITOR_ID = AdtConstants.EDITORS_NAMESPACE + ".resources.ResourcesEditor"; //$NON-NLS-1$ - /** Root node of the UI element hierarchy */ - private UiElementNode mUiResourcesNode; - - private final AndroidXmlCommonEditor mDelegator; - /** * Creates the form editor for resources XML files. */ - public ResourcesEditorDelegate(AndroidXmlCommonEditor delegator) { - super(); - mDelegator = delegator; - } - - @Override - public AndroidXmlCommonEditor getEditor() { - return mDelegator; - } - - @Override - public void dispose() { - // pass - } - - /** - * Returns the root node of the UI element hierarchy, which - * here is the "resources" node. - */ - @Override - public UiElementNode getUiRootNode() { - return mUiResourcesNode; + public ResourcesEditorDelegate(AndroidXmlCommonEditor editor) { + super(editor); } // ---- Base Class Overrides ---- /** - * Returns whether the "save as" operation is supported by this editor. - * <p/> - * Save-As is a valid operation for the ManifestEditor since it acts on a - * single source file. - * - * @see IEditorPart - */ - @Override - public boolean isSaveAsAllowed() { - return true; - } - - /** * Create the various form pages. */ @Override @@ -133,18 +85,6 @@ public class ResourcesEditorDelegate extends XmlEditorDelegate { } } - /* (non-java doc) - * Change the tab/title name to include the project name. - */ - @Override - public void setInput(IEditorInput input) { - if (input instanceof FileEditorInput) { - FileEditorInput fileInput = (FileEditorInput) input; - IFile file = fileInput.getFile(); - getEditor().setPartName(String.format("%1$s", file.getName())); - } - } - /** * Processes the new XML Model, which XML root node is given. * @@ -155,7 +95,7 @@ public class ResourcesEditorDelegate extends XmlEditorDelegate { // init the ui root on demand initUiRootNode(false /*force*/); - mUiResourcesNode.setXmlDocument(xml_doc); + getUiRootNode().setXmlDocument(xml_doc); if (xml_doc != null) { ElementDescriptor resources_desc = ResourcesDescriptors.getInstance().getElementDescriptor(); @@ -168,7 +108,7 @@ public class ResourcesEditorDelegate extends XmlEditorDelegate { assert node == null || node.getNodeName().equals(resources_desc.getXmlName()); // Refresh the manifest UI node and all its descendants - mUiResourcesNode.loadFromXmlNode(node); + getUiRootNode().loadFromXmlNode(node); } catch (XPathExpressionException e) { AdtPlugin.log(e, "XPath error when trying to find '%s' element in XML.", //$NON-NLS-1$ resources_desc.getXmlName()); @@ -183,11 +123,11 @@ public class ResourcesEditorDelegate extends XmlEditorDelegate { @Override public void initUiRootNode(boolean force) { // The manifest UI node is always created, even if there's no corresponding XML node. - if (mUiResourcesNode == null || force) { + if (getUiRootNode() == null || force) { ElementDescriptor resources_desc = ResourcesDescriptors.getInstance().getElementDescriptor(); - mUiResourcesNode = resources_desc.createUiNode(); - mUiResourcesNode.setEditor(getEditor()); + setUiRootNode(resources_desc.createUiNode()); + getUiRootNode().setEditor(getEditor()); onDescriptorsChanged(); } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/xml/OtherXmlEditorDelegate.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/xml/OtherXmlEditorDelegate.java index d39d749..559212e 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/xml/OtherXmlEditorDelegate.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/xml/OtherXmlEditorDelegate.java @@ -18,25 +18,22 @@ package com.android.ide.eclipse.adt.internal.editors.xml; import com.android.ide.eclipse.adt.AdtConstants; import com.android.ide.eclipse.adt.AdtPlugin; +import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; import com.android.ide.eclipse.adt.internal.editors.FirstElementParser; import com.android.ide.eclipse.adt.internal.editors.XmlEditorDelegate; -import com.android.ide.eclipse.adt.internal.editors.AndroidXmlCommonEditor; import com.android.ide.eclipse.adt.internal.editors.descriptors.DocumentDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; -import com.android.ide.eclipse.adt.internal.editors.uimodel.UiDocumentNode; import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData; import com.android.ide.eclipse.adt.internal.sdk.Sdk; +import com.android.resources.ResourceFolderType; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.SdkConstants; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IStatus; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.FileEditorInput; import org.w3c.dom.Document; /** @@ -49,7 +46,8 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { @SuppressWarnings("unchecked") public OtherXmlEditorDelegate createForFile( AndroidXmlCommonEditor delegator, - IFileEditorInput input) { + IFileEditorInput input, + ResourceFolderType type) { // get the IFile object and check it's the desired sub-resource folder IFile iFile = input.getFile(); if (canHandleFile(iFile)) { @@ -67,37 +65,13 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { @Deprecated public static final String OLD_STANDALONE_EDITOR_ID = AdtConstants.EDITORS_NAMESPACE + ".xml.XmlEditor"; //$NON-NLS-1$ - /** Root node of the UI element hierarchy */ - private UiDocumentNode mUiRootNode; - - private final AndroidXmlCommonEditor mDelegator; - /** * Creates the form editor for resources XML files. */ - public OtherXmlEditorDelegate(AndroidXmlCommonEditor delegator) { - super(); - mDelegator = delegator; - } - - @Override - public AndroidXmlCommonEditor getEditor() { - return mDelegator; + public OtherXmlEditorDelegate(AndroidXmlCommonEditor editor) { + super(editor); } - @Override - public void dispose() { - // pass - } - - /** - * Returns the root node of the UI element hierarchy, which here - * is the document node. - */ - @Override - public UiDocumentNode getUiRootNode() { - return mUiRootNode; - } // ---- Static ---- @@ -161,19 +135,6 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { // ---- Base Class Overrides ---- /** - * Returns whether the "save as" operation is supported by this editor. - * <p/> - * Save-As is a valid operation for the ManifestEditor since it acts on a - * single source file. - * - * @see IEditorPart - */ - @Override - public boolean isSaveAsAllowed() { - return true; - } - - /** * Create the various form pages. */ @Override @@ -185,19 +146,6 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { } } - - /* (non-java doc) - * Change the tab/title name to include the project name. - */ - @Override - public void setInput(IEditorInput input) { - if (input instanceof FileEditorInput) { - FileEditorInput fileInput = (FileEditorInput) input; - IFile file = fileInput.getFile(); - getEditor().setPartName(String.format("%1$s", file.getName())); - } - } - /** * Processes the new XML Model, which XML root node is given. * @@ -208,7 +156,7 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { // init the ui root on demand initUiRootNode(false /*force*/); - mUiRootNode.loadFromXmlNode(xml_doc); + getUiRootNode().loadFromXmlNode(xml_doc); } /** @@ -218,10 +166,10 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { @Override public void initUiRootNode(boolean force) { // The root UI node is always created, even if there's no corresponding XML node. - if (mUiRootNode == null || force) { + if (getUiRootNode() == null || force) { Document doc = null; - if (mUiRootNode != null) { - doc = mUiRootNode.getXmlDocument(); + if (getUiRootNode() != null) { + doc = getUiRootNode().getXmlDocument(); } // get the target data from the opened file (and its project) @@ -234,8 +182,8 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { desc = data.getXmlDescriptors().getDescriptor(); } - mUiRootNode = (UiDocumentNode) desc.createUiNode(); - mUiRootNode.setEditor(getEditor()); + setUiRootNode(desc.createUiNode()); + getUiRootNode().setEditor(getEditor()); onDescriptorsChanged(doc); } @@ -248,9 +196,9 @@ public class OtherXmlEditorDelegate extends XmlEditorDelegate { */ private void onDescriptorsChanged(Document document) { if (document != null) { - mUiRootNode.loadFromXmlNode(document); + getUiRootNode().loadFromXmlNode(document); } else { - mUiRootNode.reloadFromXmlNode(mUiRootNode.getXmlNode()); + getUiRootNode().reloadFromXmlNode(getUiRootNode().getXmlNode()); } } } |