Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java @ 5928:34392dc16546
Implemented interaction design in project startup page.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 08 May 2013 16:34:45 +0200 |
parents | 172338b1407f |
children | 5de1b9faebf5 |
comparison
equal
deleted
inserted
replaced
5927:d53e39372a25 | 5928:34392dc16546 |
---|---|
6 * documentation coming with Dive4Elements River for details. | 6 * documentation coming with Dive4Elements River for details. |
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.river.client.client.ui; | 9 package org.dive4elements.river.client.client.ui; |
10 | 10 |
11 import java.util.HashMap; | |
12 import java.util.LinkedHashMap; | |
13 import java.util.Map; | |
14 | |
11 import com.google.gwt.core.client.GWT; | 15 import com.google.gwt.core.client.GWT; |
12 | 16 |
13 import com.smartgwt.client.types.VerticalAlignment; | 17 import com.smartgwt.client.types.VerticalAlignment; |
14 import com.smartgwt.client.widgets.Canvas; | 18 import com.smartgwt.client.widgets.Canvas; |
19 import com.smartgwt.client.widgets.HTMLPane; | |
15 import com.smartgwt.client.widgets.Img; | 20 import com.smartgwt.client.widgets.Img; |
16 import com.smartgwt.client.widgets.Label; | 21 import com.smartgwt.client.widgets.Label; |
17 import com.smartgwt.client.widgets.form.DynamicForm; | 22 import com.smartgwt.client.widgets.form.DynamicForm; |
18 import com.smartgwt.client.widgets.form.fields.LinkItem; | 23 import com.smartgwt.client.widgets.form.fields.LinkItem; |
19 import com.smartgwt.client.widgets.form.fields.events.ClickEvent; | 24 import com.smartgwt.client.widgets.form.fields.events.ClickEvent; |
20 import com.smartgwt.client.widgets.form.fields.events.ClickHandler; | 25 import com.smartgwt.client.widgets.form.fields.events.ClickHandler; |
26 import com.smartgwt.client.widgets.form.fields.events.ItemHoverEvent; | |
27 import com.smartgwt.client.widgets.form.fields.events.ItemHoverHandler; | |
21 import com.smartgwt.client.widgets.layout.HLayout; | 28 import com.smartgwt.client.widgets.layout.HLayout; |
22 import com.smartgwt.client.widgets.layout.VLayout; | 29 import com.smartgwt.client.widgets.layout.VLayout; |
23 | 30 |
24 import org.dive4elements.river.client.client.FLYSConstants; | 31 import org.dive4elements.river.client.client.FLYSConstants; |
25 import org.dive4elements.river.client.client.event.StepForwardEvent; | 32 import org.dive4elements.river.client.client.event.StepForwardEvent; |
44 /** The message class that provides i18n strings.*/ | 51 /** The message class that provides i18n strings.*/ |
45 protected FLYSConstants messages = GWT.create(FLYSConstants.class); | 52 protected FLYSConstants messages = GWT.create(FLYSConstants.class); |
46 | 53 |
47 /** The selected river*/ | 54 /** The selected river*/ |
48 protected Data river; | 55 protected Data river; |
56 private static Map<String, LinkItem> rivers; | |
57 | |
58 private static Trigger trigger; | |
59 | |
60 private Canvas module; | |
61 | |
62 private class Trigger { | |
63 | |
64 private LinkSelection ls; | |
65 | |
66 public Trigger(LinkSelection ls) { | |
67 this.ls = ls; | |
68 // TODO Auto-generated constructor stub | |
69 } | |
70 | |
71 public void trigger(String name) { | |
72 DataItem item = new DefaultDataItem( | |
73 name, | |
74 null, | |
75 name); | |
76 | |
77 river = new DefaultData( | |
78 "river", | |
79 null, | |
80 null, | |
81 new DataItem [] {item}); | |
82 this.ls.fireStepForwardEvent (new StepForwardEvent (getData())); | |
83 } | |
84 } | |
49 | 85 |
50 /** | 86 /** |
51 * This method currently returns a | 87 * This method currently returns a |
52 * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all | 88 * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all |
53 * data items in a list of links stored in <i>data</i>. | 89 * data items in a list of links stored in <i>data</i>. |
56 * | 92 * |
57 * @return a combobox. | 93 * @return a combobox. |
58 */ | 94 */ |
59 @Override | 95 @Override |
60 public Canvas create(DataList data) { | 96 public Canvas create(DataList data) { |
97 trigger = new Trigger(this); | |
98 createCallback(); | |
99 rivers = new HashMap<String, LinkItem>(); | |
100 | |
61 VLayout v = new VLayout(); | 101 VLayout v = new VLayout(); |
62 v.setMembersMargin(10); | 102 v.setMembersMargin(10); |
63 v.setAlign(VerticalAlignment.TOP); | 103 v.setAlign(VerticalAlignment.TOP); |
64 if (data.getState() == null) { | 104 if (data.getState() == null) { |
65 Canvas module = super.createWidget(data); | 105 module = super.createWidget(data); |
66 v.addMember(module); | 106 v.addMember(module); |
107 } | |
108 else { | |
109 module = null; | |
67 } | 110 } |
68 Canvas content = createWidget(data); | 111 Canvas content = createWidget(data); |
69 v.addMember(content); | 112 v.addMember(content); |
70 | 113 |
71 return v; | 114 return v; |
119 GWT.log("LinkSelection - create()"); | 162 GWT.log("LinkSelection - create()"); |
120 | 163 |
121 VLayout layout = new VLayout(); | 164 VLayout layout = new VLayout(); |
122 layout.setAlign(VerticalAlignment.TOP); | 165 layout.setAlign(VerticalAlignment.TOP); |
123 layout.setHeight(25); | 166 layout.setHeight(25); |
124 | 167 HLayout colums = new HLayout(); |
125 VLayout formLayout = new VLayout(); | 168 VLayout formLayout1 = new VLayout(); |
126 | 169 VLayout formLayout2 = new VLayout(); |
127 formLayout.setLayoutLeftMargin(60); | 170 |
171 formLayout1.setLayoutLeftMargin(60); | |
172 | |
128 int size = data.size(); | 173 int size = data.size(); |
129 | 174 |
130 for (int i = 0; i < size; i++) { | 175 for (int i = 0; i < size; i++) { |
131 Data d = data.get(i); | 176 Data d = data.get(i); |
132 | 177 |
133 Label label = new Label(d.getDescription()); | 178 Label label = new Label(d.getDescription()); |
134 label.setValign(VerticalAlignment.TOP); | 179 label.setValign(VerticalAlignment.TOP); |
135 label.setHeight(20); | 180 label.setHeight(20); |
136 | 181 label.setWidth(400); |
182 LinkedHashMap<String, String> it = new LinkedHashMap<String, String>(); | |
183 boolean defaultSet = false; | |
184 boolean first = true; | |
185 DataItem def = d.getDefault(); | |
186 String defValue = def != null ? def.getStringValue() : null; | |
187 | |
188 if (defValue != null && defValue.length() > 0) { | |
189 defaultSet = true; | |
190 } | |
191 | |
192 int counter = 0; | |
137 for (DataItem item: d.getItems()) { | 193 for (DataItem item: d.getItems()) { |
138 LinkItem link = new LinkItem("river"); | 194 LinkItem link = new LinkItem("river"); |
139 link.setLinkTitle(item.getLabel()); | 195 link.setLinkTitle(item.getLabel()); |
140 link.setTarget(item.getStringValue()); | 196 link.setTarget(item.getStringValue()); |
141 link.setShowTitle(false); | 197 link.setShowTitle(false); |
142 DynamicForm f = new DynamicForm(); | 198 DynamicForm f = new DynamicForm(); |
199 rivers.put(item.getStringValue(), link); | |
200 | |
143 f.setItems(link); | 201 f.setItems(link); |
144 formLayout.addMember(f); | 202 if (counter < d.getItems().length/2) { |
203 formLayout1.addMember(f); | |
204 } | |
205 else { | |
206 formLayout2.addMember(f); | |
207 } | |
208 counter++; | |
209 | |
145 link.addClickHandler(new ClickHandler() { | 210 link.addClickHandler(new ClickHandler() { |
146 @Override | 211 @Override |
147 public void onClick(ClickEvent event) { | 212 public void onClick(ClickEvent event) { |
148 DataItem item = new DefaultDataItem( | 213 DataItem item = new DefaultDataItem( |
149 ((LinkItem)event.getItem()).getLinkTitle(), | 214 ((LinkItem)event.getItem()).getLinkTitle(), |
156 null, | 221 null, |
157 new DataItem [] {item}); | 222 new DataItem [] {item}); |
158 fireStepForwardEvent (new StepForwardEvent (getData())); | 223 fireStepForwardEvent (new StepForwardEvent (getData())); |
159 } | 224 } |
160 }); | 225 }); |
161 | 226 link.addItemHoverHandler(new ItemHoverHandler() { |
227 @Override | |
228 public void onItemHover(ItemHoverEvent event) { | |
229 String river = ((LinkItem)event.getItem()).getLinkTitle(); | |
230 for (String s : rivers.keySet()) { | |
231 LinkItem item = rivers.get(s); | |
232 if (item.getLinkTitle().equals(river)) { | |
233 item.setCellStyle("riverLinkHighlight"); | |
234 } | |
235 else { | |
236 item.setCellStyle("formCell"); | |
237 callUnHighlightRiver(s); | |
238 } | |
239 } | |
240 callHighlightRiver(river); | |
241 } | |
242 }); | |
243 } | |
244 | |
245 if (module != null) { | |
246 getModuleSelection().setRivers(rivers); | |
162 } | 247 } |
163 label.setWidth(50); | 248 label.setWidth(50); |
164 | 249 |
165 layout.addMember(label); | 250 layout.addMember(label); |
166 layout.addMember(formLayout); | 251 colums.addMember(formLayout1); |
167 } | 252 colums.addMember(formLayout2); |
168 layout.setAlign(VerticalAlignment.TOP); | 253 layout.addMember(colums); |
169 | 254 |
170 String baseUrl = GWT.getHostPageBaseURL(); | 255 } |
171 Img map = new Img(baseUrl + messages.riverMap(), 494, 582); | 256 layout.addMember(getNextButton()); |
257 HTMLPane map = new HTMLPane(); | |
258 map.setContentsURL("images/FLYS_Karte_interactive.html"); | |
259 | |
172 helperContainer.addMember(map); | 260 helperContainer.addMember(map); |
173 | |
174 return layout; | 261 return layout; |
175 } | 262 } |
176 | 263 |
177 | 264 |
178 @Override | 265 @Override |
183 } | 270 } |
184 else { | 271 else { |
185 return new Data[] {river}; | 272 return new Data[] {river}; |
186 } | 273 } |
187 } | 274 } |
275 | |
276 private native void createCallback() /*-{ | |
277 $wnd.highlightRiver = @org.dive4elements.river.client.client.ui.LinkSelection::highlightCallback(Ljava/lang/String;); | |
278 $wnd.selectRiver = @org.dive4elements.river.client.client.ui.LinkSelection::selectCallback(Ljava/lang/String;); | |
279 $wnd.availableRiver = @org.dive4elements.river.client.client.ui.LinkSelection::availableRiver(Ljava/lang/String;); | |
280 }-*/; | |
281 | |
282 private static void highlightCallback(String name) { | |
283 for (String s : rivers.keySet()) { | |
284 if (s.equals(name)) { | |
285 LinkItem item = rivers.get(name); | |
286 item.setCellStyle("riverLinkHighlight"); | |
287 item.redraw(); | |
288 } | |
289 else { | |
290 LinkItem item = rivers.get(s); | |
291 item.setCellStyle("formCell"); | |
292 item.redraw(); | |
293 } | |
294 } | |
295 } | |
296 | |
297 private static boolean availableRiver(String river) { | |
298 if (rivers.containsKey(river)) { | |
299 if(rivers.get(river).isVisible()) { | |
300 return true; | |
301 } | |
302 } | |
303 return false; | |
304 } | |
305 | |
306 private static void selectCallback(String name) { | |
307 trigger.trigger(name); | |
308 } | |
309 | |
310 private native void callHighlightRiver(String name) /*-{ | |
311 $wnd.highlight(name); | |
312 }-*/; | |
313 | |
314 private native void callUnHighlightRiver(String name) /*-{ | |
315 $wnd.unHighlight(name); | |
316 }-*/; | |
188 } | 317 } |
189 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 318 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |