1
28 package demo.view;
29
30 import java.awt.Color;
31 import java.util.Map;
32
33 import y.base.Node;
34 import y.base.NodeCursor;
35 import y.geom.OrientedRectangle;
36 import y.view.Arrow;
37 import y.view.GenericNodeRealizer;
38 import y.view.Graph2D;
39 import y.view.Graph2DView;
40 import y.view.NodeLabel;
41 import y.view.NodeRealizer;
42 import y.view.PolyLineEdgeRealizer;
43 import y.view.ShinyPlateNodePainter;
44 import y.view.GenericNodeRealizer.Factory;
45 import y.view.SmartNodeLabelModel;
46
47 import javax.swing.UIManager;
48
49
52 public class DemoDefaults {
53
54
57 public static final String NODE_CONFIGURATION = "DemoDefaults#Node";
58
59
62 public static final Color DEFAULT_NODE_COLOR = new Color(255, 153, 0);
63
64
67 public static final Color DEFAULT_NODE_LINE_COLOR = null;
68
69
72 public static final Color DEFAULT_CONTRAST_COLOR = new Color(202,227,255);
73
74 private DemoDefaults() {
75 }
76
77 static {
78 registerDefaultNodeConfiguration(true);
79 }
80
81
88 public static void registerDefaultNodeConfiguration(boolean drawShadows) {
89 Factory factory = GenericNodeRealizer.getFactory();
90 Map configurationMap = factory.createDefaultConfigurationMap();
91
92 ShinyPlateNodePainter painter = new ShinyPlateNodePainter();
93 painter.setDrawShadow(drawShadows);
96
97 configurationMap.put(GenericNodeRealizer.Painter.class, painter);
98 configurationMap.put(GenericNodeRealizer.ContainsTest.class, painter);
99 factory.addConfiguration(NODE_CONFIGURATION, configurationMap);
100 }
101
102
119 public static void configureDefaultRealizers(Graph2DView view) {
120 NodeRealizer nr = new GenericNodeRealizer(NODE_CONFIGURATION);
121 nr.setFillColor(DEFAULT_NODE_COLOR);
122 nr.setLineColor(DEFAULT_NODE_LINE_COLOR);
123 nr.setWidth(60.0);
124 nr.setHeight(30.0);
125 NodeLabel label = nr.getLabel();
126 SmartNodeLabelModel model = new SmartNodeLabelModel();
127 label.setLabelModel(model, model.getDefaultParameter());
128 view.getGraph2D().setDefaultNodeRealizer(nr);
129
130 PolyLineEdgeRealizer er = new PolyLineEdgeRealizer();
132 er.setTargetArrow(Arrow.STANDARD);
133 view.getGraph2D().setDefaultEdgeRealizer(er);
134 }
135
136
139 public static void applyRealizerDefaults(Graph2D graph) {
140 applyRealizerDefaults(graph, false, true);
141 }
142
143
147 public static void applyRealizerDefaults(Graph2D graph, boolean applyDefaultSize, boolean applyFillColor) {
148 for(NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
149 GenericNodeRealizer gnr = new GenericNodeRealizer(graph.getRealizer(nc.node()));
150 gnr.setConfiguration(NODE_CONFIGURATION);
151 if(applyFillColor) {
152 gnr.setFillColor(graph.getDefaultNodeRealizer().getFillColor());
153 }
154 gnr.setLineColor(null);
155 if(applyDefaultSize) {
156 gnr.setSize(graph.getDefaultNodeRealizer().getWidth(), graph.getDefaultNodeRealizer().getHeight());
157 }
158 NodeLabel label = gnr.getLabel();
159 OrientedRectangle labelBounds = label.getOrientedBox();
160 SmartNodeLabelModel model = new SmartNodeLabelModel();
161 label.setLabelModel(model, model.createModelParameter(labelBounds, gnr));
162 graph.setRealizer(nc.node(), gnr);
163 }
164 }
165
166
169 public static void applyFillColor(Graph2D graph, Color color) {
170 for (NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
171 Node n = nc.node();
172 graph.getRealizer(n).setFillColor(color);
173 }
174 }
175
176
179 public static void applyLineColor(Graph2D graph, Color color) {
180 for (NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
181 Node n = nc.node();
182 graph.getRealizer(n).setLineColor(color);
183 }
184 }
185
186
189 public static void initLnF() {
190 try {
191 if (!"com.sun.java.swing.plaf.motif.MotifLookAndFeel".equals(UIManager.getSystemLookAndFeelClassName())
192 && !"com.sun.java.swing.plaf.gtk.GTKLookAndFeel".equals(UIManager.getSystemLookAndFeelClassName())
193 && !UIManager.getSystemLookAndFeelClassName().equals(UIManager.getLookAndFeel().getClass().getName())
194 && !isJRE4onWindows7()) {
195 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
196 }
197 } catch (Exception e) {
198 e.printStackTrace();
199 }
200 }
201
202 private static boolean isJRE4onWindows7() {
203 return System.getProperty("java.version").startsWith("1.4") && System.getProperty("os.name").startsWith("Windows")
205 && "6.1".equals(System.getProperty("os.version"));
206 }
207
208 }
209