]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d/src/org/simantics/proconf/g3d/views/SinglePageResourceView.java
Naming fixes.
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / proconf / g3d / views / SinglePageResourceView.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
3  * All rights reserved. This program and the accompanying materials\r
4  * are made available under the terms of the Eclipse Public License v1.0\r
5  * which accompanies this distribution, and is available at\r
6  * http://www.eclipse.org/legal/epl-v10.html\r
7  *\r
8  * Contributors:\r
9  *     VTT Technical Research Centre of Finland - initial API and implementation\r
10  *******************************************************************************/\r
11 package org.simantics.proconf.g3d.views;\r
12 \r
13 import org.eclipse.jface.viewers.ISelection;\r
14 import org.eclipse.swt.layout.GridData;\r
15 import org.eclipse.swt.layout.GridLayout;\r
16 import org.eclipse.swt.widgets.Composite;\r
17 import org.eclipse.swt.widgets.Control;\r
18 import org.eclipse.ui.ISelectionListener;\r
19 import org.eclipse.ui.IWorkbenchPart;\r
20 import org.eclipse.ui.forms.events.ExpansionAdapter;\r
21 import org.eclipse.ui.forms.events.ExpansionEvent;\r
22 import org.eclipse.ui.forms.widgets.FormToolkit;\r
23 import org.eclipse.ui.forms.widgets.ScrolledForm;\r
24 import org.eclipse.ui.forms.widgets.Section;\r
25 import org.simantics.proconf.ui.workbench.GraphAccessViewPart;\r
26 import org.simantics.utils.ui.jface.BaseSelectionProvider;\r
27 \r
28 public abstract class SinglePageResourceView extends GraphAccessViewPart{\r
29         protected Composite parent;\r
30         private ScrolledForm form;\r
31         private BaseSelectionProvider defaultInputSelectionProvider = new BaseSelectionProvider();\r
32         protected FormToolkit toolkit;\r
33         protected ISelectionListener pageSelectionListener;\r
34         \r
35         @Override\r
36         public void createPartControl(Composite parent) {\r
37                 super.createPartControl(parent);\r
38                 this.parent = parent;\r
39 \r
40                 toolkit = new FormToolkit(parent.getDisplay());\r
41                 form = getToolkit().createScrolledForm(parent);\r
42 \r
43                 GridLayout layout = new GridLayout(2, false);\r
44                 form.getBody().setLayout(layout);\r
45                 form.getBody().setLayoutData(\r
46                                 new GridData(GridData.FILL, GridData.FILL, true, true));\r
47 \r
48                 getViewSite().setSelectionProvider(defaultInputSelectionProvider);\r
49 \r
50                 // createWidgets();\r
51 \r
52                 form.setText(getFormText());\r
53 \r
54                 hookPageSelection();\r
55 \r
56         }\r
57         \r
58         \r
59     /**\r
60      * Receives selection changes\r
61      * \r
62      * @param part\r
63      * @param selection\r
64      */\r
65     protected void pageSelectionChanged(IWorkbenchPart part, ISelection selection) {\r
66         \r
67     }\r
68         \r
69         \r
70         \r
71         \r
72         \r
73         protected abstract String getFormText();\r
74         \r
75         protected abstract void createWidgets();\r
76         \r
77         @Override\r
78         public void setFocus() {\r
79                 //System.out.println("FormTypeEditorBase.setFocus(): Input = " + getInput());\r
80                 ScrolledForm form = getActiveForm();\r
81                 if (form != null) {\r
82                         form.setFocus();\r
83                 }\r
84         }\r
85         \r
86         public FormToolkit getToolkit() {\r
87                 return toolkit;\r
88         }\r
89         \r
90         public ScrolledForm getActiveForm() {\r
91                 return form;\r
92         }\r
93         \r
94         public void clearForm() {\r
95                 for (Control c : form.getBody().getChildren())\r
96                         c.dispose();\r
97                 \r
98         }\r
99         \r
100         protected Composite getBody() {\r
101         return form.getBody();\r
102     }\r
103         \r
104         public Composite newGridSection(\r
105             int formColumns,\r
106             int childColumns,\r
107             boolean equalWidth,\r
108             boolean grabVertical,\r
109             String text,\r
110             String description) \r
111     {\r
112         return newGridSection(getBody(), formColumns, childColumns, equalWidth, grabVertical, text, description);\r
113     }\r
114 \r
115     public Composite newGridSection(\r
116             Composite parent,\r
117             int formColumns,\r
118             int childColumns,\r
119             boolean equalWidth,\r
120             boolean grabVertical,\r
121             String text,\r
122             String description)\r
123     {\r
124         FormToolkit toolkit = getToolkit();\r
125         \r
126         Section section = toolkit.createSection(parent,\r
127                 Section.DESCRIPTION | Section.TWISTIE | Section.TITLE_BAR | Section.EXPANDED);\r
128         section.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, grabVertical, formColumns, 1));\r
129         section.addExpansionListener(new ExpansionAdapter() {\r
130             public void expansionStateChanged(ExpansionEvent e) {\r
131                 //System.out.println("SinglePageTypeEditor: expansionStateChanged " + e);\r
132                 //reflow(true);\r
133             }\r
134         });\r
135         section.setText(text);\r
136         section.setDescription(description);\r
137         Composite sectionClient = toolkit.createComposite(section);\r
138         sectionClient.setLayout(new GridLayout(childColumns, equalWidth));\r
139         sectionClient.setLayoutData(new GridData());\r
140         section.setClient(sectionClient);\r
141         return sectionClient;\r
142     }\r
143     \r
144     public void dispose() {\r
145         if (pageSelectionListener != null)\r
146             getSite().getPage().removePostSelectionListener(pageSelectionListener);\r
147     \r
148         super.dispose();\r
149     }\r
150     \r
151     private void hookPageSelection() {\r
152         pageSelectionListener = new ISelectionListener() {\r
153             public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
154                 if (part == SinglePageResourceView.this)\r
155                     return;\r
156                 pageSelectionChanged(part, selection);\r
157             }\r
158         };\r
159         getSite().getPage().addPostSelectionListener(pageSelectionListener);\r
160         ISelection sel = getSite().getPage().getSelection();\r
161         IWorkbenchPart wb = getSite().getPage().getActivePart();\r
162         pageSelectionChanged(wb, sel);\r
163     }\r
164     \r
165 }\r