View Javadoc
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       * A stroke for a dotted line: 1 pixel width, round caps, round joins, and an 
33       * array of {1.0f, 3.0f}.
34       */
35      Stroke DOTTED = new BasicStroke(1.0f,
36              BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, dotting, 0f);
37  
38      /**
39       * A stroke for a dashed line: 1 pixel width, square caps, beveled joins, and an
40       * array of {5.0f}.
41       */
42      Stroke DASHED = new BasicStroke(1.0f,
43              BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL, 1.0f, dashing, 0f);
44  
45      /**
46       * Specifies the offset for the edge labels.
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     	//extends AbstractGraphPredicate<V,E> {
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 	 * @return the pickSupport
201 	 */
202 	GraphElementAccessor<V, E> getPickSupport();
203 
204 	/**
205 	 * @param pickSupport the pickSupport to set
206 	 */
207 	void setPickSupport(GraphElementAccessor<V, E> pickSupport);
208 	
209 
210 }