-/*******************************************************************************\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.g2d.element.handler.impl;\r
-\r
-import java.awt.BasicStroke;\r
-import java.awt.Stroke;\r
-\r
-import org.simantics.g2d.diagram.IDiagram;\r
-import org.simantics.g2d.element.ElementHints;\r
-import org.simantics.g2d.element.IElement;\r
-import org.simantics.g2d.element.handler.EdgeVisuals;\r
-import org.simantics.g2d.element.handler.LifeCycle;\r
-\r
-/**\r
- * This implementation is for edges whose visual properties can be modified.\r
- * \r
- * @author Toni Kalajainen\r
- */\r
-public class ConfigurableEdgeVisuals implements EdgeVisuals, LifeCycle {\r
-\r
- private static final long serialVersionUID = -8662807810086649742L;\r
-\r
- public static final Stroke DEFAULT_STROKE =\r
- new BasicStroke(0.15f,\r
- BasicStroke.CAP_BUTT,\r
- BasicStroke.JOIN_ROUND,\r
- 10.0f, null, 0.0f);\r
-\r
- public static final ConfigurableEdgeVisuals DEFAULT =\r
- new ConfigurableEdgeVisuals(ArrowType.None, ArrowType.Fill, DEFAULT_STROKE, 1.0, 1.0);\r
-\r
- ArrowType beginArrow, endArrow;\r
- public Stroke stroke;\r
- public StrokeType strokeType;\r
- double beginArrowSize, endArrowSize;\r
-\r
- public ConfigurableEdgeVisuals()\r
- {\r
- this.beginArrow = ArrowType.Stroke;\r
- this.endArrow = ArrowType.Stroke;\r
- this.stroke = DEFAULT_STROKE;\r
- this.strokeType = StrokeType.Relative;\r
- beginArrowSize = 1;\r
- endArrowSize = 1;\r
- }\r
-\r
- public ConfigurableEdgeVisuals(ArrowType initialBeginArrow, ArrowType initialEndArrow, Stroke initialStroke, double beginArrowSize, double endArrowSize)\r
- {\r
- this.beginArrow = initialBeginArrow;\r
- this.endArrow = initialEndArrow;\r
- this.stroke = initialStroke;\r
- this.strokeType = StrokeType.Relative;\r
- this.beginArrowSize = beginArrowSize;\r
- this.endArrowSize = endArrowSize;\r
- }\r
-\r
- public ConfigurableEdgeVisuals(ArrowType initialBeginArrow, ArrowType initialEndArrow, Stroke initialStroke, StrokeType initialStrokeType, double beginArrowSize, double endArrowSize)\r
- {\r
- this.beginArrow = initialBeginArrow;\r
- this.endArrow = initialEndArrow;\r
- this.stroke = initialStroke;\r
- this.strokeType = initialStrokeType;\r
- this.beginArrowSize = beginArrowSize;\r
- this.endArrowSize = endArrowSize;\r
- }\r
-\r
- @Override\r
- public ArrowType getArrowType(IElement e, EdgeEnd end) {\r
- if (end == EdgeEnd.Begin)\r
- return e.getHint(ElementHints.KEY_BEGIN_ARROW);\r
- if (end == EdgeEnd.End)\r
- return e.getHint(ElementHints.KEY_END_ARROW);\r
- return null;\r
- }\r
-\r
- @Override\r
- public StrokeType getStrokeType(IElement e) {\r
- return e.getHint(ElementHints.KEY_EDGE_STROKE_TYPE);\r
- }\r
-\r
- @Override\r
- public Stroke getStroke(IElement e) {\r
- return e.getHint(ElementHints.KEY_EDGE_STROKE);\r
- }\r
-\r
- @Override\r
- public void setArrowType(IElement e, EdgeEnd end, ArrowType arrowType) {\r
- if (end == EdgeEnd.Begin)\r
- e.setHint(ElementHints.KEY_BEGIN_ARROW, arrowType);\r
- if (end == EdgeEnd.End)\r
- e.setHint(ElementHints.KEY_END_ARROW, arrowType);\r
- }\r
-\r
- @Override\r
- public void setStrokeType(IElement e, StrokeType strokeType) {\r
- e.setHint(ElementHints.KEY_EDGE_STROKE_TYPE, strokeType);\r
- }\r
-\r
- @Override\r
- public void setStroke(IElement e, Stroke s) {\r
- e.setHint(ElementHints.KEY_EDGE_STROKE, s);\r
- }\r
-\r
- @Override\r
- public void onElementActivated(IDiagram d, IElement e) {\r
- }\r
-\r
- @Override\r
- public void onElementCreated(IElement e) {\r
- e.setHint(ElementHints.KEY_BEGIN_ARROW, beginArrow);\r
- e.setHint(ElementHints.KEY_END_ARROW, endArrow);\r
- e.setHint(ElementHints.KEY_EDGE_STROKE, stroke);\r
- e.setHint(ElementHints.KEY_EDGE_STROKE_TYPE, strokeType);\r
- e.setHint(ElementHints.KEY_BEGIN_ARROW_SIZE, beginArrowSize);\r
- e.setHint(ElementHints.KEY_END_ARROW_SIZE, endArrowSize);\r
- }\r
-\r
- @Override\r
- public void onElementDeactivated(IDiagram d, IElement e) {\r
- }\r
-\r
- @Override\r
- public void onElementDestroyed(IElement e) {\r
- }\r
-\r
- @Override\r
- public double getArrowSize(IElement e, EdgeEnd end) {\r
- if (end==EdgeEnd.Begin)\r
- return e.getHint(ElementHints.KEY_BEGIN_ARROW_SIZE);\r
- else\r
- if (end==EdgeEnd.End)\r
- return e.getHint(ElementHints.KEY_END_ARROW_SIZE);\r
- return 0;\r
- }\r
-\r
- @Override\r
- public void setArrowSize(IElement e, EdgeEnd end, double size) {\r
- if (end==EdgeEnd.Begin)\r
- e.setHint(ElementHints.KEY_BEGIN_ARROW_SIZE, size);\r
- else\r
- if (end==EdgeEnd.End)\r
- e.setHint(ElementHints.KEY_END_ARROW_SIZE, size);\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.g2d.element.handler.impl;
+
+import java.awt.BasicStroke;
+import java.awt.Stroke;
+
+import org.simantics.g2d.diagram.IDiagram;
+import org.simantics.g2d.element.ElementHints;
+import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.element.handler.EdgeVisuals;
+import org.simantics.g2d.element.handler.LifeCycle;
+
+/**
+ * This implementation is for edges whose visual properties can be modified.
+ *
+ * @author Toni Kalajainen
+ */
+public class ConfigurableEdgeVisuals implements EdgeVisuals, LifeCycle {
+
+ private static final long serialVersionUID = -8662807810086649742L;
+
+ public static final Stroke DEFAULT_STROKE =
+ new BasicStroke(0.15f,
+ BasicStroke.CAP_BUTT,
+ BasicStroke.JOIN_ROUND,
+ 10.0f, null, 0.0f);
+
+ public static final ConfigurableEdgeVisuals DEFAULT =
+ new ConfigurableEdgeVisuals(ArrowType.None, ArrowType.Fill, DEFAULT_STROKE, 1.0, 1.0);
+
+ ArrowType beginArrow, endArrow;
+ public Stroke stroke;
+ public StrokeType strokeType;
+ double beginArrowSize, endArrowSize;
+
+ public ConfigurableEdgeVisuals()
+ {
+ this.beginArrow = ArrowType.Stroke;
+ this.endArrow = ArrowType.Stroke;
+ this.stroke = DEFAULT_STROKE;
+ this.strokeType = StrokeType.Relative;
+ beginArrowSize = 1;
+ endArrowSize = 1;
+ }
+
+ public ConfigurableEdgeVisuals(ArrowType initialBeginArrow, ArrowType initialEndArrow, Stroke initialStroke, double beginArrowSize, double endArrowSize)
+ {
+ this.beginArrow = initialBeginArrow;
+ this.endArrow = initialEndArrow;
+ this.stroke = initialStroke;
+ this.strokeType = StrokeType.Relative;
+ this.beginArrowSize = beginArrowSize;
+ this.endArrowSize = endArrowSize;
+ }
+
+ public ConfigurableEdgeVisuals(ArrowType initialBeginArrow, ArrowType initialEndArrow, Stroke initialStroke, StrokeType initialStrokeType, double beginArrowSize, double endArrowSize)
+ {
+ this.beginArrow = initialBeginArrow;
+ this.endArrow = initialEndArrow;
+ this.stroke = initialStroke;
+ this.strokeType = initialStrokeType;
+ this.beginArrowSize = beginArrowSize;
+ this.endArrowSize = endArrowSize;
+ }
+
+ @Override
+ public ArrowType getArrowType(IElement e, EdgeEnd end) {
+ if (end == EdgeEnd.Begin)
+ return e.getHint(ElementHints.KEY_BEGIN_ARROW);
+ if (end == EdgeEnd.End)
+ return e.getHint(ElementHints.KEY_END_ARROW);
+ return null;
+ }
+
+ @Override
+ public StrokeType getStrokeType(IElement e) {
+ return e.getHint(ElementHints.KEY_EDGE_STROKE_TYPE);
+ }
+
+ @Override
+ public Stroke getStroke(IElement e) {
+ return e.getHint(ElementHints.KEY_EDGE_STROKE);
+ }
+
+ @Override
+ public void setArrowType(IElement e, EdgeEnd end, ArrowType arrowType) {
+ if (end == EdgeEnd.Begin)
+ e.setHint(ElementHints.KEY_BEGIN_ARROW, arrowType);
+ if (end == EdgeEnd.End)
+ e.setHint(ElementHints.KEY_END_ARROW, arrowType);
+ }
+
+ @Override
+ public void setStrokeType(IElement e, StrokeType strokeType) {
+ e.setHint(ElementHints.KEY_EDGE_STROKE_TYPE, strokeType);
+ }
+
+ @Override
+ public void setStroke(IElement e, Stroke s) {
+ e.setHint(ElementHints.KEY_EDGE_STROKE, s);
+ }
+
+ @Override
+ public void onElementActivated(IDiagram d, IElement e) {
+ }
+
+ @Override
+ public void onElementCreated(IElement e) {
+ e.setHint(ElementHints.KEY_BEGIN_ARROW, beginArrow);
+ e.setHint(ElementHints.KEY_END_ARROW, endArrow);
+ e.setHint(ElementHints.KEY_EDGE_STROKE, stroke);
+ e.setHint(ElementHints.KEY_EDGE_STROKE_TYPE, strokeType);
+ e.setHint(ElementHints.KEY_BEGIN_ARROW_SIZE, beginArrowSize);
+ e.setHint(ElementHints.KEY_END_ARROW_SIZE, endArrowSize);
+ }
+
+ @Override
+ public void onElementDeactivated(IDiagram d, IElement e) {
+ }
+
+ @Override
+ public void onElementDestroyed(IElement e) {
+ }
+
+ @Override
+ public double getArrowSize(IElement e, EdgeEnd end) {
+ if (end==EdgeEnd.Begin)
+ return e.getHint(ElementHints.KEY_BEGIN_ARROW_SIZE);
+ else
+ if (end==EdgeEnd.End)
+ return e.getHint(ElementHints.KEY_END_ARROW_SIZE);
+ return 0;
+ }
+
+ @Override
+ public void setArrowSize(IElement e, EdgeEnd end, double size) {
+ if (end==EdgeEnd.Begin)
+ e.setHint(ElementHints.KEY_BEGIN_ARROW_SIZE, size);
+ else
+ if (end==EdgeEnd.End)
+ e.setHint(ElementHints.KEY_END_ARROW_SIZE, size);
+ }
+
+}