1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.richclient.settings.support;
17
18 import java.awt.Component;
19 import java.awt.Frame;
20 import java.awt.Toolkit;
21
22 import javax.swing.JDialog;
23 import javax.swing.JFrame;
24
25 import junit.framework.TestCase;
26
27 import org.springframework.richclient.settings.TransientSettings;
28
29
30
31
32 public class WindowMementoTests extends TestCase {
33 private JFrame frame;
34
35 private JDialog dialog;
36
37 private TransientSettings settings;
38
39 protected void setUp() throws Exception {
40 frame = new JFrame("test frame");
41 dialog = new JDialog(frame, "test dialog");
42 settings = new TransientSettings();
43 }
44
45 public void testConstructor() {
46 try {
47 new WindowMemento(null);
48 fail("Should throw IllegalArgumentException");
49 } catch (IllegalArgumentException e) {
50
51 }
52
53 try {
54 frame.setName(null);
55 new WindowMemento(frame, "");
56 fail("Should throw IllegalArgumentException: window has no name");
57 } catch (Exception e) {
58
59 }
60
61 frame.setName("frame0");
62
63 WindowMemento memento = new WindowMemento(frame);
64 assertEquals(frame, memento.getWindow());
65 assertEquals("frame0", memento.getKey());
66
67 memento = new WindowMemento(frame, "key");
68 assertEquals(frame, memento.getWindow());
69 assertEquals("key", memento.getKey());
70 }
71
72 public void testSaveLocation() {
73
74 WindowMemento frameMemento = new WindowMemento(frame, "frame");
75 frame.setLocation(100, 99);
76 frameMemento.saveLocation(settings);
77
78 assertEquals(100, settings.getInt("frame.x"));
79 assertEquals(99, settings.getInt("frame.y"));
80
81
82 WindowMemento dialogMemento = new WindowMemento(dialog, "dialog");
83 dialog.setLocation(20, 15);
84 dialogMemento.saveLocation(settings);
85
86 assertEquals(20, settings.getInt("dialog.x"));
87 assertEquals(15, settings.getInt("dialog.y"));
88 }
89
90 public void testRestoreLocation() {
91
92 WindowMemento frameMemento = new WindowMemento(frame, "frame");
93
94 frame.setLocation(100, 99);
95 settings.setInt("frame.x", 15);
96 settings.setInt("frame.y", 30);
97 frameMemento.restoreLocation(settings);
98
99 assertEquals(15, frame.getX());
100 assertEquals(30, frame.getY());
101
102
103 WindowMemento dialogMemento = new WindowMemento(dialog, "dialog");
104
105 dialog.setLocation(20, 15);
106 settings.setInt("dialog.x", 100);
107 settings.setInt("dialog.y", 115);
108 dialogMemento.restoreLocation(settings);
109
110 assertEquals(100, dialog.getX());
111 assertEquals(115, dialog.getY());
112 }
113
114 public void testRestoreLocationNotInSettings() {
115
116 WindowMemento frameMemento = new WindowMemento(frame, "frame");
117
118 frame.setLocation(100, 99);
119 assertFalse(settings.contains("frame.x"));
120 assertFalse(settings.contains("frame.y"));
121 frameMemento.restoreLocation(settings);
122
123 assertEquals(100, frame.getX());
124 assertEquals(99, frame.getY());
125
126
127 WindowMemento dialogMemento = new WindowMemento(dialog, "dialog");
128
129 dialog.setLocation(20, 15);
130 assertFalse(settings.contains("dialog.x"));
131 assertFalse(settings.contains("dialog.y"));
132 dialogMemento.restoreLocation(settings);
133
134 assertEquals(20, dialog.getX());
135 assertEquals(15, dialog.getY());
136 }
137
138 public void testSaveSize() {
139
140 WindowMemento frameMemento = new WindowMemento(frame, "frame");
141
142 frame.setSize(800, 600);
143 frameMemento.saveSize(settings);
144
145 assertEquals(800, settings.getInt("frame.width"));
146 assertEquals(600, settings.getInt("frame.height"));
147
148
149 WindowMemento dialogMemento = new WindowMemento(dialog, "dialog");
150
151 dialog.setSize(150, 100);
152 dialogMemento.saveSize(settings);
153
154 assertEquals(150, settings.getInt("dialog.width"));
155 assertEquals(100, settings.getInt("dialog.height"));
156 }
157
158 public void testSaveMaximizedState() {
159
160 if (!Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH))
161 return;
162
163 WindowMemento frameMemento = new WindowMemento(frame, "frame");
164
165 frame.setExtendedState(Frame.MAXIMIZED_BOTH);
166 frameMemento.saveMaximizedState(settings);
167
168 assertTrue(settings.getBoolean("frame.maximized"));
169
170 frame.setExtendedState(Frame.NORMAL);
171 frameMemento.saveMaximizedState(settings);
172 assertFalse(settings.getBoolean("frame.maximized"));
173 }
174
175 public void testRestoreMaximizedState() {
176
177 if (!Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH))
178 return;
179
180 WindowMemento frameMemento = new WindowMemento(frame, "frame");
181
182 frame.setExtendedState(Frame.NORMAL);
183 settings.setBoolean("frame.maximized", true);
184 frameMemento.restoreMaximizedState(settings);
185
186 assertEquals(Frame.MAXIMIZED_BOTH, frame.getExtendedState());
187
188 settings.setBoolean("frame.maximized", false);
189 frameMemento.restoreMaximizedState(settings);
190 assertEquals(Frame.NORMAL, frame.getExtendedState());
191 }
192
193 public void testRestoreSize() {
194
195 WindowMemento frameMemento = new WindowMemento(frame, "frame");
196
197 frame.setSize(800, 600);
198 settings.setInt("frame.width", 1024);
199 settings.setInt("frame.height", 768);
200 frameMemento.restoreSize(settings);
201
202 assertEquals(1024, frame.getWidth());
203 assertEquals(768, frame.getHeight());
204
205
206 WindowMemento dialogMemento = new WindowMemento(dialog, "dialog");
207
208 dialog.setSize(150, 100);
209 settings.setInt("dialog.width", 200);
210 settings.setInt("dialog.height", 150);
211 dialogMemento.restoreSize(settings);
212
213 assertEquals(200, dialog.getWidth());
214 assertEquals(150, dialog.getHeight());
215 }
216
217 public void testRestoreSizeNotInSettings() {
218
219 WindowMemento frameMemento = new WindowMemento(frame, "frame");
220
221 frame.setSize(800, 600);
222 assertFalse(settings.contains("frame.width"));
223 assertFalse(settings.contains("frame.height"));
224 frameMemento.restoreSize(settings);
225
226 assertEquals(800, frame.getWidth());
227 assertEquals(600, frame.getHeight());
228
229
230 WindowMemento dialogMemento = new WindowMemento(dialog, "dialog");
231
232 dialog.setSize(150, 100);
233 assertFalse(settings.contains("dialog.width"));
234 assertFalse(settings.contains("dialog.height"));
235 dialogMemento.restoreSize(settings);
236
237 assertEquals(150, dialog.getWidth());
238 assertEquals(100, dialog.getHeight());
239 }
240
241 protected Component createComponent() {
242 return null;
243 }
244
245 protected String getKey() {
246 return null;
247 }
248 }