]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/layer/LayersView.java
Logger fixes after merge commit:fdbe8762
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / layer / LayersView.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.diagram.layer;\r
13 \r
14 import org.eclipse.jface.viewers.ISelection;\r
15 import org.eclipse.jface.viewers.ISelectionChangedListener;\r
16 import org.eclipse.jface.viewers.ISelectionProvider;\r
17 import org.eclipse.jface.viewers.SelectionChangedEvent;\r
18 import org.eclipse.swt.widgets.Composite;\r
19 import org.eclipse.ui.IEditorPart;\r
20 import org.eclipse.ui.IWorkbenchPage;\r
21 import org.eclipse.ui.IWorkbenchPart;\r
22 import org.eclipse.ui.PlatformUI;\r
23 import org.eclipse.ui.part.IContributedContentsView;\r
24 import org.eclipse.ui.part.IPage;\r
25 import org.eclipse.ui.part.IPageBookViewPage;\r
26 import org.eclipse.ui.part.IPageSite;\r
27 import org.eclipse.ui.part.MessagePage;\r
28 import org.eclipse.ui.part.PageBook;\r
29 import org.eclipse.ui.part.PageBookView;\r
30 \r
31 public class LayersView extends PageBookView implements ISelectionProvider, ISelectionChangedListener {\r
32 \r
33         /**\r
34          * The plugin prefix.\r
35          */\r
36         public static final String PREFIX = PlatformUI.PLUGIN_ID + "."; //$NON-NLS-1$\r
37 \r
38         /**\r
39          * Help context id used for the content outline view\r
40          * (value <code>"org.eclipse.ui.content_outline_context"</code>).\r
41          */\r
42         public static final String LAYERS_VIEW_HELP_CONTEXT_ID = PREFIX + "layers_context";//$NON-NLS-1$\r
43 \r
44         /**\r
45          * Message to show on the default page.\r
46          */\r
47         private String defaultText = Messages.LayersView_noLayers; \r
48 \r
49         /**\r
50          * Creates a content outline view with no content outline pages.\r
51          */\r
52         public LayersView() {\r
53                 super();\r
54         }\r
55 \r
56         /* (non-Javadoc)\r
57          * Method declared on ISelectionProvider.\r
58          */\r
59         public void addSelectionChangedListener(ISelectionChangedListener listener) {\r
60                 getSelectionProvider().addSelectionChangedListener(listener);\r
61         }\r
62 \r
63         /* (non-Javadoc)\r
64          * Method declared on PageBookView.\r
65          */\r
66         protected IPage createDefaultPage(PageBook book) {\r
67                 MessagePage page = new MessagePage();\r
68                 initPage(page);\r
69                 page.createControl(book);\r
70                 page.setMessage(defaultText);\r
71                 return page;\r
72         }\r
73 \r
74         /**\r
75          * The <code>PageBookView</code> implementation of this <code>IWorkbenchPart</code>\r
76          * method creates a <code>PageBook</code> control with its default page showing.\r
77          */\r
78         public void createPartControl(Composite parent) {\r
79                 super.createPartControl(parent);\r
80                 PlatformUI.getWorkbench().getHelpSystem().setHelp(getPageBook(),\r
81                                 LAYERS_VIEW_HELP_CONTEXT_ID);\r
82         }\r
83 \r
84         /* (non-Javadoc)\r
85          * Method declared on PageBookView.\r
86          */\r
87         protected PageRec doCreatePage(IWorkbenchPart part) {\r
88                 // Try to get an outline page.\r
89                 ILayersViewPage page = (ILayersViewPage)part.getAdapter(ILayersViewPage.class);\r
90                 if (page != null) {\r
91                         if (page instanceof IPageBookViewPage) {\r
92                                 initPage((IPageBookViewPage) page);\r
93                         }\r
94                         page.createControl(getPageBook());\r
95                         return new PageRec(part, page);\r
96                 }\r
97                 // There is no content outline\r
98                 return null;\r
99         }\r
100 \r
101         /* (non-Javadoc)\r
102          * Method declared on PageBookView.\r
103          */\r
104         protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {\r
105                 ILayersViewPage page = (ILayersViewPage) rec.page;\r
106                 page.dispose();\r
107                 rec.dispose();\r
108         }\r
109 \r
110         /* (non-Javadoc)\r
111          * Method declared on IAdaptable.\r
112          */\r
113         @SuppressWarnings("rawtypes")\r
114     public Object getAdapter(Class key) {\r
115                 if (key == IContributedContentsView.class) {\r
116                         return new IContributedContentsView() {\r
117                                 public IWorkbenchPart getContributingPart() {\r
118                                         return getContributingEditor();\r
119                                 }\r
120                         };\r
121                 }\r
122                 return super.getAdapter(key);\r
123         }\r
124 \r
125         /* (non-Javadoc)\r
126          * Method declared on PageBookView.\r
127          */\r
128         protected IWorkbenchPart getBootstrapPart() {\r
129                 IWorkbenchPage page = getSite().getPage();\r
130                 if (page != null) {\r
131                         return page.getActiveEditor();\r
132                 }\r
133 \r
134                 return null;\r
135         }\r
136 \r
137         /**\r
138          * Returns the editor which contributed the current \r
139          * page to this view.\r
140          *\r
141          * @return the editor which contributed the current page\r
142          * or <code>null</code> if no editor contributed the current page\r
143          */\r
144         private IWorkbenchPart getContributingEditor() {\r
145                 return getCurrentContributingPart();\r
146         }\r
147 \r
148         /* (non-Javadoc)\r
149          * Method declared on ISelectionProvider.\r
150          */\r
151         public ISelection getSelection() {\r
152                 // get the selection from the selection provider\r
153                 return getSelectionProvider().getSelection();\r
154         }\r
155 \r
156         /* (non-Javadoc)\r
157          * Method declared on PageBookView.\r
158          * We only want to track editors.\r
159          */\r
160         protected boolean isImportant(IWorkbenchPart part) {\r
161                 //We only care about editors\r
162                 return (part instanceof IEditorPart);\r
163         }\r
164 \r
165         /* (non-Javadoc)\r
166          * Method declared on IViewPart.\r
167          * Treat this the same as part activation.\r
168          */\r
169         public void partBroughtToTop(IWorkbenchPart part) {\r
170                 partActivated(part);\r
171         }\r
172 \r
173         /* (non-Javadoc)\r
174          * Method declared on ISelectionProvider.\r
175          */\r
176         public void removeSelectionChangedListener(\r
177                         ISelectionChangedListener listener) {\r
178                 getSelectionProvider().removeSelectionChangedListener(listener);\r
179         }\r
180 \r
181         /* (non-Javadoc)\r
182          * Method declared on ISelectionChangedListener.\r
183          */\r
184         public void selectionChanged(SelectionChangedEvent event) {\r
185                 getSelectionProvider().selectionChanged(event);\r
186         }\r
187 \r
188         /* (non-Javadoc)\r
189          * Method declared on ISelectionProvider.\r
190          */\r
191         public void setSelection(ISelection selection) {\r
192                 getSelectionProvider().setSelection(selection);\r
193         }\r
194 \r
195         /**\r
196          * The <code>ContentOutline</code> implementation of this <code>PageBookView</code> method\r
197          * extends the behavior of its parent to use the current page as a selection provider.\r
198          * \r
199          * @param pageRec the page record containing the page to show\r
200          */\r
201         protected void showPageRec(PageRec pageRec) {\r
202                 IPageSite pageSite = getPageSite(pageRec.page);\r
203                 ISelectionProvider provider = pageSite.getSelectionProvider();\r
204                 if (provider == null && (pageRec.page instanceof ILayersViewPage)) {\r
205                         // This means that the page did not set a provider during its initialization \r
206                         // so for backward compatibility we will set the page itself as the provider.\r
207                         pageSite.setSelectionProvider((ILayersViewPage) pageRec.page);\r
208                 }\r
209                 super.showPageRec(pageRec);\r
210         }\r
211 }\r