-/*******************************************************************************\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.modeling.ui.diagramEditor.tools;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.layout.GridLayoutFactory;\r
-import org.eclipse.jface.resource.JFaceResources;\r
-import org.eclipse.jface.resource.LocalResourceManager;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.layout.FillLayout;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.ToolBar;\r
-import org.eclipse.ui.ISelectionListener;\r
-import org.eclipse.ui.IWorkbenchPart;\r
-import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.forms.widgets.FormToolkit;\r
-import org.eclipse.ui.forms.widgets.ScrolledForm;\r
-import org.eclipse.ui.forms.widgets.Section;\r
-import org.eclipse.ui.part.ViewPart;\r
-import org.simantics.modeling.ui.diagramEditor.DiagramEditor;\r
-import org.simantics.utils.ui.workbench.WorkbenchUtils;\r
-\r
-public class DiagramToolViewPart extends ViewPart {\r
-\r
- private Composite parent;\r
-\r
- private final List<DiagramTools> tools = new ArrayList<DiagramTools>();\r
- private final Map<DiagramTools,Composite> toolComposites = new HashMap<DiagramTools, Composite>();\r
-\r
- private ISelectionListener listener;\r
-\r
- protected LocalResourceManager resourceManager;\r
-\r
- protected FormToolkit formToolkit;\r
-\r
- protected ScrolledForm mainForm;\r
-\r
- public DiagramToolViewPart() {\r
-\r
- }\r
-\r
- @Override\r
- public void createPartControl(Composite parent) {\r
- this.parent = parent;\r
- this.parent.setLayout(new FillLayout());\r
- //this.parent.setLayout(new GridLayout(1, true));\r
-\r
- listener = new ISelectionListener() {\r
-\r
- @Override\r
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
- // FIXME: selection logic must be improved.\r
- // We want to disable tools, if selection does not come from DiagramEditor, or its outline\r
- if (!(part instanceof DiagramEditor)) {\r
- return;\r
- }\r
- for (DiagramTools t : tools) {\r
- t.setSelection(selection);\r
- }\r
-\r
- }\r
- };\r
- getSite().getPage().addPostSelectionListener(listener);\r
-\r
- resourceManager = new LocalResourceManager(JFaceResources.getResources(parent.getDisplay()), parent);\r
-\r
- formToolkit = new FormToolkit(parent.getDisplay());\r
- formToolkit.adapt(parent);\r
- mainForm = formToolkit.createScrolledForm(parent);\r
- mainForm.getBody().setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true).margins(0, 5).spacing(1,1).create());\r
- formToolkit.decorateFormHeading(mainForm.getForm());\r
- mainForm.setText("Tools");\r
-\r
- // Default set of tools.\r
- openTool(new AlignTools());\r
- }\r
-\r
- @Override\r
- public void setFocus() {\r
- parent.setFocus();\r
-\r
- }\r
-\r
- public void openTool(final DiagramTools tool) {\r
- // Allow opening tool only once.\r
- for (DiagramTools t : tools) {\r
- if (t.getClass().equals(tool.getClass()))\r
- return;\r
- }\r
-\r
- Section group = formToolkit.createSection(mainForm.getBody(), Section.TITLE_BAR | Section.TWISTIE);\r
- group.setText(tool.getName());\r
- GridData data = new GridData(SWT.FILL, SWT.TOP, true, false);\r
- group.setLayoutData(data);\r
- Composite composite = formToolkit.createComposite(group);\r
-\r
- tool.createContols(composite, formToolkit, resourceManager);\r
- group.setClient(composite);\r
-\r
- ToolBar toolBar = new ToolBar(group, SWT.NO_FOCUS | SWT.FLAT);\r
-// ToolItem closeButton = new ToolItem(toolBar, SWT.PUSH);\r
-// closeButton.setToolTipText("Close " + tool.getName() + " Tools");\r
-// closeButton.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/silk/cross.png"))));\r
- group.setTextClient(toolBar);\r
-\r
- group.setExpanded(true);\r
-\r
-// closeButton.addSelectionListener(new SelectionAdapter() {\r
-// @Override\r
-// public void widgetSelected(SelectionEvent e) {\r
-// closeTool(tool);\r
-// }\r
-// });\r
-\r
- tools.add(tool);\r
- toolComposites.put(tool, group);\r
- parent.layout(true, true);\r
-\r
- tool.setSelection(getSite().getPage().getSelection());\r
-\r
- }\r
-\r
- private void closeTool(DiagramTools tool) {\r
- tool.dispose();\r
- tools.remove(tool);\r
- toolComposites.remove(tool).dispose();\r
- }\r
-\r
- @Override\r
- public void dispose() {\r
- List<DiagramTools> tls = new ArrayList<DiagramTools>();\r
- tls.addAll(tools);\r
- for (DiagramTools t : tls) {\r
- closeTool(t);\r
- }\r
- getSite().getPage().removePostSelectionListener(listener);\r
- listener = null;\r
- formToolkit.dispose();\r
- super.dispose();\r
- }\r
-\r
- public static void open(DiagramTools tool) throws PartInitException {\r
- DiagramToolViewPart wp = (DiagramToolViewPart)WorkbenchUtils.showView("org.simantics.modeling.ui.diagramtool");\r
- wp.openTool(tool);\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.modeling.ui.diagramEditor.tools;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.part.ViewPart;
+import org.simantics.modeling.ui.diagramEditor.DiagramEditor;
+import org.simantics.utils.ui.workbench.WorkbenchUtils;
+
+public class DiagramToolViewPart extends ViewPart {
+
+ private Composite parent;
+
+ private final List<DiagramTools> tools = new ArrayList<DiagramTools>();
+ private final Map<DiagramTools,Composite> toolComposites = new HashMap<DiagramTools, Composite>();
+
+ private ISelectionListener listener;
+
+ protected LocalResourceManager resourceManager;
+
+ protected FormToolkit formToolkit;
+
+ protected ScrolledForm mainForm;
+
+ public DiagramToolViewPart() {
+
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ this.parent = parent;
+ this.parent.setLayout(new FillLayout());
+ //this.parent.setLayout(new GridLayout(1, true));
+
+ listener = new ISelectionListener() {
+
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ // FIXME: selection logic must be improved.
+ // We want to disable tools, if selection does not come from DiagramEditor, or its outline
+ if (!(part instanceof DiagramEditor)) {
+ return;
+ }
+ for (DiagramTools t : tools) {
+ t.setSelection(selection);
+ }
+
+ }
+ };
+ getSite().getPage().addPostSelectionListener(listener);
+
+ resourceManager = new LocalResourceManager(JFaceResources.getResources(parent.getDisplay()), parent);
+
+ formToolkit = new FormToolkit(parent.getDisplay());
+ formToolkit.adapt(parent);
+ mainForm = formToolkit.createScrolledForm(parent);
+ mainForm.getBody().setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true).margins(0, 5).spacing(1,1).create());
+ formToolkit.decorateFormHeading(mainForm.getForm());
+ mainForm.setText("Tools");
+
+ // Default set of tools.
+ openTool(new AlignTools());
+ }
+
+ @Override
+ public void setFocus() {
+ parent.setFocus();
+
+ }
+
+ public void openTool(final DiagramTools tool) {
+ // Allow opening tool only once.
+ for (DiagramTools t : tools) {
+ if (t.getClass().equals(tool.getClass()))
+ return;
+ }
+
+ Section group = formToolkit.createSection(mainForm.getBody(), Section.TITLE_BAR | Section.TWISTIE);
+ group.setText(tool.getName());
+ GridData data = new GridData(SWT.FILL, SWT.TOP, true, false);
+ group.setLayoutData(data);
+ Composite composite = formToolkit.createComposite(group);
+
+ tool.createContols(composite, formToolkit, resourceManager);
+ group.setClient(composite);
+
+ ToolBar toolBar = new ToolBar(group, SWT.NO_FOCUS | SWT.FLAT);
+// ToolItem closeButton = new ToolItem(toolBar, SWT.PUSH);
+// closeButton.setToolTipText("Close " + tool.getName() + " Tools");
+// closeButton.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/silk/cross.png"))));
+ group.setTextClient(toolBar);
+
+ group.setExpanded(true);
+
+// closeButton.addSelectionListener(new SelectionAdapter() {
+// @Override
+// public void widgetSelected(SelectionEvent e) {
+// closeTool(tool);
+// }
+// });
+
+ tools.add(tool);
+ toolComposites.put(tool, group);
+ parent.layout(true, true);
+
+ tool.setSelection(getSite().getPage().getSelection());
+
+ }
+
+ private void closeTool(DiagramTools tool) {
+ tool.dispose();
+ tools.remove(tool);
+ toolComposites.remove(tool).dispose();
+ }
+
+ @Override
+ public void dispose() {
+ List<DiagramTools> tls = new ArrayList<DiagramTools>();
+ tls.addAll(tools);
+ for (DiagramTools t : tls) {
+ closeTool(t);
+ }
+ getSite().getPage().removePostSelectionListener(listener);
+ listener = null;
+ formToolkit.dispose();
+ super.dispose();
+ }
+
+ public static void open(DiagramTools tool) throws PartInitException {
+ DiagramToolViewPart wp = (DiagramToolViewPart)WorkbenchUtils.showView("org.simantics.modeling.ui.diagramtool");
+ wp.openTool(tool);
+ }
+
+}