X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FdiagramEditor%2Ftools%2FDiagramToolViewPart.java;h=efde4f59f6a41f2bc9ba67245dcfd07558596b24;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=c415050d5ee2ff3072206a7c3e2f89326a16f219;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/tools/DiagramToolViewPart.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/tools/DiagramToolViewPart.java index c415050d5..efde4f59f 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/tools/DiagramToolViewPart.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/tools/DiagramToolViewPart.java @@ -1,162 +1,162 @@ -/******************************************************************************* - * 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 tools = new ArrayList(); - private final Map toolComposites = new HashMap(); - - 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 tls = new ArrayList(); - 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); - } - -} +/******************************************************************************* + * 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 tools = new ArrayList(); + private final Map toolComposites = new HashMap(); + + 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 tls = new ArrayList(); + 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); + } + +}