1
2
3
4
5
6
7
8
9
10
11 package edu.uci.ics.jung.visualization.renderers;
12
13 import java.awt.Color;
14 import java.awt.Component;
15 import java.awt.Font;
16 import java.awt.Rectangle;
17 import java.io.Serializable;
18
19 import javax.swing.JComponent;
20 import javax.swing.JLabel;
21 import javax.swing.border.Border;
22 import javax.swing.border.EmptyBorder;
23
24
25
26
27
28
29
30
31
32 @SuppressWarnings("serial")
33 public class DefaultEdgeLabelRenderer extends JLabel implements
34 EdgeLabelRenderer, Serializable {
35
36 protected static Border noFocusBorder = new EmptyBorder(0,0,0,0);
37
38 protected Color pickedEdgeLabelColor = Color.black;
39 protected boolean rotateEdgeLabels;
40
41 public DefaultEdgeLabelRenderer(Color pickedEdgeLabelColor) {
42 this(pickedEdgeLabelColor, true);
43 }
44
45
46
47
48
49
50
51 public DefaultEdgeLabelRenderer(Color pickedEdgeLabelColor, boolean rotateEdgeLabels) {
52 super();
53 this.pickedEdgeLabelColor = pickedEdgeLabelColor;
54 this.rotateEdgeLabels = rotateEdgeLabels;
55 setOpaque(true);
56 setBorder(noFocusBorder);
57 }
58
59
60
61
62 public boolean isRotateEdgeLabels() {
63 return rotateEdgeLabels;
64 }
65
66
67
68 public void setRotateEdgeLabels(boolean rotateEdgeLabels) {
69 this.rotateEdgeLabels = rotateEdgeLabels;
70 }
71
72
73
74
75
76
77 @Override
78 public void setForeground(Color c) {
79 super.setForeground(c);
80 }
81
82
83
84
85
86
87
88 @Override
89 public void setBackground(Color c) {
90 super.setBackground(c);
91 }
92
93
94
95
96
97
98
99
100
101 @Override
102 public void updateUI() {
103 super.updateUI();
104 setForeground(null);
105 setBackground(null);
106 }
107
108
109
110
111
112
113
114
115
116
117
118 public <E> Component getEdgeLabelRendererComponent(JComponent vv, Object value,
119 Font font, boolean isSelected, E edge) {
120
121 super.setForeground(vv.getForeground());
122 if(isSelected) setForeground(pickedEdgeLabelColor);
123 super.setBackground(vv.getBackground());
124
125 if(font != null) {
126 setFont(font);
127 } else {
128 setFont(vv.getFont());
129 }
130 setIcon(null);
131 setBorder(noFocusBorder);
132 setValue(value);
133 return this;
134 }
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150 @Override
151 public boolean isOpaque() {
152 Color back = getBackground();
153 Component p = getParent();
154 if (p != null) {
155 p = p.getParent();
156 }
157 boolean colorMatch =
158 (back != null) && (p != null)
159 && back.equals(p.getBackground()) && p.isOpaque();
160 return !colorMatch && super.isOpaque();
161 }
162
163
164
165
166
167
168 @Override
169 public void validate() {}
170
171
172
173
174
175
176 @Override
177 public void revalidate() {}
178
179
180
181
182
183
184 @Override
185 public void repaint(long tm, int x, int y, int width, int height) {}
186
187
188
189
190
191
192 @Override
193 public void repaint(Rectangle r) { }
194
195
196
197
198
199
200 @Override
201 protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
202
203 if (propertyName=="text") {
204 super.firePropertyChange(propertyName, oldValue, newValue);
205 }
206 }
207
208
209
210
211
212
213 @Override
214 public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) { }
215
216
217
218
219
220
221
222
223
224
225 protected void setValue(Object value) {
226 setText((value == null) ? "" : value.toString());
227 }
228 }