1
14 package demo.view.rendering;
15
16 import demo.view.DemoBase;
17 import y.option.EnumOptionItem;
18 import y.option.MappedListCellRenderer;
19 import y.option.OptionHandler;
20 import y.view.DefaultBackgroundRenderer;
21 import y.view.EdgeRealizer;
22 import y.view.LineType;
23
24 import javax.swing.AbstractAction;
25 import javax.swing.Action;
26 import javax.swing.DefaultListCellRenderer;
27 import javax.swing.JToolBar;
28 import java.awt.Color;
29 import java.awt.Dimension;
30 import java.awt.EventQueue;
31 import java.awt.event.ActionEvent;
32 import java.awt.event.ActionListener;
33 import java.util.HashMap;
34 import java.util.Locale;
35 import java.util.Map;
36
37
46 public class BackgroundDemo extends DemoBase
47 {
48 DefaultBackgroundRenderer renderer;
49
50 static final String[] bgImages = {
51 "resource/yWorksBig.png",
52 "resource/yWorksSmall.gif",
53 "resource/usamap.gif",
54 "resource/ySplash.jpg",
55 "resource/tile.jpg",
56 "<NONE>"
57 };
58
59
60 public BackgroundDemo()
61 {
62 renderer = new DefaultBackgroundRenderer(view);
63 renderer.setImageResource(getClass().getResource(bgImages[0]));
64 renderer.setMode(DefaultBackgroundRenderer.CENTERED);
65 renderer.setColor(Color.white);
66 view.setBackgroundRenderer(renderer);
67 view.setPreferredSize(new Dimension(600,400));
68
69 view.setWorldRect(0,0,1000,1000);
70
71 EdgeRealizer er = view.getGraph2D().getDefaultEdgeRealizer();
73 er.setLineType(LineType.LINE_2);
74 }
75
76
80 protected JToolBar createToolBar()
81 {
82 JToolBar bar = super.createToolBar();
83 bar.addSeparator();
84 bar.add(createActionControl(new ChangeBackground()));
85 return bar;
86 }
87
88
92 class ChangeBackground extends AbstractAction
93 {
94
95 OptionHandler op;
96 Map xlate;
97
98 ChangeBackground()
99 {
100 super("Background");
101 xlate = new HashMap(11);
102 xlate.put(new Byte(DefaultBackgroundRenderer.FULLSCREEN),"Fullscreen");
103 xlate.put(new Byte(DefaultBackgroundRenderer.TILED), "Tiled");
104 xlate.put(new Byte(DefaultBackgroundRenderer.BRICKED), "Bricked");
105 xlate.put(new Byte(DefaultBackgroundRenderer.CENTERED), "Centered");
106 xlate.put(new Byte(DefaultBackgroundRenderer.PLAIN), "Plain");
107 xlate.put(new Byte(DefaultBackgroundRenderer.DYNAMIC), "Dynamic");
108
109 putValue(Action.SMALL_ICON, getIconResource("resource/properties.png"));
110 }
111
112 public void actionPerformed(ActionEvent e)
113 {
114 if(op == null)
115 {
116 op = new OptionHandler("Background");
117 op.addEnum("Mode",
118 xlate.keySet().toArray(),
119 new Byte(renderer.getMode()),
120 new MappedListCellRenderer(xlate));
121 op.addColor("Color",renderer.getColor());
122 op.addEnum("Image",bgImages,0)
123 .setAttribute(EnumOptionItem.ATTRIBUTE_RENDERER,
125 new DefaultListCellRenderer());
126 }
127
128 final ActionListener actionListener = new ActionListener() {
129 public void actionPerformed(ActionEvent e) {
130 renderer.setMode(((Byte)op.get("Mode")).byteValue());
131 renderer.setColor((Color)op.get("Color"));
132 String imageSrc = op.getString("Image");
133 if("<NONE>".equals(imageSrc)) {
134 renderer.setImage(null);
135 } else {
136 renderer.setImageResource(this.getClass().getResource(imageSrc));
137 }
138 view.updateView();
139 }
140 };
141
142 OptionSupport.showDialog(op, actionListener, false, view.getFrame());
143 }
144 }
145
146 public static void main(String[] args) {
147 EventQueue.invokeLater(new Runnable() {
148 public void run() {
149 Locale.setDefault(Locale.ENGLISH);
150 initLnF();
151 (new BackgroundDemo()).start("Background Demo");
152 }
153 });
154 }
155 }
156
157
158
159