]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/layer/LayersView.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / layer / LayersView.java
diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/layer/LayersView.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/layer/LayersView.java
new file mode 100644 (file)
index 0000000..943e514
--- /dev/null
@@ -0,0 +1,211 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.diagram.layer;\r
+\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.ISelectionChangedListener;\r
+import org.eclipse.jface.viewers.ISelectionProvider;\r
+import org.eclipse.jface.viewers.SelectionChangedEvent;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IWorkbenchPage;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.part.IContributedContentsView;\r
+import org.eclipse.ui.part.IPage;\r
+import org.eclipse.ui.part.IPageBookViewPage;\r
+import org.eclipse.ui.part.IPageSite;\r
+import org.eclipse.ui.part.MessagePage;\r
+import org.eclipse.ui.part.PageBook;\r
+import org.eclipse.ui.part.PageBookView;\r
+\r
+public class LayersView extends PageBookView implements ISelectionProvider, ISelectionChangedListener {\r
+\r
+       /**\r
+        * The plugin prefix.\r
+        */\r
+       public static final String PREFIX = PlatformUI.PLUGIN_ID + "."; //$NON-NLS-1$\r
+\r
+       /**\r
+        * Help context id used for the content outline view\r
+        * (value <code>"org.eclipse.ui.content_outline_context"</code>).\r
+        */\r
+       public static final String LAYERS_VIEW_HELP_CONTEXT_ID = PREFIX + "layers_context";//$NON-NLS-1$\r
+\r
+       /**\r
+        * Message to show on the default page.\r
+        */\r
+       private String defaultText = Messages.LayersView_noLayers; \r
+\r
+       /**\r
+        * Creates a content outline view with no content outline pages.\r
+        */\r
+       public LayersView() {\r
+               super();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on ISelectionProvider.\r
+        */\r
+       public void addSelectionChangedListener(ISelectionChangedListener listener) {\r
+               getSelectionProvider().addSelectionChangedListener(listener);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on PageBookView.\r
+        */\r
+       protected IPage createDefaultPage(PageBook book) {\r
+               MessagePage page = new MessagePage();\r
+               initPage(page);\r
+               page.createControl(book);\r
+               page.setMessage(defaultText);\r
+               return page;\r
+       }\r
+\r
+       /**\r
+        * The <code>PageBookView</code> implementation of this <code>IWorkbenchPart</code>\r
+        * method creates a <code>PageBook</code> control with its default page showing.\r
+        */\r
+       public void createPartControl(Composite parent) {\r
+               super.createPartControl(parent);\r
+               PlatformUI.getWorkbench().getHelpSystem().setHelp(getPageBook(),\r
+                               LAYERS_VIEW_HELP_CONTEXT_ID);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on PageBookView.\r
+        */\r
+       protected PageRec doCreatePage(IWorkbenchPart part) {\r
+               // Try to get an outline page.\r
+               ILayersViewPage page = (ILayersViewPage)part.getAdapter(ILayersViewPage.class);\r
+               if (page != null) {\r
+                       if (page instanceof IPageBookViewPage) {\r
+                               initPage((IPageBookViewPage) page);\r
+                       }\r
+                       page.createControl(getPageBook());\r
+                       return new PageRec(part, page);\r
+               }\r
+               // There is no content outline\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on PageBookView.\r
+        */\r
+       protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {\r
+               ILayersViewPage page = (ILayersViewPage) rec.page;\r
+               page.dispose();\r
+               rec.dispose();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IAdaptable.\r
+        */\r
+       @SuppressWarnings("rawtypes")\r
+    public Object getAdapter(Class key) {\r
+               if (key == IContributedContentsView.class) {\r
+                       return new IContributedContentsView() {\r
+                               public IWorkbenchPart getContributingPart() {\r
+                                       return getContributingEditor();\r
+                               }\r
+                       };\r
+               }\r
+               return super.getAdapter(key);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on PageBookView.\r
+        */\r
+       protected IWorkbenchPart getBootstrapPart() {\r
+               IWorkbenchPage page = getSite().getPage();\r
+               if (page != null) {\r
+                       return page.getActiveEditor();\r
+               }\r
+\r
+               return null;\r
+       }\r
+\r
+       /**\r
+        * Returns the editor which contributed the current \r
+        * page to this view.\r
+        *\r
+        * @return the editor which contributed the current page\r
+        * or <code>null</code> if no editor contributed the current page\r
+        */\r
+       private IWorkbenchPart getContributingEditor() {\r
+               return getCurrentContributingPart();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on ISelectionProvider.\r
+        */\r
+       public ISelection getSelection() {\r
+               // get the selection from the selection provider\r
+               return getSelectionProvider().getSelection();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on PageBookView.\r
+        * We only want to track editors.\r
+        */\r
+       protected boolean isImportant(IWorkbenchPart part) {\r
+               //We only care about editors\r
+               return (part instanceof IEditorPart);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IViewPart.\r
+        * Treat this the same as part activation.\r
+        */\r
+       public void partBroughtToTop(IWorkbenchPart part) {\r
+               partActivated(part);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on ISelectionProvider.\r
+        */\r
+       public void removeSelectionChangedListener(\r
+                       ISelectionChangedListener listener) {\r
+               getSelectionProvider().removeSelectionChangedListener(listener);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on ISelectionChangedListener.\r
+        */\r
+       public void selectionChanged(SelectionChangedEvent event) {\r
+               getSelectionProvider().selectionChanged(event);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on ISelectionProvider.\r
+        */\r
+       public void setSelection(ISelection selection) {\r
+               getSelectionProvider().setSelection(selection);\r
+       }\r
+\r
+       /**\r
+        * The <code>ContentOutline</code> implementation of this <code>PageBookView</code> method\r
+        * extends the behavior of its parent to use the current page as a selection provider.\r
+        * \r
+        * @param pageRec the page record containing the page to show\r
+        */\r
+       protected void showPageRec(PageRec pageRec) {\r
+               IPageSite pageSite = getPageSite(pageRec.page);\r
+               ISelectionProvider provider = pageSite.getSelectionProvider();\r
+               if (provider == null && (pageRec.page instanceof ILayersViewPage)) {\r
+                       // This means that the page did not set a provider during its initialization \r
+                       // so for backward compatibility we will set the page itself as the provider.\r
+                       pageSite.setSelectionProvider((ILayersViewPage) pageRec.page);\r
+               }\r
+               super.showPageRec(pageRec);\r
+       }\r
+}\r