]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/tools/AlignTools.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / tools / AlignTools.java
index ecff1b9aa9f216f5fe49fbb5fe450c67e4620b67..61eb73c17f02fa4118aab0a406882864999c6d8d 100644 (file)
-/*******************************************************************************\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.List;\r
-\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.layout.GridLayoutFactory;\r
-import org.eclipse.jface.resource.ImageDescriptor;\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.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.ui.forms.widgets.FormToolkit;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ReadRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.diagram.elements.ElementTransforms;\r
-import org.simantics.diagram.elements.ElementTransforms.SIDE;\r
-import org.simantics.diagram.stubs.DiagramResource;\r
-import org.simantics.modeling.ui.Activator;\r
-import org.simantics.ui.SimanticsUI;\r
-import org.simantics.ui.utils.ResourceAdaptionUtils;\r
-\r
-/**\r
- * Diagramming alignment tools\r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- */\r
-public class AlignTools implements DiagramTools {\r
-\r
-    private Resource selection[] = new Resource[0];\r
-\r
-    Button alignLeft;\r
-    Button alignVertButton;\r
-    Button alignRight;\r
-    Button alignTop;\r
-    Button alignHorizButton;\r
-    Button alignBottom;\r
-    Button distLeft;\r
-    Button distVert;\r
-    Button distRight;\r
-    Button distVertBetween;\r
-    Button distTop;\r
-    Button distHoriz;\r
-    Button distBottom;\r
-    Button distHorizBetween;\r
-\r
-    Button rotateCW;\r
-    Button rotateCCW;\r
-    Button flipX;\r
-    Button flipY;\r
-\r
-\r
-\r
-    @Override\r
-    public String getName() {\r
-        return "Align";\r
-    }\r
-\r
-\r
-    @Override\r
-    public void createContols(Composite parent, FormToolkit toolkit, LocalResourceManager resourceManager) {\r
-       parent.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true).margins(0, 0).spacing(1,1).create());\r
-               \r
-               Composite alignComposite = new Composite(parent, SWT.NONE);\r
-               Composite distributeComposite = new Composite(parent, SWT.NONE);\r
-               Composite rotateComposite = new Composite(parent, SWT.NONE);\r
-               alignComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(true).margins(0, 2).spacing(0, 0).create());\r
-               distributeComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(4).equalWidth(true).margins(0, 2).spacing(0, 0).create());\r
-               rotateComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(true).margins(0, 2).spacing(0, 0).create());\r
-\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignComposite);\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distributeComposite);\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(rotateComposite);\r
-\r
-        alignLeft = toolkit.createButton(alignComposite, "", SWT.PUSH);\r
-        //alignLeft.setText("Left");\r
-        alignLeft.setToolTipText("Align Left Edges");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignLeft);\r
-\r
-        alignVertButton = toolkit.createButton(alignComposite, "", SWT.PUSH);\r
-        //alignVertButton.setText("Middle");\r
-        alignVertButton.setToolTipText("Center on Vertical Axis");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignVertButton);\r
-\r
-        alignRight = toolkit.createButton(alignComposite, "", SWT.PUSH);\r
-        //alignRight.setText("Right");\r
-        alignRight.setToolTipText("Align Right Edges");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignRight);\r
-\r
-        alignTop = toolkit.createButton(alignComposite, "", SWT.PUSH);\r
-        //alignTop.setText("Top");\r
-        alignTop.setToolTipText("Align Top Edges");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignTop);\r
-\r
-        alignHorizButton = toolkit.createButton(alignComposite, "", SWT.PUSH);\r
-        //alignHorizButton.setText("Middle");\r
-        alignHorizButton.setToolTipText("Center on Horizontal Axis");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignHorizButton);\r
-\r
-        alignBottom = toolkit.createButton(alignComposite, "", SWT.PUSH);\r
-        //alignBottom.setText("Bottom");\r
-        alignBottom.setToolTipText("Align Bottom Edges");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignBottom);\r
-\r
-        distLeft = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distLeft.setText("Left");\r
-        distLeft.setToolTipText("Distribute Left Edges Equidistantly");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distLeft);\r
-\r
-        distVert = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distVert.setText("Middle");\r
-        distVert.setToolTipText("Distribute Centers Equidistantly Horizontally");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distVert);\r
-\r
-        distRight = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distRight.setText("Right");\r
-        distRight.setToolTipText("Distribute Right Edges Equidistantly");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distRight);\r
-\r
-        distVertBetween = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distVertBetween.setText("Between");\r
-        distVertBetween.setToolTipText("Make Horizontal Gaps Between Objects Equal");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distVertBetween);\r
-\r
-        distTop = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distTop.setText("Top");\r
-        distTop.setToolTipText("Distribute Top Edges Equidistantly");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distTop);\r
-\r
-        distHoriz = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distHoriz.setText("Middle");\r
-        distHoriz.setToolTipText("Distribute Centers Equidistantly Vertically");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distHoriz);\r
-\r
-        distBottom = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distBottom.setText("Bottom");\r
-        distBottom.setToolTipText("Distribute Bottom Edges Equidistantly");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distBottom);\r
-\r
-        distHorizBetween = toolkit.createButton(distributeComposite, "", SWT.PUSH);\r
-        //distHorizBetween.setText("Between");\r
-        distHorizBetween.setToolTipText("Make Vertical Gaps Between Objects Equal");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distHorizBetween);\r
-\r
-        rotateCCW = toolkit.createButton(rotateComposite, "", SWT.PUSH);\r
-        //rotateCCW.setText("rotate left");\r
-        rotateCCW.setToolTipText("Rotate Counterclockwise");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(rotateCCW);\r
-\r
-        rotateCW = toolkit.createButton(rotateComposite, "", SWT.PUSH);\r
-        //rotateCW.setText("rotate right");\r
-        rotateCW.setToolTipText("Rotate Clockwise");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(rotateCW);\r
-\r
-        flipX = toolkit.createButton(rotateComposite, "", SWT.PUSH);\r
-        //flipX.setText("flip");\r
-        flipX.setToolTipText("Flip About Horizontal Axis");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(flipX);\r
-\r
-        flipY = toolkit.createButton(rotateComposite, "", SWT.PUSH);\r
-        //flipY.setText("mirror");\r
-        flipY.setToolTipText("Flip About Vertical Axis");\r
-        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(flipY);\r
-\r
-        alignVertButton.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.align(getSelected(), SIDE.VERT);\r
-            }\r
-        });\r
-\r
-        alignHorizButton.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.align(getSelected(),SIDE.HORIZ);\r
-            }\r
-        });\r
-\r
-        alignLeft.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.align(getSelected(),SIDE.LEFT);\r
-            }\r
-        });\r
-\r
-        alignRight.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.align(getSelected(),SIDE.RIGHT);\r
-            }\r
-        });\r
-\r
-        alignTop.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.align(getSelected(),SIDE.TOP);\r
-            }\r
-        });\r
-\r
-        alignBottom.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.align(getSelected(),SIDE.BOTTOM);\r
-            }\r
-        });\r
-\r
-        distLeft.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.LEFT);\r
-            }\r
-        });\r
-\r
-        distVert.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.VERT);\r
-            }\r
-        });\r
-\r
-        distRight.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.RIGHT);\r
-            }\r
-        });\r
-\r
-        distVertBetween.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.VERT_BTW);\r
-            }\r
-        });\r
-\r
-        distTop.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.TOP);\r
-            }\r
-        });\r
-\r
-        distHoriz.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.HORIZ);\r
-            }\r
-        });\r
-\r
-        distBottom.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.BOTTOM);\r
-            }\r
-        });\r
-\r
-        distHorizBetween.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.dist(getSelected(),SIDE.HORIZ_BTW);\r
-            }\r
-        });\r
-\r
-        rotateCW.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.rotate(getSelected(),true);\r
-            }\r
-        });\r
-\r
-        rotateCCW.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.rotate(getSelected(),false);\r
-            }\r
-        });\r
-\r
-        flipX.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.flip(getSelected(),true);\r
-            }\r
-        });\r
-\r
-        flipY.addSelectionListener(new SelectionAdapter() {\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                ElementTransforms.flip(getSelected(),false);\r
-            }\r
-        });\r
-\r
-        alignLeft.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_left.png"))));\r
-        alignVertButton.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_center.png"))));\r
-        alignRight.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_right.png"))));\r
-        alignTop.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_top.png"))));\r
-        alignHorizButton.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_middle.png"))));\r
-        alignBottom.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_bottom.png"))));\r
-\r
-        distLeft.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_left.png"))));\r
-        distVert.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_center.png"))));\r
-        distRight.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_right.png"))));\r
-        distVertBetween.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_horiz.png"))));\r
-        distTop.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_top.png"))));\r
-        distHoriz.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_middle.png"))));\r
-        distBottom.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_bottom.png"))));\r
-        distHorizBetween.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_vert.png"))));\r
-\r
-        rotateCCW.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/rotate_left.png"))));\r
-        rotateCW.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/rotate_right.png"))));\r
-        flipX.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/flip_x.png"))));\r
-        flipY.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/flip_y.png"))));\r
-\r
-        updateUI();\r
-    }\r
-\r
-    @Override\r
-    public void setSelection(ISelection s) {\r
-        this.selection = ResourceAdaptionUtils.toResources(s);\r
-        try {\r
-            SimanticsUI.getSession().syncRequest(new ReadRequest() {\r
-\r
-                @Override\r
-                public void run(ReadGraph graph) throws DatabaseException {\r
-                    DiagramResource dr = DiagramResource.getInstance(graph);\r
-                    List<Resource> sel = new ArrayList<Resource>();\r
-                    for (Resource r : selection) {\r
-                        if(graph.isInstanceOf(r, dr.Element) && !graph.isInstanceOf(r, dr.Connection) /*&& !graph.isInstanceOf(r, dr.Monitor)*/) {\r
-                            sel.add(r);\r
-                        }\r
-                    }\r
-                    selection = sel.toArray(new Resource[sel.size()]);\r
-\r
-                }\r
-            });\r
-\r
-            updateUI();\r
-        } catch (DatabaseException e) {\r
-            // TODO Auto-generated catch block\r
-            e.printStackTrace();\r
-        }\r
-    }\r
-\r
-    private void updateUI() {\r
-        boolean showAlign = selection.length >= 2;\r
-        boolean showDist = selection.length >= 3;\r
-        boolean showRotate = selection.length >= 1;\r
-        alignBottom.setEnabled(showAlign);\r
-        alignHorizButton.setEnabled(showAlign);\r
-        alignLeft.setEnabled(showAlign);\r
-        alignRight.setEnabled(showAlign);\r
-        alignTop.setEnabled(showAlign);\r
-        alignVertButton.setEnabled(showAlign);\r
-\r
-        distBottom.setEnabled(showDist);\r
-        distHoriz.setEnabled(showDist);\r
-        distHorizBetween.setEnabled(showDist);\r
-        distLeft.setEnabled(showDist);\r
-        distRight.setEnabled(showDist);\r
-        distTop.setEnabled(showDist);\r
-        distVert.setEnabled(showDist);\r
-        distVertBetween.setEnabled(showDist);\r
-\r
-        rotateCCW.setEnabled(showRotate);\r
-        rotateCW.setEnabled(showRotate);\r
-        flipX.setEnabled(showRotate);\r
-        flipY.setEnabled(showRotate);\r
-    }\r
-\r
-    @Override\r
-    public void dispose() {\r
-\r
-    }\r
-\r
-    private Resource[] getSelected() {\r
-        return selection;\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.List;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.diagram.elements.ElementTransforms;
+import org.simantics.diagram.elements.ElementTransforms.SIDE;
+import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.modeling.ui.Activator;
+import org.simantics.ui.SimanticsUI;
+import org.simantics.ui.utils.ResourceAdaptionUtils;
+
+/**
+ * Diagramming alignment tools
+ * 
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ */
+public class AlignTools implements DiagramTools {
+
+    private Resource selection[] = new Resource[0];
+
+    Button alignLeft;
+    Button alignVertButton;
+    Button alignRight;
+    Button alignTop;
+    Button alignHorizButton;
+    Button alignBottom;
+    Button distLeft;
+    Button distVert;
+    Button distRight;
+    Button distVertBetween;
+    Button distTop;
+    Button distHoriz;
+    Button distBottom;
+    Button distHorizBetween;
+
+    Button rotateCW;
+    Button rotateCCW;
+    Button flipX;
+    Button flipY;
+
+
+
+    @Override
+    public String getName() {
+        return "Align";
+    }
+
+
+    @Override
+    public void createContols(Composite parent, FormToolkit toolkit, LocalResourceManager resourceManager) {
+       parent.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true).margins(0, 0).spacing(1,1).create());
+               
+               Composite alignComposite = new Composite(parent, SWT.NONE);
+               Composite distributeComposite = new Composite(parent, SWT.NONE);
+               Composite rotateComposite = new Composite(parent, SWT.NONE);
+               alignComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(true).margins(0, 2).spacing(0, 0).create());
+               distributeComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(4).equalWidth(true).margins(0, 2).spacing(0, 0).create());
+               rotateComposite.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(true).margins(0, 2).spacing(0, 0).create());
+
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignComposite);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distributeComposite);
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(rotateComposite);
+
+        alignLeft = toolkit.createButton(alignComposite, "", SWT.PUSH);
+        //alignLeft.setText("Left");
+        alignLeft.setToolTipText("Align Left Edges");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignLeft);
+
+        alignVertButton = toolkit.createButton(alignComposite, "", SWT.PUSH);
+        //alignVertButton.setText("Middle");
+        alignVertButton.setToolTipText("Center on Vertical Axis");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignVertButton);
+
+        alignRight = toolkit.createButton(alignComposite, "", SWT.PUSH);
+        //alignRight.setText("Right");
+        alignRight.setToolTipText("Align Right Edges");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignRight);
+
+        alignTop = toolkit.createButton(alignComposite, "", SWT.PUSH);
+        //alignTop.setText("Top");
+        alignTop.setToolTipText("Align Top Edges");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignTop);
+
+        alignHorizButton = toolkit.createButton(alignComposite, "", SWT.PUSH);
+        //alignHorizButton.setText("Middle");
+        alignHorizButton.setToolTipText("Center on Horizontal Axis");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignHorizButton);
+
+        alignBottom = toolkit.createButton(alignComposite, "", SWT.PUSH);
+        //alignBottom.setText("Bottom");
+        alignBottom.setToolTipText("Align Bottom Edges");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(alignBottom);
+
+        distLeft = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distLeft.setText("Left");
+        distLeft.setToolTipText("Distribute Left Edges Equidistantly");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distLeft);
+
+        distVert = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distVert.setText("Middle");
+        distVert.setToolTipText("Distribute Centers Equidistantly Horizontally");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distVert);
+
+        distRight = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distRight.setText("Right");
+        distRight.setToolTipText("Distribute Right Edges Equidistantly");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distRight);
+
+        distVertBetween = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distVertBetween.setText("Between");
+        distVertBetween.setToolTipText("Make Horizontal Gaps Between Objects Equal");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distVertBetween);
+
+        distTop = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distTop.setText("Top");
+        distTop.setToolTipText("Distribute Top Edges Equidistantly");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distTop);
+
+        distHoriz = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distHoriz.setText("Middle");
+        distHoriz.setToolTipText("Distribute Centers Equidistantly Vertically");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distHoriz);
+
+        distBottom = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distBottom.setText("Bottom");
+        distBottom.setToolTipText("Distribute Bottom Edges Equidistantly");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distBottom);
+
+        distHorizBetween = toolkit.createButton(distributeComposite, "", SWT.PUSH);
+        //distHorizBetween.setText("Between");
+        distHorizBetween.setToolTipText("Make Vertical Gaps Between Objects Equal");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(distHorizBetween);
+
+        rotateCCW = toolkit.createButton(rotateComposite, "", SWT.PUSH);
+        //rotateCCW.setText("rotate left");
+        rotateCCW.setToolTipText("Rotate Counterclockwise");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(rotateCCW);
+
+        rotateCW = toolkit.createButton(rotateComposite, "", SWT.PUSH);
+        //rotateCW.setText("rotate right");
+        rotateCW.setToolTipText("Rotate Clockwise");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(rotateCW);
+
+        flipX = toolkit.createButton(rotateComposite, "", SWT.PUSH);
+        //flipX.setText("flip");
+        flipX.setToolTipText("Flip About Horizontal Axis");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(flipX);
+
+        flipY = toolkit.createButton(rotateComposite, "", SWT.PUSH);
+        //flipY.setText("mirror");
+        flipY.setToolTipText("Flip About Vertical Axis");
+        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(flipY);
+
+        alignVertButton.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.align(getSelected(), SIDE.VERT);
+            }
+        });
+
+        alignHorizButton.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.align(getSelected(),SIDE.HORIZ);
+            }
+        });
+
+        alignLeft.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.align(getSelected(),SIDE.LEFT);
+            }
+        });
+
+        alignRight.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.align(getSelected(),SIDE.RIGHT);
+            }
+        });
+
+        alignTop.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.align(getSelected(),SIDE.TOP);
+            }
+        });
+
+        alignBottom.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.align(getSelected(),SIDE.BOTTOM);
+            }
+        });
+
+        distLeft.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.LEFT);
+            }
+        });
+
+        distVert.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.VERT);
+            }
+        });
+
+        distRight.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.RIGHT);
+            }
+        });
+
+        distVertBetween.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.VERT_BTW);
+            }
+        });
+
+        distTop.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.TOP);
+            }
+        });
+
+        distHoriz.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.HORIZ);
+            }
+        });
+
+        distBottom.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.BOTTOM);
+            }
+        });
+
+        distHorizBetween.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.dist(getSelected(),SIDE.HORIZ_BTW);
+            }
+        });
+
+        rotateCW.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.rotate(getSelected(),true);
+            }
+        });
+
+        rotateCCW.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.rotate(getSelected(),false);
+            }
+        });
+
+        flipX.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.flip(getSelected(),true);
+            }
+        });
+
+        flipY.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                ElementTransforms.flip(getSelected(),false);
+            }
+        });
+
+        alignLeft.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_left.png"))));
+        alignVertButton.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_center.png"))));
+        alignRight.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_right.png"))));
+        alignTop.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_top.png"))));
+        alignHorizButton.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_middle.png"))));
+        alignBottom.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/align_bottom.png"))));
+
+        distLeft.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_left.png"))));
+        distVert.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_center.png"))));
+        distRight.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_right.png"))));
+        distVertBetween.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_horiz.png"))));
+        distTop.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_top.png"))));
+        distHoriz.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_middle.png"))));
+        distBottom.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_bottom.png"))));
+        distHorizBetween.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/dist_vert.png"))));
+
+        rotateCCW.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/rotate_left.png"))));
+        rotateCW.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/rotate_right.png"))));
+        flipX.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/flip_x.png"))));
+        flipY.setImage(resourceManager.createImage(ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/flip_y.png"))));
+
+        updateUI();
+    }
+
+    @Override
+    public void setSelection(ISelection s) {
+        this.selection = ResourceAdaptionUtils.toResources(s);
+        try {
+            SimanticsUI.getSession().syncRequest(new ReadRequest() {
+
+                @Override
+                public void run(ReadGraph graph) throws DatabaseException {
+                    DiagramResource dr = DiagramResource.getInstance(graph);
+                    List<Resource> sel = new ArrayList<Resource>();
+                    for (Resource r : selection) {
+                        if(graph.isInstanceOf(r, dr.Element) && !graph.isInstanceOf(r, dr.Connection) /*&& !graph.isInstanceOf(r, dr.Monitor)*/) {
+                            sel.add(r);
+                        }
+                    }
+                    selection = sel.toArray(new Resource[sel.size()]);
+
+                }
+            });
+
+            updateUI();
+        } catch (DatabaseException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    private void updateUI() {
+        boolean showAlign = selection.length >= 2;
+        boolean showDist = selection.length >= 3;
+        boolean showRotate = selection.length >= 1;
+        alignBottom.setEnabled(showAlign);
+        alignHorizButton.setEnabled(showAlign);
+        alignLeft.setEnabled(showAlign);
+        alignRight.setEnabled(showAlign);
+        alignTop.setEnabled(showAlign);
+        alignVertButton.setEnabled(showAlign);
+
+        distBottom.setEnabled(showDist);
+        distHoriz.setEnabled(showDist);
+        distHorizBetween.setEnabled(showDist);
+        distLeft.setEnabled(showDist);
+        distRight.setEnabled(showDist);
+        distTop.setEnabled(showDist);
+        distVert.setEnabled(showDist);
+        distVertBetween.setEnabled(showDist);
+
+        rotateCCW.setEnabled(showRotate);
+        rotateCW.setEnabled(showRotate);
+        flipX.setEnabled(showRotate);
+        flipY.setEnabled(showRotate);
+    }
+
+    @Override
+    public void dispose() {
+
+    }
+
+    private Resource[] getSelected() {
+        return selection;
+    }
+
+}