1 package edu.uci.ics.jung.visualization;
2
3 import java.awt.BasicStroke;
4 import java.awt.Font;
5 import java.awt.Paint;
6 import java.awt.Shape;
7 import java.awt.Stroke;
8
9 import javax.swing.CellRendererPane;
10 import javax.swing.Icon;
11 import javax.swing.JComponent;
12
13 import com.google.common.base.Function;
14 import com.google.common.base.Predicate;
15
16 import edu.uci.ics.jung.algorithms.layout.GraphElementAccessor;
17 import edu.uci.ics.jung.graph.Graph;
18 import edu.uci.ics.jung.graph.util.Context;
19 import edu.uci.ics.jung.graph.util.EdgeIndexFunction;
20 import edu.uci.ics.jung.graph.util.EdgeType;
21 import edu.uci.ics.jung.visualization.picking.PickedState;
22 import edu.uci.ics.jung.visualization.renderers.EdgeLabelRenderer;
23 import edu.uci.ics.jung.visualization.renderers.VertexLabelRenderer;
24 import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator;
25
26 public interface RenderContext<V, E> {
27
28 float[] dotting = {1.0f, 3.0f};
29 float[] dashing = {5.0f};
30
31
32
33
34
35 Stroke DOTTED = new BasicStroke(1.0f,
36 BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, dotting, 0f);
37
38
39
40
41
42 Stroke DASHED = new BasicStroke(1.0f,
43 BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL, 1.0f, dashing, 0f);
44
45
46
47
48 int LABEL_OFFSET = 10;
49
50 int getLabelOffset();
51
52 void setLabelOffset(int labelOffset);
53
54 float getArrowPlacementTolerance();
55
56 void setArrowPlacementTolerance(float arrow_placement_tolerance);
57
58 Function<? super Context<Graph<V,E>,E>,Shape> getEdgeArrowTransformer();
59
60 void setEdgeArrowTransformer(Function<? super Context<Graph<V,E>,E>,Shape> edgeArrowTransformer);
61
62 Predicate<Context<Graph<V,E>,E>> getEdgeArrowPredicate() ;
63
64 void setEdgeArrowPredicate(Predicate<Context<Graph<V,E>,E>> edgeArrowPredicate);
65
66 Function<? super E,Font> getEdgeFontTransformer();
67
68 void setEdgeFontTransformer(Function<? super E,Font> edgeFontTransformer);
69
70 Predicate<Context<Graph<V,E>,E>> getEdgeIncludePredicate();
71
72 void setEdgeIncludePredicate(Predicate<Context<Graph<V,E>,E>> edgeIncludePredicate);
73
74 Function<? super Context<Graph<V,E>,E>,Number> getEdgeLabelClosenessTransformer();
75
76 void setEdgeLabelClosenessTransformer(
77 Function<? super Context<Graph<V,E>,E>,Number> edgeLabelClosenessTransformer);
78
79 EdgeLabelRenderer getEdgeLabelRenderer();
80
81 void setEdgeLabelRenderer(EdgeLabelRenderer edgeLabelRenderer);
82
83 Function<? super E,Paint> getEdgeFillPaintTransformer();
84
85 void setEdgeFillPaintTransformer(Function<? super E,Paint> edgePaintTransformer);
86
87 Function<? super E,Paint> getEdgeDrawPaintTransformer();
88
89 void setEdgeDrawPaintTransformer(Function<? super E,Paint> edgeDrawPaintTransformer);
90
91 Function<? super E,Paint> getArrowDrawPaintTransformer();
92
93 void setArrowDrawPaintTransformer(Function<? super E,Paint> arrowDrawPaintTransformer);
94
95 Function<? super E,Paint> getArrowFillPaintTransformer();
96
97 void setArrowFillPaintTransformer(Function<? super E,Paint> arrowFillPaintTransformer);
98
99 Function<? super E, Shape> getEdgeShapeTransformer();
100
101 void setEdgeShapeTransformer(Function<? super E, Shape> edgeShapeTransformer);
102
103 Function<? super E,String> getEdgeLabelTransformer();
104
105 void setEdgeLabelTransformer(Function<? super E,String> edgeStringer);
106
107 Function<? super E,Stroke> getEdgeStrokeTransformer();
108
109 void setEdgeStrokeTransformer(Function<? super E,Stroke> edgeStrokeTransformer);
110
111 Function<? super E,Stroke> getEdgeArrowStrokeTransformer();
112
113 void setEdgeArrowStrokeTransformer(Function<? super E,Stroke> edgeArrowStrokeTransformer);
114
115 GraphicsDecorator getGraphicsContext();
116
117 void setGraphicsContext(GraphicsDecorator graphicsContext);
118
119 EdgeIndexFunction<V, E> getParallelEdgeIndexFunction();
120
121 void setParallelEdgeIndexFunction(
122 EdgeIndexFunction<V, E> parallelEdgeIndexFunction);
123
124 PickedState<E> getPickedEdgeState();
125
126 void setPickedEdgeState(PickedState<E> pickedEdgeState);
127
128 PickedState<V> getPickedVertexState();
129
130 void setPickedVertexState(PickedState<V> pickedVertexState);
131
132 CellRendererPane getRendererPane();
133
134 void setRendererPane(CellRendererPane rendererPane);
135
136 JComponent getScreenDevice();
137
138 void setScreenDevice(JComponent screenDevice);
139
140 Function<? super V,Font> getVertexFontTransformer();
141
142 void setVertexFontTransformer(Function<? super V,Font> vertexFontTransformer);
143
144 Function<? super V,Icon> getVertexIconTransformer();
145
146 void setVertexIconTransformer(Function<? super V,Icon> vertexIconTransformer);
147
148 Predicate<Context<Graph<V,E>,V>> getVertexIncludePredicate();
149
150 void setVertexIncludePredicate(Predicate<Context<Graph<V,E>,V>> vertexIncludePredicate);
151
152 VertexLabelRenderer getVertexLabelRenderer();
153
154 void setVertexLabelRenderer(VertexLabelRenderer vertexLabelRenderer);
155
156 Function<? super V,Paint> getVertexFillPaintTransformer();
157
158 void setVertexFillPaintTransformer(Function<? super V,Paint> vertexFillPaintTransformer);
159
160 Function<? super V,Paint> getVertexDrawPaintTransformer();
161
162 void setVertexDrawPaintTransformer(Function<? super V,Paint> vertexDrawPaintTransformer);
163
164 Function<? super V,Shape> getVertexShapeTransformer();
165
166 void setVertexShapeTransformer(Function<? super V,Shape> vertexShapeTransformer);
167
168 Function<? super V,String> getVertexLabelTransformer();
169
170 void setVertexLabelTransformer(Function<? super V,String> vertexStringer);
171
172 Function<? super V,Stroke> getVertexStrokeTransformer();
173
174 void setVertexStrokeTransformer(Function<? super V,Stroke> vertexStrokeTransformer);
175
176 class DirectedEdgeArrowPredicate<V,E>
177 implements Predicate<Context<Graph<V,E>,E>> {
178
179 public boolean apply(Context<Graph<V,E>,E> c) {
180 return c.graph.getEdgeType(c.element) == EdgeType.DIRECTED;
181 }
182
183 }
184
185 class UndirectedEdgeArrowPredicate<V,E>
186 implements Predicate<Context<Graph<V,E>,E>> {
187
188
189 public boolean apply(Context<Graph<V,E>,E> c) {
190 return c.graph.getEdgeType(c.element) == EdgeType.UNDIRECTED;
191 }
192
193 }
194
195 MultiLayerTransformer getMultiLayerTransformer();
196
197 void setMultiLayerTransformer(MultiLayerTransformer basicTransformer);
198
199
200
201
202 GraphElementAccessor<V, E> getPickSupport();
203
204
205
206
207 void setPickSupport(GraphElementAccessor<V, E> pickSupport);
208
209
210 }