annotate src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/DiagramConnectionWidget.java @ 1552:c18cbe5936b8

6941466: Oracle rebranding changes for Hotspot repositories Summary: Change all the Sun copyrights to Oracle copyright Reviewed-by: ohair
author trims
date Thu, 27 May 2010 19:08:38 -0700
parents 30369db7f5d2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
220
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 220
diff changeset
2 * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
220
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
4 *
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
7 * published by the Free Software Foundation.
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
8 *
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
13 * accompanied this code).
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
14 *
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 220
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 220
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 220
diff changeset
21 * questions.
220
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
22 *
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
23 */
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
24 package com.sun.hotspot.igv.view.widgets;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
25
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
26 import com.sun.hotspot.igv.graph.Connection;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
27 import com.sun.hotspot.igv.graph.Figure;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
28 import com.sun.hotspot.igv.view.DiagramScene;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
29 import java.awt.BasicStroke;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
30 import java.awt.Color;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
31 import java.awt.Composite;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
32 import java.awt.Graphics2D;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
33 import java.awt.Point;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
34 import java.awt.Rectangle;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
35 import java.awt.Stroke;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
36 import java.util.ArrayList;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
37 import java.util.List;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
38 import org.netbeans.api.visual.anchor.AnchorShape;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
39 import org.netbeans.api.visual.model.ObjectState;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
40 import org.netbeans.api.visual.widget.ConnectionWidget;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
41 import org.netbeans.api.visual.widget.Scene;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
42
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
43 /**
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
44 *
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
45 * @author Thomas Wuerthinger
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
46 */
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
47 public class DiagramConnectionWidget extends ConnectionWidget {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
48
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
49 private static Stroke DASHED_STROKE = new BasicStroke(
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
50 1,
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
51 BasicStroke.CAP_BUTT,
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
52 BasicStroke.JOIN_ROUND,
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
53 0,
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
54 new float[]{2},
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
55 0);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
56 private static Stroke NORMAL_STROKE = new BasicStroke(1);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
57 private static Stroke BOLD_STROKE = new BasicStroke(3);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
58 public static int WHITE_FACTOR = 5;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
59 private Connection connection;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
60 private Color color;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
61 private Point lastSourceAnchor;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
62 private Point lastTargetAnchor;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
63 private List<Point> controlPoints;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
64 private Rectangle clientArea;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
65 private boolean split;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
66 private int[] xPoints;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
67 private int[] yPoints;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
68 private int pointCount;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
69
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
70 /** Creates a new instance of ConnectionWidget */
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
71 public DiagramConnectionWidget(Connection connection, Scene scene) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
72 super(scene);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
73 this.connection = connection;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
74 color = connection.getColor();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
75 if (connection.getStyle() == Connection.ConnectionStyle.DASHED) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
76 this.setStroke(DASHED_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
77 } else if (connection.getStyle() == Connection.ConnectionStyle.BOLD) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
78 this.setStroke(BOLD_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
79 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
80 this.setStroke(NORMAL_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
81 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
82 this.setCheckClipping(true);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
83 clientArea = new Rectangle();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
84 updateControlPoints();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
85 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
86
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
87 public Connection getConnection() {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
88 return connection;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
89 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
90
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
91 public void updateControlPoints() {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
92 List<Point> newControlPoints = connection.getControlPoints();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
93 Connection c = connection;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
94 Figure f = c.getInputSlot().getFigure();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
95 Point p = new Point(f.getPosition());
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
96 p.translate(c.getInputSlot().getRelativePosition().x, f.getSize().height / 2);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
97 Point p4 = new Point(f.getPosition());
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
98 p4.translate(c.getInputSlot().getRelativePosition().x, c.getInputSlot().getRelativePosition().y);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
99
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
100 Figure f2 = c.getOutputSlot().getFigure();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
101 Point p2 = new Point(f2.getPosition());
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
102 p2.translate(c.getOutputSlot().getRelativePosition().x, f2.getSize().height / 2);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
103 Point p3 = new Point(f2.getPosition());
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
104 p3.translate(c.getOutputSlot().getRelativePosition().x, c.getOutputSlot().getRelativePosition().y);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
105
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
106 /*if(controlPoints.size() >= 2) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
107 String className = Preferences.userNodeForPackage(PreferenceConstants.class).get(PreferenceConstants.KEY_LINE_GENERATOR, PreferenceConstants.DEFAULT_LINE_GENERATOR);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
108 try {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
109 LineGenerator lg = (LineGenerator)Class.forName(className).newInstance();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
110 controlPoints = lg.createLine(controlPoints, p2, p);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
111 } catch (InstantiationException ex) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
112 } catch (IllegalAccessException ex) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
113 } catch (ClassNotFoundException ex) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
114 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
115 }*/
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
116
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
117 this.controlPoints = newControlPoints;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
118 pointCount = newControlPoints.size();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
119 xPoints = new int[pointCount];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
120 yPoints = new int[pointCount];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
121 int minX = Integer.MAX_VALUE;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
122 int maxX = Integer.MIN_VALUE;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
123 int minY = Integer.MAX_VALUE;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
124 int maxY = Integer.MIN_VALUE;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
125 split = false;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
126 for (int i = 0; i < pointCount; i++) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
127 if (newControlPoints.get(i) == null) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
128 split = true;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
129 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
130 int curX = newControlPoints.get(i).x;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
131 int curY = newControlPoints.get(i).y;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
132 this.xPoints[i] = curX;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
133 this.yPoints[i] = curY;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
134 minX = Math.min(minX, curX);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
135 maxX = Math.max(maxX, curX);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
136 minY = Math.min(minY, curY);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
137 maxY = Math.max(maxY, curY);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
138 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
139 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
140
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
141 this.clientArea = new Rectangle(minX, minY, maxX - minX, maxY - minY);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
142 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
143
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
144 @Override
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
145 protected void paintWidget() {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
146 Graphics2D g = this.getGraphics();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
147
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
148 if (xPoints.length == 0 || Math.abs(xPoints[0] - xPoints[xPoints.length - 1]) > 2000) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
149 return;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
150 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
151
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
152 //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
153 //g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
154 //g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
155
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
156 DiagramScene ds = (DiagramScene) this.getScene();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
157 boolean shouldHide = false;//ds.getShouldHide(this);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
158
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
159 Composite oldComposite = null;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
160 if (shouldHide) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
161 Color c = new Color(255 - (255 - color.getRed()) / WHITE_FACTOR, 255 - (255 - color.getGreen()) / WHITE_FACTOR, 255 - (255 - color.getBlue()) / WHITE_FACTOR);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
162 g.setPaint(c);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
163 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
164 g.setPaint(color);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
165 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
166
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
167 if (split) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
168 for (int i = 1; i < controlPoints.size(); i++) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
169 Point prev = controlPoints.get(i - 1);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
170 Point cur = controlPoints.get(i);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
171 if (cur == null || prev == null) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
172 continue;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
173 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
174
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
175 g.drawLine(prev.x, prev.y, cur.x, cur.y);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
176 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
177 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
178 g.drawPolyline(xPoints, yPoints, pointCount);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
179 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
180
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
181 /*for(int i=0; i<xPoints.length; i++) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
182 int x = xPoints[i];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
183 int y = yPoints[i];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
184 g.fillOval(x - 2, y - 2, 4, 4);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
185 }*/
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
186
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
187 if (xPoints.length >= 2) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
188 Graphics2D g2 = (Graphics2D) g.create();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
189 int xOff = xPoints[xPoints.length - 2] - xPoints[xPoints.length - 1];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
190 int yOff = yPoints[yPoints.length - 2] - yPoints[yPoints.length - 1];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
191 if (xOff == 0 && yOff == 0 && yPoints.length >= 3) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
192 xOff = xPoints[xPoints.length - 3] - xPoints[xPoints.length - 1];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
193 yOff = yPoints[yPoints.length - 3] - yPoints[yPoints.length - 1];
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
194 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
195 g2.translate(xPoints[xPoints.length - 1], yPoints[yPoints.length - 1]);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
196 g2.rotate(Math.atan2(yOff, xOff));
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
197
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
198 g2.scale(0.55, 0.80);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
199 AnchorShape.TRIANGLE_FILLED.paint(g2, false);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
200 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
201 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
202
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
203 @Override
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
204 public void notifyStateChanged(ObjectState previousState, ObjectState state) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
205
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
206 if (previousState.isHovered() != state.isHovered()) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
207 color = connection.getColor();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
208 if (state.isHovered()) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
209 this.setStroke(BOLD_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
210 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
211 this.setStroke(NORMAL_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
212 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
213
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
214 if (state.isHovered()) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
215 this.setStroke(BOLD_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
216 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
217 this.setStroke(NORMAL_STROKE);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
218 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
219
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
220 repaint();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
221 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
222 super.notifyStateChanged(previousState, state);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
223 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
224
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
225 @Override
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
226 public List<Point> getControlPoints() {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
227 if (split) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
228 ArrayList<Point> result = new ArrayList<Point>();
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
229 for (Point p : controlPoints) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
230 if (p != null) {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
231 result.add(p);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
232 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
233 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
234 return result;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
235 } else {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
236 return controlPoints;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
237 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
238 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
239
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
240 @Override
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
241 public String toString() {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
242 return "ConnectionWidget[" + connection + "]";
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
243 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
244
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
245 @Override
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
246 protected Rectangle calculateClientArea() {
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
247 Rectangle result = new Rectangle(clientArea);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
248 result.grow(10, 10);
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
249 return result;
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
250 }
30369db7f5d2 6604014: add support for ideal graph visualizer
never
parents:
diff changeset
251 }