1
2
3
4
5
6
7
8 package edu.uci.ics.jung.visualization.renderers;
9
10 import java.util.ConcurrentModificationException;
11
12 import edu.uci.ics.jung.algorithms.layout.Layout;
13 import edu.uci.ics.jung.visualization.RenderContext;
14
15
16
17
18
19
20
21
22
23
24
25 public class BasicRenderer<V,E> implements Renderer<V, E> {
26
27 Renderer.Vertex<V,E> vertexRenderer = new BasicVertexRenderer<V,E>();
28 Renderer.VertexLabel<V,E> vertexLabelRenderer = new BasicVertexLabelRenderer<V,E>();
29 Renderer.Edge<V,E> edgeRenderer = new BasicEdgeRenderer<V,E>();
30 Renderer.EdgeLabel<V,E> edgeLabelRenderer = new BasicEdgeLabelRenderer<V,E>();
31
32 public void render(RenderContext<V, E> renderContext, Layout<V, E> layout) {
33
34
35 try {
36 for(E e : layout.getGraph().getEdges()) {
37
38 renderEdge(
39 renderContext,
40 layout,
41 e);
42 renderEdgeLabel(
43 renderContext,
44 layout,
45 e);
46 }
47 } catch(ConcurrentModificationException cme) {
48 renderContext.getScreenDevice().repaint();
49 }
50
51
52 try {
53 for(V v : layout.getGraph().getVertices()) {
54
55 renderVertex(
56 renderContext,
57 layout,
58 v);
59 renderVertexLabel(
60 renderContext,
61 layout,
62 v);
63 }
64 } catch(ConcurrentModificationException cme) {
65 renderContext.getScreenDevice().repaint();
66 }
67 }
68
69 public void renderVertex(RenderContext<V,E> rc, Layout<V,E> layout, V v) {
70 vertexRenderer.paintVertex(rc, layout, v);
71 }
72
73 public void renderVertexLabel(RenderContext<V,E> rc, Layout<V,E> layout, V v) {
74 vertexLabelRenderer.labelVertex(rc, layout, v, rc.getVertexLabelTransformer().apply(v));
75 }
76
77 public void renderEdge(RenderContext<V,E> rc, Layout<V,E> layout, E e) {
78 edgeRenderer.paintEdge(rc, layout, e);
79 }
80
81 public void renderEdgeLabel(RenderContext<V,E> rc, Layout<V,E> layout, E e) {
82 edgeLabelRenderer.labelEdge(rc, layout, e, rc.getEdgeLabelTransformer().apply(e));
83 }
84
85 public void setVertexRenderer(Renderer.Vertex<V,E> r) {
86 this.vertexRenderer = r;
87 }
88
89 public void setEdgeRenderer(Renderer.Edge<V,E> r) {
90 this.edgeRenderer = r;
91 }
92
93
94
95
96 public Renderer.EdgeLabel<V, E> getEdgeLabelRenderer() {
97 return edgeLabelRenderer;
98 }
99
100
101
102
103 public void setEdgeLabelRenderer(Renderer.EdgeLabel<V, E> edgeLabelRenderer) {
104 this.edgeLabelRenderer = edgeLabelRenderer;
105 }
106
107
108
109
110 public Renderer.VertexLabel<V, E> getVertexLabelRenderer() {
111 return vertexLabelRenderer;
112 }
113
114
115
116
117 public void setVertexLabelRenderer(
118 Renderer.VertexLabel<V, E> vertexLabelRenderer) {
119 this.vertexLabelRenderer = vertexLabelRenderer;
120 }
121
122
123
124
125 public Renderer.Edge<V, E> getEdgeRenderer() {
126 return edgeRenderer;
127 }
128
129
130
131
132 public Renderer.Vertex<V, E> getVertexRenderer() {
133 return vertexRenderer;
134 }
135
136
137 }