ADT: Skeleton for GLE2.

This refactors the GLE base class into an interface, to make it
possible to not depend on GEF at all.

The GLE2 editor part displays and does nothing. It's just an empty shell.
To enable, setenv USE_GLE2 to anything. Unset to remove it.

Change-Id: I7a95b4a1a5a8ddf5a3f18acf7a04b1f9b3439655
diff --git a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GLE2.java b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GLE2.java
new file mode 100755
index 0000000..8b868e3
--- /dev/null
+++ b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GLE2.java
@@ -0,0 +1,172 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Eclipse Public License, Version 1.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.eclipse.org/org/documents/epl-v10.php

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package com.android.ide.eclipse.adt.internal.editors.layout;

+

+import com.android.ide.eclipse.adt.internal.editors.uimodel.UiDocumentNode;

+import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode;

+import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.gef.ui.parts.SelectionSynchronizer;

+import org.eclipse.swt.dnd.Clipboard;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IEditorSite;

+import org.eclipse.ui.PartInitException;

+import org.eclipse.ui.part.EditorPart;

+

+/**

+ * Graphical layout editor, version 2.

+ */

+public class GLE2 extends EditorPart implements IGraphicalLayoutEditor {

+

+    /*

+     * Useful notes:

+     * To understand Drag'n'drop:

+     *   http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html

+     */

+

+    /** Reference to the layout editor */

+    private final LayoutEditor mLayoutEditor;

+

+    public GLE2(LayoutEditor layoutEditor) {

+        mLayoutEditor = layoutEditor;

+        setPartName("Graphical Layout");

+    }

+

+    // ------------------------------------

+    // Methods overridden from base classes

+    //------------------------------------

+

+    /**

+     * Initializes the editor part with a site and input.

+     * {@inheritDoc}

+     */

+    @Override

+    public void init(IEditorSite site, IEditorInput input) throws PartInitException {

+        setSite(site);

+        setInput(input);

+    }

+

+    @Override

+    public void dispose() {

+        super.dispose();

+    }

+

+    @Override

+    public void doSave(IProgressMonitor monitor) {

+        // TODO Auto-generated method stub

+

+    }

+

+    @Override

+    public void doSaveAs() {

+        // TODO Auto-generated method stub

+

+    }

+

+    @Override

+    public boolean isDirty() {

+        // TODO Auto-generated method stub

+        return false;

+    }

+

+    @Override

+    public boolean isSaveAsAllowed() {

+        // TODO Auto-generated method stub

+        return false;

+    }

+

+    @Override

+    public void createPartControl(Composite parent) {

+        // TODO Auto-generated method stub

+

+    }

+

+    @Override

+    public void setFocus() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void activated() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void deactivated() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void editNewFile(FolderConfiguration configuration) {

+        // TODO Auto-generated method stub

+

+    }

+

+    public Clipboard getClipboard() {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    public LayoutEditor getLayoutEditor() {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    public UiDocumentNode getModel() {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    public SelectionSynchronizer getSelectionSynchronizer() {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    public void onXmlModelChanged() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void recomputeLayout() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void reloadEditor() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void reloadPalette() {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void selectModel(UiElementNode uiNodeModel) {

+        // TODO Auto-generated method stub

+

+    }

+

+    public void reloadLayout(boolean codeChange, boolean rChange,

+            boolean resChange) {

+        // TODO Auto-generated method stub

+

+    }

+

+}

diff --git a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GraphicalLayoutEditor.java b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GraphicalLayoutEditor.java
index 7d7ec55..7cbd19c 100644
--- a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GraphicalLayoutEditor.java
+++ b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/GraphicalLayoutEditor.java
@@ -19,7 +19,6 @@
 import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.internal.editors.IconFactory;
 import com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.UiEditorActions;
-import com.android.ide.eclipse.adt.internal.editors.layout.LayoutReloadMonitor.ILayoutReloadListener;
 import com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite;
 import com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.IConfigListener;
 import com.android.ide.eclipse.adt.internal.editors.layout.descriptors.ViewElementDescriptor;
@@ -71,6 +70,8 @@
 import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
 import org.eclipse.gef.palette.PaletteRoot;
 import org.eclipse.gef.requests.CreationFactory;
+import org.eclipse.gef.ui.parts.GraphicalEditorWithPalette;
+import org.eclipse.gef.ui.parts.SelectionSynchronizer;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
@@ -111,8 +112,8 @@
  * <p/>
  * To understand Drag'n'drop: http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html
  */
-public class GraphicalLayoutEditor extends AbstractGraphicalLayoutEditor
-        implements ILayoutReloadListener, IConfigListener {
+public class GraphicalLayoutEditor extends GraphicalEditorWithPalette
+        implements IGraphicalLayoutEditor, IConfigListener {
 
 
     /** Reference to the layout editor */
@@ -233,6 +234,31 @@
         super.dispose();
     }
 
+    /**
+     * Returns the selection synchronizer object.
+     * The synchronizer can be used to sync the selection of 2 or more EditPartViewers.
+     * <p/>
+     * This is changed from protected to public so that the outline can use it.
+     *
+     * @return the synchronizer
+     */
+    @Override
+    public SelectionSynchronizer getSelectionSynchronizer() {
+        return super.getSelectionSynchronizer();
+    }
+
+    /**
+     * Returns the edit domain.
+     * <p/>
+     * This is changed from protected to public so that the outline can use it.
+     *
+     * @return the edit domain
+     */
+    @Override
+    public DefaultEditDomain getEditDomain() {
+        return super.getEditDomain();
+    }
+
     /* (non-Javadoc)
      * Creates the palette root.
      */
@@ -243,7 +269,6 @@
         return mPaletteRoot;
     }
 
-    @Override
     public Clipboard getClipboard() {
         return mClipboard;
     }
@@ -365,8 +390,7 @@
      *
      * @param uiNodeModel The {@link UiElementNode} to select.
      */
-    @Override
-    void selectModel(UiElementNode uiNodeModel) {
+    public void selectModel(UiElementNode uiNodeModel) {
         GraphicalViewer viewer = getGraphicalViewer();
 
         // Give focus to the graphical viewer (in case the outline has it)
@@ -384,7 +408,6 @@
     // Local methods
     //--------------
 
-    @Override
     public LayoutEditor getLayoutEditor() {
         return mLayoutEditor;
     }
@@ -514,8 +537,7 @@
      * Sets the UI for the edition of a new file.
      * @param configuration the configuration of the new file.
      */
-    @Override
-    void editNewFile(FolderConfiguration configuration) {
+    public void editNewFile(FolderConfiguration configuration) {
         // update the configuration UI
         setConfiguration(configuration, true /*force*/);
 
@@ -625,8 +647,7 @@
     /**
      * Reloads this editor, by getting the new model from the {@link LayoutEditor}.
      */
-    @Override
-    void reloadEditor() {
+    public void reloadEditor() {
         GraphicalViewer viewer = getGraphicalViewer();
         viewer.setContents(getModel());
 
@@ -647,8 +668,7 @@
     /**
      * Callback for XML model changed. Only update/recompute the layout if the editor is visible
      */
-    @Override
-    void onXmlModelChanged() {
+    public void onXmlModelChanged() {
         if (mLayoutEditor.isGraphicalEditorActive()) {
             doXmlReload(true /* force */);
             recomputeLayout();
@@ -697,13 +717,11 @@
     }
 
 
-    @Override
-    UiDocumentNode getModel() {
+    public UiDocumentNode getModel() {
         return mLayoutEditor.getUiRootNode();
     }
 
-    @Override
-    void reloadPalette() {
+    public void reloadPalette() {
         PaletteFactory.createPaletteRoot(mPaletteRoot, mLayoutEditor.getTargetData());
     }
 
@@ -794,9 +812,8 @@
     /**
      * Recomputes the layout with the help of layoutlib.
      */
-    @Override
     @SuppressWarnings("deprecation")
-    void recomputeLayout() {
+    public void recomputeLayout() {
         doXmlReload(false /* force */);
         try {
             // check that the resource exists. If the file is opened but the project is closed
@@ -1072,8 +1089,7 @@
     /**
      * Responds to a page change that made the Graphical editor page the activated page.
      */
-    @Override
-    void activated() {
+    public void activated() {
         if (mNeedsRecompute || mNeedsXmlReload) {
             recomputeLayout();
         }
@@ -1082,8 +1098,7 @@
     /**
      * Responds to a page change that made the Graphical editor page the deactivated page
      */
-    @Override
-    void deactivated() {
+    public void deactivated() {
         // nothing to be done here for now.
     }
 
@@ -1093,11 +1108,11 @@
 
             if (frameworkRes == null) {
                 AdtPlugin.log(IStatus.ERROR, "Failed to get ProjectResource for the framework");
+            } else {
+                // get the framework resource values based on the current config
+                mConfiguredFrameworkRes = frameworkRes.getConfiguredResources(
+                        mConfigComposite.getCurrentConfig());
             }
-
-            // get the framework resource values based on the current config
-            mConfiguredFrameworkRes = frameworkRes.getConfiguredResources(
-                    mConfigComposite.getCurrentConfig());
         }
 
         return mConfiguredFrameworkRes;
diff --git a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/AbstractGraphicalLayoutEditor.java b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/IGraphicalLayoutEditor.java
old mode 100644
new mode 100755
similarity index 75%
rename from tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/AbstractGraphicalLayoutEditor.java
rename to tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/IGraphicalLayoutEditor.java
index e8ccdab..8ed7b3d
--- a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/AbstractGraphicalLayoutEditor.java
+++ b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/IGraphicalLayoutEditor.java
@@ -4,7 +4,7 @@
  * Licensed under the Eclipse Public License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.eclipse.org/org/documents/epl-v10.php
  *
  * Unless required by applicable law or agreed to in writing, software
@@ -22,17 +22,14 @@
 import com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode;
 import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration;
 
-import org.eclipse.gef.DefaultEditDomain;
-import org.eclipse.gef.ui.parts.GraphicalEditorWithPalette;
 import org.eclipse.gef.ui.parts.SelectionSynchronizer;
 import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IEditorPart;
 
 /**
- * Abstract GraphicalLayoutEditor.
+ * Interface defining what {@link LayoutEditor} expects from a GraphicalLayoutEditor part.
  */
-/*package*/ abstract class AbstractGraphicalLayoutEditor extends GraphicalEditorWithPalette
-    implements IWorkbenchPart, ILayoutReloadListener {
+/*package*/ interface IGraphicalLayoutEditor extends IEditorPart, ILayoutReloadListener {
 
     /**
      * Sets the UI for the edition of a new file.
@@ -63,7 +60,7 @@
     /**
      * Used by LayoutEditor.UiEditorActions.selectUiNode to select a new UI Node
      * created by  {@link ElementCreateCommand#execute()}.
-     * 
+     *
      * @param uiNodeModel The {@link UiElementNode} to select.
      */
     abstract void selectModel(UiElementNode uiNodeModel);
@@ -71,27 +68,8 @@
     /**
      * Returns the selection synchronizer object.
      * The synchronizer can be used to sync the selection of 2 or more EditPartViewers.
-     * <p/>
-     * This is changed from protected to public so that the outline can use it.
-     *
-     * @return the synchronizer
      */
-    @Override
-    public SelectionSynchronizer getSelectionSynchronizer() {
-        return super.getSelectionSynchronizer();
-    }
-
-    /**
-     * Returns the edit domain.
-     * <p/>
-     * This is changed from protected to public so that the outline can use it.
-     *
-     * @return the edit domain
-     */
-    @Override
-    public DefaultEditDomain getEditDomain() {
-        return super.getEditDomain();
-    }
+    abstract public SelectionSynchronizer getSelectionSynchronizer();
 
     abstract void reloadPalette();
 
diff --git a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditor.java b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditor.java
index 6226b7b..1176253 100644
--- a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditor.java
+++ b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutEditor.java
@@ -46,7 +46,7 @@
 import org.w3c.dom.Document;
 
 /**
- * Multi-page form editor for /res/layout XML files. 
+ * Multi-page form editor for /res/layout XML files.
  */
 public class LayoutEditor extends AndroidEditor implements IShowEditorInput, IPartListener {
 
@@ -54,8 +54,8 @@
 
     /** Root node of the UI element hierarchy */
     private UiDocumentNode mUiRootNode;
-    
-    private AbstractGraphicalLayoutEditor mGraphicalEditor;
+
+    private IGraphicalLayoutEditor mGraphicalEditor;
     private int mGraphicalEditorIndex;
     /** Implementation of the {@link IContentOutlinePage} for this editor */
     private UiContentOutlinePage mOutline;
@@ -63,7 +63,7 @@
     private UiPropertySheetPage mPropertyPage;
 
     private UiEditorActions mUiEditorActions;
-   
+
     /**
      * Creates the form editor for resources XML files.
      */
@@ -87,7 +87,7 @@
 
         super.dispose();
     }
-    
+
     /**
      * Save the XML.
      * <p/>
@@ -105,12 +105,12 @@
             mGraphicalEditor.doSave(monitor);
         }
     }
-    
+
     /**
      * 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. 
+     * single source file.
      *
      * @see IEditorPart
      */
@@ -128,9 +128,15 @@
             // The graphical layout editor is now enabled by default.
             // In case there's an issue we provide a way to disable it using an
             // env variable.
-            if (System.getenv("ANDROID_DISABLE_LAYOUT") == null) {
+            if (System.getenv("ANDROID_DISABLE_LAYOUT") == null) {      //$NON-NLS-1$
                 if (mGraphicalEditor == null) {
-                    mGraphicalEditor = new GraphicalLayoutEditor(this);
+
+                    if (System.getenv("USE_GLE2") != null) {            //$NON-NLS-1$ //$NON-NLS-2$
+                        mGraphicalEditor = new GLE2(this);
+                    } else {
+                        mGraphicalEditor = new GraphicalLayoutEditor(this);
+                    }
+
                     mGraphicalEditorIndex = addPage(mGraphicalEditor, getEditorInput());
                     setPageText(mGraphicalEditorIndex, mGraphicalEditor.getTitle());
                 } else {
@@ -174,7 +180,7 @@
         super.setInputWithNotify(input);
         handleNewInput(input);
     }
-    
+
     /**
      * Called to replace the current {@link IEditorInput} with another one.
      * <p/>This is used when {@link MatchingStrategy} returned <code>true</code> which means we're
@@ -183,10 +189,10 @@
     public void showEditorInput(IEditorInput editorInput) {
         // save the current editor input.
         doSave(new NullProgressMonitor());
-        
+
         // get the current page
         int currentPage = getActivePage();
-        
+
         // remove the pages, except for the graphical editor, which will be dynamically adapted
         // to the new model.
         // page after the graphical editor:
@@ -198,10 +204,10 @@
         for (int i = mGraphicalEditorIndex - 1 ; i >= 0 ; i--) {
             removePage(i);
         }
-        
+
         // set the current input.
         setInputWithNotify(editorInput);
-        
+
         // re-create or reload the pages with the default page shown as the previous active page.
         createAndroidPages();
         selectDefaultPage(Integer.toString(currentPage));
@@ -211,10 +217,10 @@
             mOutline.reloadModel();
         }
     }
-    
+
     /**
      * Processes the new XML Model, which XML root node is given.
-     * 
+     *
      * @param xml_doc The XML document, if available, or null if none exists.
      */
     @Override
@@ -226,16 +232,16 @@
 
         // update the model first, since it is used by the viewers.
         super.xmlModelChanged(xml_doc);
-        
+
         if (mGraphicalEditor != null) {
             mGraphicalEditor.onXmlModelChanged();
         }
-        
+
         if (mOutline != null) {
             mOutline.reloadModel();
         }
     }
-    
+
     /* (non-java doc)
      * Returns the IContentOutlinePage when asked for it.
      */
@@ -246,29 +252,33 @@
         // This fixes the case where a layout file is opened in XML view first and the outline
         // gets stuck in the XML outline.
         if (IContentOutlinePage.class == adapter && mGraphicalEditor != null) {
-            if (mOutline == null) {
-                mOutline = new UiContentOutlinePage(mGraphicalEditor, new TreeViewer());
+
+            if (mOutline == null && mGraphicalEditor instanceof GraphicalLayoutEditor) {
+                // TODO add support for GLE2
+                mOutline = new UiContentOutlinePage(
+                        (GraphicalLayoutEditor) mGraphicalEditor,
+                        new TreeViewer());
             }
-            
+
             return mOutline;
         }
-        
+
         if (IPropertySheetPage.class == adapter && mGraphicalEditor != null) {
             if (mPropertyPage == null) {
                 mPropertyPage = new UiPropertySheetPage();
             }
-            
+
             return mPropertyPage;
         }
 
         // return default
         return super.getAdapter(adapter);
     }
-    
+
     @Override
     protected void pageChange(int newPageIndex) {
         super.pageChange(newPageIndex);
-        
+
         if (mGraphicalEditor != null) {
             if (newPageIndex == mGraphicalEditorIndex) {
                 mGraphicalEditor.activated();
@@ -277,9 +287,9 @@
             }
         }
     }
-    
+
     // ----- IPartListener Methods ----
-    
+
     public void partActivated(IWorkbenchPart part) {
         if (part == this) {
             if (mGraphicalEditor != null) {
@@ -312,7 +322,7 @@
         EclipseUiHelper.showView(EclipseUiHelper.CONTENT_OUTLINE_VIEW_ID, false /* activate */);
         EclipseUiHelper.showView(EclipseUiHelper.PROPERTY_SHEET_VIEW_ID, false /* activate */);
     }
-    
+
     public class UiEditorActions extends UiActions {
 
         @Override
@@ -331,16 +341,16 @@
             // Pass. There is nothing to commit before the XML is changed here.
         }
     }
-    
+
     public UiEditorActions getUiEditorActions() {
         if (mUiEditorActions == null) {
             mUiEditorActions = new UiEditorActions();
         }
         return mUiEditorActions;
     }
-    
+
     // ---- Local Methods ----
-    
+
     /**
      * Returns true if the Graphics editor page is visible. This <b>must</b> be
      * called from the UI thread.
@@ -357,20 +367,20 @@
         }
 
         return false;
-    }   
-    
+    }
+
     @Override
     protected void initUiRootNode(boolean force) {
         // The root UI node is always created, even if there's no corresponding XML node.
         if (mUiRootNode == null || force) {
             // get the target data from the opened file (and its project)
             AndroidTargetData data = getTargetData();
-            
+
             Document doc = null;
             if (mUiRootNode != null) {
                 doc = mUiRootNode.getXmlDocument();
             }
-            
+
             DocumentDescriptor desc;
             if (data == null) {
                 desc = new DocumentDescriptor("temp", null /*children*/);
@@ -385,18 +395,18 @@
             onDescriptorsChanged(doc);
         }
     }
-    
+
     private void onDescriptorsChanged(Document document) {
         if (document != null) {
             mUiRootNode.loadFromXmlNode(document);
         } else {
             mUiRootNode.reloadFromXmlNode(mUiRootNode.getXmlDocument());
         }
-        
+
         if (mOutline != null) {
             mOutline.reloadModel();
         }
-        
+
         if (mGraphicalEditor != null) {
             mGraphicalEditor.reloadEditor();
             mGraphicalEditor.reloadPalette();
diff --git a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiContentOutlinePage.java b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiContentOutlinePage.java
index 62abd5f..775f23b 100644
--- a/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiContentOutlinePage.java
+++ b/tools/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiContentOutlinePage.java
@@ -70,26 +70,26 @@
  */
 class UiContentOutlinePage extends ContentOutlinePage {
 
-    private AbstractGraphicalLayoutEditor mEditor;
-    
+    private GraphicalLayoutEditor mEditor;
+
     private Action mAddAction;
     private Action mDeleteAction;
     private Action mUpAction;
     private Action mDownAction;
-    
+
     private UiOutlineActions mUiActions = new UiOutlineActions();
 
-    public UiContentOutlinePage(AbstractGraphicalLayoutEditor editor, final EditPartViewer viewer) {
+    public UiContentOutlinePage(GraphicalLayoutEditor editor, final EditPartViewer viewer) {
         super(viewer);
         mEditor = editor;
         IconFactory factory = IconFactory.getInstance();
-        
+
         mAddAction = new Action("Add...") {
             @Override
             public void run() {
                 List<UiElementNode> nodes = getModelSelections();
                 UiElementNode node = nodes != null && nodes.size() > 0 ? nodes.get(0) : null;
-                
+
                 mUiActions.doAdd(node, viewer.getControl().getShell());
             }
         };
@@ -100,7 +100,7 @@
             @Override
             public void run() {
                 List<UiElementNode> nodes = getModelSelections();
-                
+
                 mUiActions.doRemove(nodes, viewer.getControl().getShell());
             }
         };
@@ -111,7 +111,7 @@
             @Override
             public void run() {
                 List<UiElementNode> nodes = getModelSelections();
-                
+
                 mUiActions.doUp(nodes);
             }
         };
@@ -122,7 +122,7 @@
             @Override
             public void run() {
                 List<UiElementNode> nodes = getModelSelections();
-                
+
                 mUiActions.doDown(nodes);
             }
         };
@@ -138,7 +138,7 @@
         addSelectionChangedListener(new ISelectionChangedListener() {
             public void selectionChanged(SelectionChangedEvent event) {
                 ISelection selection = event.getSelection();
-                
+
                 // the selection is never empty. The least it'll contain is the
                 // UiDocumentTreeEditPart object.
                 if (selection instanceof StructuredSelection) {
@@ -162,7 +162,7 @@
             }
         });
     }
-    
+
 
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.IPage#createControl(org.eclipse.swt.widgets.Composite)
@@ -184,7 +184,7 @@
     /*
      * (non-Javadoc)
      * @see org.eclipse.ui.part.Page#setActionBars(org.eclipse.ui.IActionBars)
-     * 
+     *
      * Called automatically after createControl
      */
     @Override
@@ -195,7 +195,7 @@
         toolBarManager.add(new Separator());
         toolBarManager.add(mUpAction);
         toolBarManager.add(mDownAction);
-        
+
         IMenuManager menuManager = actionBars.getMenuManager();
         menuManager.add(mAddAction);
         menuManager.add(mDeleteAction);
@@ -222,18 +222,19 @@
     public Control getControl() {
         return getViewer().getControl();
     }
-    
+
     void setNewEditor(GraphicalLayoutEditor editor) {
         mEditor = editor;
         setupOutline();
     }
-    
+
     void breakConnectionWithEditor() {
         // unhook outline viewer
         mEditor.getSelectionSynchronizer().removeViewer(getViewer());
     }
-    
+
     private void setupOutline() {
+
         getViewer().setEditDomain(mEditor.getEditDomain());
 
         // hook outline viewer
@@ -255,13 +256,13 @@
              */
            public void menuAboutToShow(IMenuManager manager) {
                List<UiElementNode> selected = getModelSelections();
-               
+
                if (selected != null) {
                    doCreateMenuAction(manager, selected);
                    return;
                }
                doCreateMenuAction(manager, null /* ui_node */);
-            } 
+            }
         });
         Control control = getControl();
         Menu contextMenu = menuManager.createContextMenu(control);
@@ -271,13 +272,13 @@
     /**
      * Adds the menu actions to the context menu when the given UI node is selected in
      * the tree view.
-     * 
+     *
      * @param manager The context menu manager
      * @param selected The UI node selected in the tree. Can be null, in which case the root
      *                is to be modified.
      */
     private void doCreateMenuAction(IMenuManager manager, List<UiElementNode> selected) {
-        
+
         if (selected != null) {
             boolean hasXml = false;
             for (UiElementNode uiNode : selected) {
@@ -323,14 +324,14 @@
         if (selected != null) {
             manager.add(mDeleteAction);
             manager.add(new Separator());
-            
+
             manager.add(mUpAction);
             manager.add(mDownAction);
         }
 
         if (selected != null && selected.size() == 1) {
             manager.add(new Separator());
-            
+
             Action propertiesAction = new Action("Properties") {
                 @Override
                 public void run() {
@@ -344,7 +345,7 @@
     }
 
     /**
-     * Updates the outline view with the model of the {@link GraphicalLayoutEditor}.
+     * Updates the outline view with the model of the {@link IGraphicalLayoutEditor}.
      * <p/>
      * This attemps to preserve the selection, if any.
      */
@@ -380,22 +381,22 @@
         ISelection selection = getSelection();
         if (selection instanceof StructuredSelection) {
             StructuredSelection structuredSelection = (StructuredSelection)selection;
-            
+
             if (structuredSelection.size() > 0) {
                 ArrayList<UiElementTreeEditPart> selected = new ArrayList<UiElementTreeEditPart>();
-                
+
                 for (Iterator it = structuredSelection.iterator(); it.hasNext(); ) {
                     Object selectedObj = it.next();
-                
+
                     if (selectedObj instanceof UiElementTreeEditPart) {
                         selected.add((UiElementTreeEditPart) selectedObj);
                     }
                 }
-                
+
                 return selected.size() > 0 ? selected : null;
             }
         }
-        
+
         return null;
     }
 
@@ -412,16 +413,16 @@
 
         if (parts != null) {
             ArrayList<UiElementNode> selected = new ArrayList<UiElementNode>();
-            
+
             for (UiElementTreeEditPart part : parts) {
                 if (part instanceof UiViewTreeEditPart || part instanceof UiLayoutTreeEditPart) {
                     selected.add((UiElementNode) part.getModel());
                 }
             }
-            
+
             return selected.size() > 0 ? selected : null;
         }
-        
+
         return null;
     }
 
@@ -440,17 +441,17 @@
         }
     }
 
-    /** 
+    /**
      * Selects the corresponding model element in the tree viewer.
      */
     private void setModelSelection(UiElementNode uiNodeToSelect) {
         if (uiNodeToSelect != null) {
-            
+
             // find an edit part that has the requested model element
             UiElementTreeEditPart part = findPartForModel(
                     (UiElementTreeEditPart) getViewer().getContents(),
                     uiNodeToSelect);
-            
+
             // if we found a part, select it and reveal it
             if (part != null) {
                 setViewerSelection(part);
@@ -461,7 +462,7 @@
 
     /**
      * Utility method that tries to find an edit part that matches a given model UI node.
-     * 
+     *
      * @param rootPart The root of the viewer edit parts
      * @param uiNode The UI node model to find
      * @return The part that matches the model or null if it's not in the sub tree.
@@ -471,7 +472,7 @@
         if (rootPart.getModel() == uiNode) {
             return rootPart;
         }
-        
+
         for (Object part : rootPart.getChildren()) {
             if (part instanceof UiElementTreeEditPart) {
                 UiElementTreeEditPart found = findPartForModel(
@@ -492,16 +493,16 @@
      */
     private void setupTooltip() {
         final Tree tree = (Tree) getControl();
-        
+
         /*
-         * Reference: 
+         * Reference:
          * http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet125.java?view=markup
          */
-        
+
         final Listener listener = new Listener() {
             Shell tip = null;
             Label label  = null;
-            
+
             public void handleEvent(Event event) {
                 switch(event.type) {
                 case SWT.Dispose:
@@ -523,7 +524,7 @@
                     }
 
                     String tooltip = null;
-                    
+
                     TreeItem item = tree.getItem(new Point(event.x, event.y));
                     if (item != null) {
                         Object data = item.getData();
@@ -540,12 +541,12 @@
                             tooltip = item.getText() + ":\r" + tooltip;
                         }
                     }
-                    
-                    
+
+
                     if (tooltip != null) {
                         Shell shell = tree.getShell();
                         Display display = tree.getDisplay();
-                        
+
                         tip = new Shell(shell, SWT.ON_TOP | SWT.NO_FOCUS | SWT.TOOL);
                         tip.setBackground(display .getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                         FillLayout layout = new FillLayout();
@@ -567,7 +568,7 @@
                 }
             }
         };
-        
+
         tree.addListener(SWT.Dispose, listener);
         tree.addListener(SWT.KeyDown, listener);
         tree.addListener(SWT.MouseMove, listener);
@@ -592,7 +593,7 @@
     }
 
     // ---------------
-    
+
     private class UiOutlineActions extends UiActions {
 
         @Override
@@ -610,6 +611,6 @@
         public void commitPendingXmlChanges() {
             // Pass. There is nothing to commit before the XML is changed here.
         }
-        
+
     }
 }