comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/map/ExternalWMSWindow.java @ 1406:6c8a29abbe30

Added an initial control that allows (when it is finished) adding map layers from external WMS. flys-client/trunk@3291 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 18 Nov 2011 15:18:29 +0000
parents
children 5b5a20e4c4e5
comparison
equal deleted inserted replaced
1405:442ce7d6bc39 1406:6c8a29abbe30
1 package de.intevation.flys.client.client.ui.map;
2
3 import com.google.gwt.user.client.ui.TextBox;
4
5 import com.smartgwt.client.util.SC;
6 import com.smartgwt.client.widgets.Button;
7 import com.smartgwt.client.widgets.Canvas;
8 import com.smartgwt.client.widgets.Label;
9 import com.smartgwt.client.widgets.Window;
10 import com.smartgwt.client.widgets.events.ClickEvent;
11 import com.smartgwt.client.widgets.events.ClickHandler;
12 import com.smartgwt.client.widgets.layout.HLayout;
13 import com.smartgwt.client.widgets.layout.Layout;
14 import com.smartgwt.client.widgets.layout.VLayout;
15
16
17 public class ExternalWMSWindow extends Window {
18
19 protected Layout inputPanel;
20 protected Layout infoPanel;
21 protected Layout layersPanel;
22
23 protected String url;
24
25
26 public ExternalWMSWindow() {
27 super();
28 }
29
30
31 protected void setUrl(String url) {
32 this.url = url;
33 }
34
35
36 protected String getUrl() {
37 return url;
38 }
39
40
41 public void start() {
42 show();
43 centerInPage();
44
45 goToInputPanel();
46 }
47
48
49 protected void goToInputPanel() {
50 clearItems();
51
52 inputPanel = createInputPanel();
53
54 addItem(inputPanel);
55
56 setWidth(380);
57 setHeight(140);
58 }
59
60
61 protected void goToInfoPanel() {
62 clearItems();
63
64 infoPanel = createInfoPanel();
65
66 addItem(infoPanel);
67
68 setWidth(500);
69 setHeight(500);
70 }
71
72
73 protected void goToLayersPanel() {
74 clearItems();
75
76 layersPanel = createLayersPanel();
77
78 addItem(layersPanel);
79
80 setWidth(500);
81 setHeight(500);
82 }
83
84
85 protected void clearItems() {
86 Canvas[] items = getItems();
87
88 if (items != null) {
89 for (Canvas item: items) {
90 removeItem(item);
91 }
92 }
93 }
94
95
96 protected Layout createInputPanel() {
97 // TODO I18N
98 setTitle("Basis URL des WMS Dienstes");
99
100 final TextBox url = new TextBox();
101 url.setHeight("25px");
102 url.setWidth("326px");
103
104 String oldUrl = getUrl();
105 if (oldUrl != null && oldUrl.length() > 0) {
106 url.setValue(oldUrl);
107 }
108
109 ClickHandler goHandler = new ClickHandler() {
110 @Override
111 public void onClick(ClickEvent e) {
112 String newUrl = url.getValue();
113
114 if (!isUrlValid(newUrl)) {
115 // TODO I18N
116 SC.warn("Enter a valid URL!");
117 return;
118 }
119
120 setUrl(url.getValue());
121 goToInfoPanel();
122 }
123 };
124
125 ClickHandler cancelHandler = new ClickHandler() {
126 @Override
127 public void onClick(ClickEvent e) {
128 quit();
129 }
130 };
131
132 VLayout root = new VLayout();
133 root.setHeight(75);
134 root.setMargin(10);
135 root.setLayoutMargin(10);
136
137 root.addMember(url);
138 root.addMember(createButtonPanel(null, goHandler, cancelHandler));
139
140 return root;
141 }
142
143
144 protected Layout createInfoPanel() {
145 // TODO I18N
146 setTitle("Informationen des WMS Dienstes");
147
148 ClickHandler backHandler = new ClickHandler() {
149 @Override
150 public void onClick(ClickEvent e) {
151 goToInputPanel();
152 }
153 };
154
155 ClickHandler goHandler = new ClickHandler() {
156 @Override
157 public void onClick(ClickEvent e) {
158 goToLayersPanel();
159 }
160 };
161
162 ClickHandler cancelHandler = new ClickHandler() {
163 @Override
164 public void onClick(ClickEvent e) {
165 quit();
166 }
167 };
168
169 VLayout root = new VLayout();
170
171 root.addMember(new Label("STEP 2: " + getUrl()));
172
173 // TODO IMPLEMENT ME
174
175 root.addMember(createButtonPanel(backHandler, goHandler, cancelHandler));
176
177 return root;
178 }
179
180
181 protected Layout createLayersPanel() {
182 // TODO I18N
183 setTitle("Ebene auswählen");
184
185 ClickHandler backHandler = new ClickHandler() {
186 @Override
187 public void onClick(ClickEvent e) {
188 goToInfoPanel();
189 }
190 };
191
192 ClickHandler goHandler = new ClickHandler() {
193 @Override
194 public void onClick(ClickEvent e) {
195 goToLayersPanel();
196 }
197 };
198
199 ClickHandler cancelHandler = new ClickHandler() {
200 @Override
201 public void onClick(ClickEvent e) {
202 quit();
203 }
204 };
205
206 VLayout root = new VLayout();
207
208 root.addMember(new Label("STEP 3"));
209
210 // TODO IMPLEMENT ME
211
212 root.addMember(createButtonPanel(backHandler, goHandler, cancelHandler));
213
214 return root;
215 }
216
217
218 /**
219 * @param back
220 * @param ok
221 * @param cancel
222 *
223 * @return
224 */
225 protected Layout createButtonPanel(
226 ClickHandler backHandler,
227 ClickHandler goHandler,
228 ClickHandler cancelHandler
229 ) {
230 Button back = new Button("Back");
231 Button go = new Button("Go on");
232 Button cancel = new Button("Cancel");
233
234 if (backHandler != null) {
235 back.addClickHandler(backHandler);
236 }
237 else {
238 back.setDisabled(true);
239 }
240
241 if (goHandler != null) {
242 go.addClickHandler(goHandler);
243 }
244 else {
245 go.setDisabled(true);
246 }
247
248 if (cancelHandler != null) {
249 cancel.addClickHandler(cancelHandler);
250 }
251 else {
252 cancel.setDisabled(true);
253 }
254
255 HLayout buttonPanel = new HLayout();
256 buttonPanel.setHeight(25);
257 buttonPanel.setMembersMargin(15);
258 buttonPanel.setLayoutTopMargin(10);
259 buttonPanel.addMember(back);
260 buttonPanel.addMember(go);
261 buttonPanel.addMember(cancel);
262
263 return buttonPanel;
264 }
265
266
267 protected boolean isUrlValid(String url) {
268 // TODO Improve URL validation
269 return !(url == null || url.length() == 0);
270 }
271
272
273 protected void quit() {
274 destroy();
275 }
276 }
277 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org