]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.g2d/src/org/simantics/g2d/element/handler/impl/ConfigurableEdgeVisuals.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / element / handler / impl / ConfigurableEdgeVisuals.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.g2d.element.handler.impl;
13
14 import java.awt.BasicStroke;
15 import java.awt.Stroke;
16
17 import org.simantics.g2d.diagram.IDiagram;
18 import org.simantics.g2d.element.ElementHints;
19 import org.simantics.g2d.element.IElement;
20 import org.simantics.g2d.element.handler.EdgeVisuals;
21 import org.simantics.g2d.element.handler.LifeCycle;
22
23 /**
24  * This implementation is for edges whose visual properties can be modified.
25  * 
26  * @author Toni Kalajainen
27  */
28 public class ConfigurableEdgeVisuals implements EdgeVisuals, LifeCycle {
29
30     private static final long serialVersionUID = -8662807810086649742L;
31
32     public static final Stroke DEFAULT_STROKE =
33         new BasicStroke(0.15f,
34                 BasicStroke.CAP_BUTT,
35                 BasicStroke.JOIN_ROUND,
36                 10.0f, null, 0.0f);
37
38     public static final ConfigurableEdgeVisuals DEFAULT =
39         new ConfigurableEdgeVisuals(ArrowType.None, ArrowType.Fill, DEFAULT_STROKE, 1.0, 1.0);
40
41     ArrowType beginArrow, endArrow;
42     public Stroke stroke;
43     public StrokeType strokeType;
44     double beginArrowSize, endArrowSize;
45
46     public ConfigurableEdgeVisuals()
47     {
48         this.beginArrow = ArrowType.Stroke;
49         this.endArrow = ArrowType.Stroke;
50         this.stroke = DEFAULT_STROKE;
51         this.strokeType = StrokeType.Relative;
52         beginArrowSize = 1;
53         endArrowSize = 1;
54     }
55
56     public ConfigurableEdgeVisuals(ArrowType initialBeginArrow, ArrowType initialEndArrow, Stroke initialStroke, double beginArrowSize, double endArrowSize)
57     {
58         this.beginArrow = initialBeginArrow;
59         this.endArrow = initialEndArrow;
60         this.stroke = initialStroke;
61         this.strokeType = StrokeType.Relative;
62         this.beginArrowSize = beginArrowSize;
63         this.endArrowSize = endArrowSize;
64     }
65
66     public ConfigurableEdgeVisuals(ArrowType initialBeginArrow, ArrowType initialEndArrow, Stroke initialStroke, StrokeType initialStrokeType, double beginArrowSize, double endArrowSize)
67     {
68         this.beginArrow = initialBeginArrow;
69         this.endArrow = initialEndArrow;
70         this.stroke = initialStroke;
71         this.strokeType = initialStrokeType;
72         this.beginArrowSize = beginArrowSize;
73         this.endArrowSize = endArrowSize;
74     }
75
76     @Override
77     public ArrowType getArrowType(IElement e, EdgeEnd end) {
78         if (end == EdgeEnd.Begin)
79             return e.getHint(ElementHints.KEY_BEGIN_ARROW);
80         if (end == EdgeEnd.End)
81             return e.getHint(ElementHints.KEY_END_ARROW);
82         return null;
83     }
84
85     @Override
86     public StrokeType getStrokeType(IElement e) {
87         return e.getHint(ElementHints.KEY_EDGE_STROKE_TYPE);
88     }
89
90     @Override
91     public Stroke getStroke(IElement e) {
92         return e.getHint(ElementHints.KEY_EDGE_STROKE);
93     }
94
95     @Override
96     public void setArrowType(IElement e, EdgeEnd end, ArrowType arrowType) {
97         if (end == EdgeEnd.Begin)
98             e.setHint(ElementHints.KEY_BEGIN_ARROW, arrowType);
99         if (end == EdgeEnd.End)
100             e.setHint(ElementHints.KEY_END_ARROW, arrowType);
101     }
102
103     @Override
104     public void setStrokeType(IElement e, StrokeType strokeType) {
105         e.setHint(ElementHints.KEY_EDGE_STROKE_TYPE, strokeType);
106     }
107
108     @Override
109     public void setStroke(IElement e, Stroke s) {
110         e.setHint(ElementHints.KEY_EDGE_STROKE, s);
111     }
112
113     @Override
114     public void onElementActivated(IDiagram d, IElement e) {
115     }
116
117     @Override
118     public void onElementCreated(IElement e) {
119         e.setHint(ElementHints.KEY_BEGIN_ARROW, beginArrow);
120         e.setHint(ElementHints.KEY_END_ARROW, endArrow);
121         e.setHint(ElementHints.KEY_EDGE_STROKE, stroke);
122         e.setHint(ElementHints.KEY_EDGE_STROKE_TYPE, strokeType);
123         e.setHint(ElementHints.KEY_BEGIN_ARROW_SIZE, beginArrowSize);
124         e.setHint(ElementHints.KEY_END_ARROW_SIZE, endArrowSize);
125     }
126
127     @Override
128     public void onElementDeactivated(IDiagram d, IElement e) {
129     }
130
131     @Override
132     public void onElementDestroyed(IElement e) {
133     }
134
135     @Override
136     public double getArrowSize(IElement e, EdgeEnd end) {
137         if (end==EdgeEnd.Begin)
138             return e.getHint(ElementHints.KEY_BEGIN_ARROW_SIZE);
139         else
140             if (end==EdgeEnd.End)
141                 return e.getHint(ElementHints.KEY_END_ARROW_SIZE);
142         return 0;
143     }
144
145     @Override
146     public void setArrowSize(IElement e, EdgeEnd end, double size) {
147         if (end==EdgeEnd.Begin)
148             e.setHint(ElementHints.KEY_BEGIN_ARROW_SIZE, size);
149         else
150             if (end==EdgeEnd.End)
151                 e.setHint(ElementHints.KEY_END_ARROW_SIZE, size);
152     }
153
154 }