1
14 package demo.view;
15
16 import java.awt.Color;
17 import java.util.Map;
18
19 import y.base.Node;
20 import y.base.NodeCursor;
21 import y.geom.OrientedRectangle;
22 import y.layout.NodeLabelModel;
23 import y.view.Arrow;
24 import y.view.GenericNodeRealizer;
25 import y.view.Graph2D;
26 import y.view.Graph2DView;
27 import y.view.NodeLabel;
28 import y.view.NodeRealizer;
29 import y.view.PolyLineEdgeRealizer;
30 import y.view.ShinyPlateNodePainter;
31 import y.view.GenericNodeRealizer.Factory;
32 import y.view.SmartNodeLabelModel;
33
34 import javax.swing.UIManager;
35
36
39 public class DemoDefaults {
40
41
44 public static final String NODE_CONFIGURATION = "DemoDefaults#Node";
45
46
49 public static final Color DEFAULT_NODE_COLOR = new Color(255, 153, 0);
50
51
54 public static final Color DEFAULT_NODE_LINE_COLOR = null;
55
56
59 public static final Color DEFAULT_CONTRAST_COLOR = new Color(202,227,255);
60
61 private DemoDefaults() {
62 }
63
64 static {
65 registerDefaultNodeConfiguration(true);
66 }
67
68
75 public static void registerDefaultNodeConfiguration(boolean drawShadows) {
76 Factory factory = GenericNodeRealizer.getFactory();
77 Map configurationMap = factory.createDefaultConfigurationMap();
78
79 ShinyPlateNodePainter painter = new ShinyPlateNodePainter();
80 painter.setDrawShadow(drawShadows);
83
84 configurationMap.put(GenericNodeRealizer.Painter.class, painter);
85 configurationMap.put(GenericNodeRealizer.ContainsTest.class, painter);
86 factory.addConfiguration(NODE_CONFIGURATION, configurationMap);
87 }
88
89
106 public static void configureDefaultRealizers(Graph2DView view) {
107 NodeRealizer nr = new GenericNodeRealizer(NODE_CONFIGURATION);
108 nr.setFillColor(DEFAULT_NODE_COLOR);
109 nr.setLineColor(DEFAULT_NODE_LINE_COLOR);
110 nr.setWidth(60.0);
111 nr.setHeight(30.0);
112 NodeLabel label = nr.getLabel();
113 SmartNodeLabelModel model = new SmartNodeLabelModel();
114 label.setLabelModel(model);
115 label.setModelParameter(model.getDefaultParameter());
116 view.getGraph2D().setDefaultNodeRealizer(nr);
117
118 PolyLineEdgeRealizer er = new PolyLineEdgeRealizer();
120 er.setTargetArrow(Arrow.STANDARD);
121 view.getGraph2D().setDefaultEdgeRealizer(er);
122 }
123
124
127 public static void applyRealizerDefaults(Graph2D graph) {
128 applyRealizerDefaults(graph, false, true);
129 }
130
131
135 public static void applyRealizerDefaults(Graph2D graph, boolean applyDefaultSize, boolean applyFillColor) {
136 for(NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
137 GenericNodeRealizer gnr = new GenericNodeRealizer(graph.getRealizer(nc.node()));
138 gnr.setConfiguration(NODE_CONFIGURATION);
139 if(applyFillColor) {
140 gnr.setFillColor(graph.getDefaultNodeRealizer().getFillColor());
141 }
142 gnr.setLineColor(null);
143 if(applyDefaultSize) {
144 gnr.setSize(graph.getDefaultNodeRealizer().getWidth(), graph.getDefaultNodeRealizer().getHeight());
145 }
146 NodeLabel label = gnr.getLabel();
147 OrientedRectangle labelBounds = label.getOrientedBox();
148 SmartNodeLabelModel model = new SmartNodeLabelModel();
149 label.setLabelModel(model);
150 label.setModelParameter(model.createModelParameter(labelBounds, gnr));
151 graph.setRealizer(nc.node(), gnr);
152 }
153 }
154
155
158 public static void applyFillColor(Graph2D graph, Color color) {
159 for (NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
160 Node n = nc.node();
161 graph.getRealizer(n).setFillColor(color);
162 }
163 }
164
165
168 public static void applyLineColor(Graph2D graph, Color color) {
169 for (NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
170 Node n = nc.node();
171 graph.getRealizer(n).setLineColor(color);
172 }
173 }
174
175
178 public static void initLnF() {
179 try {
180 if (!"com.sun.java.swing.plaf.motif.MotifLookAndFeel".equals(UIManager.getSystemLookAndFeelClassName())
181 && !"com.sun.java.swing.plaf.gtk.GTKLookAndFeel".equals(UIManager.getSystemLookAndFeelClassName())
182 && !UIManager.getSystemLookAndFeelClassName().equals(UIManager.getLookAndFeel().getClass().getName())
183 && !isJRE4onWindows7()) {
184 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
185 }
186 } catch (Exception e) {
187 e.printStackTrace();
188 }
189 }
190
191 private static boolean isJRE4onWindows7() {
192 return System.getProperty("java.version").startsWith("1.4") && System.getProperty("os.name").startsWith("Windows")
194 && "6.1".equals(System.getProperty("os.version"));
195 }
196
197 }
198