1
28 package demo.view.rendering;
29
30 import demo.view.DemoBase;
31 import y.option.EnumOptionItem;
32 import y.option.MappedListCellRenderer;
33 import y.option.OptionHandler;
34 import y.view.DefaultBackgroundRenderer;
35 import y.view.EdgeRealizer;
36 import y.view.LineType;
37
38 import javax.swing.AbstractAction;
39 import javax.swing.Action;
40 import javax.swing.DefaultListCellRenderer;
41 import javax.swing.JToolBar;
42 import java.awt.Color;
43 import java.awt.Dimension;
44 import java.awt.EventQueue;
45 import java.awt.event.ActionEvent;
46 import java.awt.event.ActionListener;
47 import java.util.HashMap;
48 import java.util.Locale;
49 import java.util.Map;
50
51
68 public class BackgroundDemo extends DemoBase
69 {
70 DefaultBackgroundRenderer renderer;
71
72 static final String[] bgImages = {
73 "resource/yWorksBig.png",
74 "resource/yWorksSmall.gif",
75 "resource/usamap.png",
76 "resource/ySplash.jpg",
77 "resource/tile.png",
78 "<NONE>"
79 };
80
81
82 public BackgroundDemo()
83 {
84 renderer = new DefaultBackgroundRenderer(view);
85 renderer.setImageResource(getSharedResource(bgImages[0]));
86 renderer.setMode(DefaultBackgroundRenderer.CENTERED);
87 renderer.setColor(Color.white);
88 view.setBackgroundRenderer(renderer);
89 view.setPreferredSize(new Dimension(600,400));
90
91 view.setWorldRect(0,0,1000,1000);
92
93 EdgeRealizer er = view.getGraph2D().getDefaultEdgeRealizer();
95 er.setLineType(LineType.LINE_2);
96 }
97
98
102 protected JToolBar createToolBar()
103 {
104 JToolBar bar = super.createToolBar();
105 bar.addSeparator();
106 bar.add(createActionControl(new ChangeBackground()));
107 return bar;
108 }
109
110
114 class ChangeBackground extends AbstractAction
115 {
116
117 OptionHandler op;
118 Map xlate;
119
120 ChangeBackground()
121 {
122 super("Background");
123 xlate = new HashMap(11);
124 xlate.put(new Byte(DefaultBackgroundRenderer.FULLSCREEN),"Fullscreen");
125 xlate.put(new Byte(DefaultBackgroundRenderer.TILED), "Tiled");
126 xlate.put(new Byte(DefaultBackgroundRenderer.BRICKED), "Bricked");
127 xlate.put(new Byte(DefaultBackgroundRenderer.CENTERED), "Centered");
128 xlate.put(new Byte(DefaultBackgroundRenderer.PLAIN), "Plain");
129 xlate.put(new Byte(DefaultBackgroundRenderer.DYNAMIC), "Dynamic");
130
131 putValue(Action.SMALL_ICON, getIconResource("resource/properties.png"));
132 }
133
134 public void actionPerformed(ActionEvent e)
135 {
136 if(op == null)
137 {
138 op = new OptionHandler("Background");
139 op.addEnum("Mode",
140 xlate.keySet().toArray(),
141 new Byte(renderer.getMode()),
142 new MappedListCellRenderer(xlate));
143 op.addColor("Color",renderer.getColor());
144 op.addEnum("Image",bgImages,0)
145 .setAttribute(EnumOptionItem.ATTRIBUTE_RENDERER,
147 new DefaultListCellRenderer());
148 }
149
150 final ActionListener actionListener = new ActionListener() {
151 public void actionPerformed(ActionEvent e) {
152 renderer.setMode(((Byte)op.get("Mode")).byteValue());
153 renderer.setColor((Color)op.get("Color"));
154 String imageSrc = op.getString("Image");
155 if("<NONE>".equals(imageSrc)) {
156 renderer.setImage(null);
157 } else {
158 renderer.setImageResource(getSharedResource(imageSrc));
159 }
160 view.updateView();
161 }
162 };
163
164 OptionSupport.showDialog(op, actionListener, true, view.getFrame());
165 }
166 }
167
168 public static void main(String[] args) {
169 EventQueue.invokeLater(new Runnable() {
170 public void run() {
171 Locale.setDefault(Locale.ENGLISH);
172 initLnF();
173 (new BackgroundDemo()).start("Background Demo");
174 }
175 });
176 }
177 }
178
179
180
181