1
14 package demo.view.realizer;
15
16 import demo.view.DemoBase;
17 import y.base.Edge;
18 import y.base.Node;
19 import y.view.ArcEdgeRealizer;
20 import y.view.Arrow;
21 import y.view.AutoRotationSliderEdgeLabelModel;
22 import y.view.BridgeCalculator;
23 import y.view.DefaultGraph2DRenderer;
24 import y.view.Drawable;
25 import y.view.EdgeLabel;
26 import y.view.EdgeRealizer;
27 import y.view.Graph2D;
28 import y.view.ImageNodeRealizer;
29 import y.view.InterfacePort;
30 import y.view.LineType;
31 import y.view.NodeLabel;
32 import y.view.NodeRealizer;
33 import y.view.PolyLineEdgeRealizer;
34 import y.view.ShapeNodeRealizer;
35 import y.view.YLabel;
36
37 import javax.swing.Icon;
38 import javax.swing.ImageIcon;
39 import java.awt.Color;
40 import java.awt.Graphics2D;
41 import java.awt.Rectangle;
42 import java.awt.geom.Ellipse2D;
43 import java.util.Set;
44
45
84
85 public class VisualFeatureDemo extends DemoBase
86 {
87 public VisualFeatureDemo()
88 {
89
91 final Graph2D graph = view.getGraph2D();
92 EdgeRealizer er = graph.getDefaultEdgeRealizer();
93
94 ((DefaultGraph2DRenderer) view.getGraph2DRenderer()).setBridgeCalculator(new BridgeCalculator());
96
97 Drawable drawable = new Drawable() {
99 public void paint(Graphics2D g) {
100 Color color = g.getColor();
101 g.setColor(Color.yellow);
102 Ellipse2D.Double ellipse = new Ellipse2D.Double(-20, -10, 20, 20);
103 g.fill(ellipse);
104 g.setColor(Color.orange);
105 g.draw(ellipse);
106 g.setColor(Color.black);
107 g.drawString("A", -13, 5);
108 g.setColor(color);
109 }
110
111 public Rectangle getBounds() {
112 return new Rectangle(-20, -20, 20, 20);
113 }
114 };
115
116
117 er.setSourceArrow(Arrow.addCustomArrow("coolArrow", drawable, 20, 3));
119
120 er.setTargetArrow(Arrow.STANDARD);
122
123 ((PolyLineEdgeRealizer) er).setSmoothedBends(true);
125
126 er.setLineType(LineType.LINE_2);
128
129 Icon icon;
130 EdgeLabel label = er.getLabel();
132 label.setText("What should I say?");
133 icon = new ImageIcon(getClass().getResource("resource/about24.gif"));
134 label.setIcon(icon);
135
136 icon = new ImageIcon(getClass().getResource("resource/info24.gif"));
138 InterfacePort p = new InterfacePort();
139 p.setIcon(icon);
140 er.setSourcePort(p);
141
142 icon = new ImageIcon(getClass().getResource("resource/home16.gif"));
144 p = new InterfacePort();
145 p.setIcon(icon);
146 er.setTargetPort(p);
147
148 ShapeNodeRealizer nodeRealizer = new ShapeNodeRealizer();
150 nodeRealizer.setShapeType(ShapeNodeRealizer.OCTAGON);
151 nodeRealizer.setDropShadowColor(new Color(0,0,0,64));
153 nodeRealizer.setDropShadowOffsetX((byte)5);
154 nodeRealizer.setDropShadowOffsetY((byte)5);
155 nodeRealizer.setSize(80,80);
157 graph.setDefaultNodeRealizer(nodeRealizer);
158
159 ImageNodeRealizer imageNodeRealizer = new ImageNodeRealizer();
161 imageNodeRealizer.setImageURL(getClass().getResource("/demo/view/ports/resource/4pkt.gif"));
162 imageNodeRealizer.setAlphaImageUsed(true);
164 imageNodeRealizer.setCenter(300, 340);
165 imageNodeRealizer.setToImageSize();
166
167 final Node node1 = graph.createNode(imageNodeRealizer);
169 final Node node2 = graph.createNode(50, 50);
170
171 final Edge edge = graph.createEdge(node1, node2);
173 graph.getRealizer(edge).appendBend(200, 70);
174
175 nodeRealizer.setShapeType(ShapeNodeRealizer.ELLIPSE);
177 final NodeLabel nodeLabel = nodeRealizer.createNodeLabel();
178 nodeLabel.setText("<html>Hello <b>world</b>!</html>");
179 nodeRealizer.addLabel(nodeLabel);
180 nodeLabel.setModel(NodeLabel.SANDWICH);
181 nodeLabel.setPosition(NodeLabel.S);
182 final Node node3 = graph.createNode(350, 50);
183 nodeRealizer.setFillColor(Color.yellow);
184 final Node node4 = graph.createNode(50, 200);
185
186 final NodeRealizer node4Realizer = graph.getRealizer(node4);
187 node4Realizer.setSize(100, 100);
188 node4Realizer.setFillColor2(Color.red);
189 final NodeLabel node4Label = node4Realizer.getLabel();
190 node4Label.setText("Whoohoo! Transparency! and automatically cropped text for custom label size!.");
191
192 Set configurations = NodeLabel.getFactory().getAvailableConfigurations();
193 if (configurations.contains("CroppingLabel")){
195 node4Label.setConfiguration("CroppingLabel");
196 node4Label.setAutoSizePolicy(YLabel.AUTOSIZE_NONE);
197 node4Label.setContentSize(85, 60);
198 }
199
200 node4Label.setRotationAngle(45);
201 node4Label.setBackgroundColor(new Color(255, 255, 255, 128));
202 node4Label.setLineColor(Color.GRAY);
203
204 final ArcEdgeRealizer arcEdgeRealizer = new ArcEdgeRealizer();
206 arcEdgeRealizer.setTargetArrow(Arrow.STANDARD);
207 arcEdgeRealizer.setLineType(LineType.DOTTED_2);
208 graph.createEdge(node3, node4, arcEdgeRealizer);
209
210 final PolyLineEdgeRealizer polyLineEdgeRealizer = new PolyLineEdgeRealizer();
212 polyLineEdgeRealizer.setTargetArrow(Arrow.addCustomArrow("offsetArrow", Arrow.WHITE_DELTA, 10));
214 polyLineEdgeRealizer.setLineType(LineType.DASHED_1);
215 final EdgeLabel polyLineLabel = polyLineEdgeRealizer.getLabel();
217 final AutoRotationSliderEdgeLabelModel labelModel = new AutoRotationSliderEdgeLabelModel();
218 labelModel.setDistance(-15);
219 polyLineLabel.setText("PolyLine Label");
220
221 polyLineLabel.setLabelModel(labelModel);
222 polyLineLabel.setModelParameter(labelModel.getDefaultParameter());
223
224 graph.createEdge(node4, node3, polyLineEdgeRealizer);
225 }
226
227 public static void main(String args[])
228 {
229 initLnF();
230 VisualFeatureDemo demo = new VisualFeatureDemo();
231 demo.start("Visual Feature Demo");
232 }
233 }
234
235
236
237