Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/LinkSelection.java @ 5815:2aabd9752d5e interaktive-karte
Initial interaction model for riverselection on image map.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 24 Apr 2013 15:14:56 +0200 |
parents | b87073a05f9d |
children |
comparison
equal
deleted
inserted
replaced
5814:f145a0ce38f2 | 5815:2aabd9752d5e |
---|---|
1 package de.intevation.flys.client.client.ui; | 1 package de.intevation.flys.client.client.ui; |
2 | 2 |
3 import java.util.HashMap; | |
4 import java.util.LinkedHashMap; | |
5 import java.util.Map; | |
6 | |
3 import com.google.gwt.core.client.GWT; | 7 import com.google.gwt.core.client.GWT; |
4 | |
5 import com.smartgwt.client.types.VerticalAlignment; | 8 import com.smartgwt.client.types.VerticalAlignment; |
6 import com.smartgwt.client.widgets.Canvas; | 9 import com.smartgwt.client.widgets.Canvas; |
7 import com.smartgwt.client.widgets.Img; | 10 import com.smartgwt.client.widgets.HTMLPane; |
8 import com.smartgwt.client.widgets.Label; | 11 import com.smartgwt.client.widgets.Label; |
9 import com.smartgwt.client.widgets.form.DynamicForm; | 12 import com.smartgwt.client.widgets.form.DynamicForm; |
10 import com.smartgwt.client.widgets.form.fields.LinkItem; | 13 import com.smartgwt.client.widgets.form.fields.LinkItem; |
11 import com.smartgwt.client.widgets.form.fields.events.ClickEvent; | 14 import com.smartgwt.client.widgets.form.fields.events.ClickEvent; |
12 import com.smartgwt.client.widgets.form.fields.events.ClickHandler; | 15 import com.smartgwt.client.widgets.form.fields.events.ClickHandler; |
16 import com.smartgwt.client.widgets.form.fields.events.ItemHoverEvent; | |
17 import com.smartgwt.client.widgets.form.fields.events.ItemHoverHandler; | |
13 import com.smartgwt.client.widgets.layout.HLayout; | 18 import com.smartgwt.client.widgets.layout.HLayout; |
14 import com.smartgwt.client.widgets.layout.VLayout; | 19 import com.smartgwt.client.widgets.layout.VLayout; |
15 | 20 |
16 import de.intevation.flys.client.client.FLYSConstants; | 21 import de.intevation.flys.client.client.FLYSConstants; |
17 import de.intevation.flys.client.client.event.StepForwardEvent; | 22 import de.intevation.flys.client.client.event.StepForwardEvent; |
37 protected FLYSConstants messages = GWT.create(FLYSConstants.class); | 42 protected FLYSConstants messages = GWT.create(FLYSConstants.class); |
38 | 43 |
39 /** The selected river*/ | 44 /** The selected river*/ |
40 protected Data river; | 45 protected Data river; |
41 | 46 |
47 private static Map<String, LinkItem> rivers; | |
48 | |
49 private static Trigger trigger; | |
50 | |
51 private Canvas module; | |
52 | |
53 private class Trigger { | |
54 | |
55 private LinkSelection ls; | |
56 | |
57 public Trigger(LinkSelection ls) { | |
58 this.ls = ls; | |
59 // TODO Auto-generated constructor stub | |
60 } | |
61 | |
62 public void trigger(String name) { | |
63 DataItem item = new DefaultDataItem( | |
64 name, | |
65 null, | |
66 name); | |
67 | |
68 river = new DefaultData( | |
69 "river", | |
70 null, | |
71 null, | |
72 new DataItem [] {item}); | |
73 this.ls.fireStepForwardEvent (new StepForwardEvent (getData())); | |
74 } | |
75 } | |
42 /** | 76 /** |
43 * This method currently returns a | 77 * This method currently returns a |
44 * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all | 78 * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all |
45 * data items in a list of links stored in <i>data</i>. | 79 * data items in a list of links stored in <i>data</i>. |
46 * | 80 * |
48 * | 82 * |
49 * @return a combobox. | 83 * @return a combobox. |
50 */ | 84 */ |
51 @Override | 85 @Override |
52 public Canvas create(DataList data) { | 86 public Canvas create(DataList data) { |
87 trigger = new Trigger(this); | |
88 createCallback(); | |
89 rivers = new HashMap<String, LinkItem>(); | |
53 VLayout v = new VLayout(); | 90 VLayout v = new VLayout(); |
54 v.setMembersMargin(10); | 91 v.setMembersMargin(10); |
55 v.setAlign(VerticalAlignment.TOP); | 92 v.setAlign(VerticalAlignment.TOP); |
56 if (data.getState() == null) { | 93 if (data.getState() == null) { |
57 Canvas module = super.createWidget(data); | 94 module = super.createWidget(data); |
58 v.addMember(module); | 95 v.addMember(module); |
96 } | |
97 else { | |
98 module = null; | |
59 } | 99 } |
60 Canvas content = createWidget(data); | 100 Canvas content = createWidget(data); |
61 v.addMember(content); | 101 v.addMember(content); |
62 | 102 |
63 return v; | 103 return v; |
111 GWT.log("LinkSelection - create()"); | 151 GWT.log("LinkSelection - create()"); |
112 | 152 |
113 VLayout layout = new VLayout(); | 153 VLayout layout = new VLayout(); |
114 layout.setAlign(VerticalAlignment.TOP); | 154 layout.setAlign(VerticalAlignment.TOP); |
115 layout.setHeight(25); | 155 layout.setHeight(25); |
116 | 156 HLayout colums = new HLayout(); |
117 VLayout formLayout = new VLayout(); | 157 VLayout formLayout1 = new VLayout(); |
118 | 158 VLayout formLayout2 = new VLayout(); |
119 formLayout.setLayoutLeftMargin(60); | 159 |
160 formLayout1.setLayoutLeftMargin(60); | |
161 | |
120 int size = data.size(); | 162 int size = data.size(); |
121 | |
122 for (int i = 0; i < size; i++) { | 163 for (int i = 0; i < size; i++) { |
123 Data d = data.get(i); | 164 Data d = data.get(i); |
124 | 165 |
125 Label label = new Label(d.getDescription()); | 166 Label label = new Label(d.getDescription()); |
126 label.setValign(VerticalAlignment.TOP); | 167 label.setValign(VerticalAlignment.TOP); |
127 label.setHeight(20); | 168 label.setHeight(20); |
128 | 169 label.setWidth(400); |
170 | |
171 LinkedHashMap<String, String> it = new LinkedHashMap<String, String>(); | |
172 | |
173 boolean defaultSet = false; | |
174 boolean first = true; | |
175 | |
176 DataItem def = d.getDefault(); | |
177 String defValue = def != null ? def.getStringValue() : null; | |
178 | |
179 if (defValue != null && defValue.length() > 0) { | |
180 defaultSet = true; | |
181 } | |
182 | |
183 int counter = 0; | |
129 for (DataItem item: d.getItems()) { | 184 for (DataItem item: d.getItems()) { |
130 LinkItem link = new LinkItem("river"); | 185 LinkItem link = new LinkItem("river"); |
131 link.setLinkTitle(item.getLabel()); | 186 link.setLinkTitle(item.getLabel()); |
132 link.setTarget(item.getStringValue()); | 187 link.setTarget(item.getStringValue()); |
133 link.setShowTitle(false); | 188 link.setShowTitle(false); |
134 DynamicForm f = new DynamicForm(); | 189 DynamicForm f = new DynamicForm(); |
190 rivers.put(item.getStringValue(), link); | |
135 f.setItems(link); | 191 f.setItems(link); |
136 formLayout.addMember(f); | 192 if (counter < d.getItems().length/2) { |
193 formLayout1.addMember(f); | |
194 } | |
195 else { | |
196 formLayout2.addMember(f); | |
197 } | |
198 counter++; | |
137 link.addClickHandler(new ClickHandler() { | 199 link.addClickHandler(new ClickHandler() { |
138 @Override | 200 @Override |
139 public void onClick(ClickEvent event) { | 201 public void onClick(ClickEvent event) { |
140 DataItem item = new DefaultDataItem( | 202 DataItem item = new DefaultDataItem( |
141 ((LinkItem)event.getItem()).getLinkTitle(), | 203 ((LinkItem)event.getItem()).getLinkTitle(), |
142 null, | 204 null, |
143 ((LinkItem)event.getItem()).getLinkTitle()); | 205 ((LinkItem)event.getItem()).getLinkTitle()); |
144 | |
145 river = new DefaultData( | 206 river = new DefaultData( |
146 "river", | 207 "river", |
147 null, | 208 null, |
148 null, | 209 null, |
149 new DataItem [] {item}); | 210 new DataItem [] {item}); |
150 fireStepForwardEvent (new StepForwardEvent (getData())); | 211 fireStepForwardEvent (new StepForwardEvent (getData())); |
151 } | 212 } |
152 }); | 213 }); |
153 | 214 link.addItemHoverHandler(new ItemHoverHandler() { |
215 @Override | |
216 public void onItemHover(ItemHoverEvent event) { | |
217 GWT.log(((LinkItem)event.getItem()).getLinkTitle()); | |
218 String river = ((LinkItem)event.getItem()).getLinkTitle(); | |
219 for (String s : rivers.keySet()) { | |
220 LinkItem item = rivers.get(s); | |
221 if (item.getLinkTitle().equals(s)) { | |
222 item.setCellStyle("riverLinkHighlight"); | |
223 } | |
224 else { | |
225 item.setCellStyle("formCell"); | |
226 } | |
227 } | |
228 callHighlightRiver(river); | |
229 } | |
230 }); | |
231 } | |
232 | |
233 if (module != null) { | |
234 getModuleSelection().setRivers(rivers); | |
154 } | 235 } |
155 label.setWidth(50); | 236 label.setWidth(50); |
156 | |
157 layout.addMember(label); | 237 layout.addMember(label); |
158 layout.addMember(formLayout); | 238 colums.addMember(formLayout1); |
159 } | 239 colums.addMember(formLayout2); |
160 layout.setAlign(VerticalAlignment.TOP); | 240 layout.addMember(colums); |
161 | 241 } |
162 String baseUrl = GWT.getHostPageBaseURL(); | 242 layout.addMember(getNextButton()); |
163 Img map = new Img(baseUrl + messages.riverMap(), 494, 582); | 243 HTMLPane map = new HTMLPane(); |
244 map.setContentsURL("images/FLYS_Karte_interactive.html"); | |
164 helperContainer.addMember(map); | 245 helperContainer.addMember(map); |
165 | |
166 return layout; | 246 return layout; |
167 } | 247 } |
168 | 248 |
169 | 249 |
170 @Override | 250 @Override |
171 protected Data[] getData() { | 251 protected Data[] getData() { |
172 Data[] module = super.getData(); | 252 Data[] module = super.getData(); |
253 | |
173 if (module != null) { | 254 if (module != null) { |
174 return new Data[] {module[0], river}; | 255 return new Data[] {module[0], river}; |
175 } | 256 } |
176 else { | 257 else { |
177 return new Data[] {river}; | 258 return new Data[] {river}; |
178 } | 259 } |
179 } | 260 } |
261 | |
262 private native void createCallback() /*-{ | |
263 $wnd.highlightRiver = @de.intevation.flys.client.client.ui.LinkSelection::highlightCallback(Ljava/lang/String;); | |
264 $wnd.selectRiver = @de.intevation.flys.client.client.ui.LinkSelection::selectCallback(Ljava/lang/String;); | |
265 }-*/; | |
266 | |
267 private static void highlightCallback(String name) { | |
268 for (String s : rivers.keySet()) { | |
269 if (s.equals(name)) { | |
270 LinkItem item = rivers.get(name); | |
271 item.setCellStyle("riverLinkHighlight"); | |
272 item.redraw(); | |
273 } | |
274 else { | |
275 LinkItem item = rivers.get(s); | |
276 item.setCellStyle("formCell"); | |
277 item.redraw(); | |
278 } | |
279 } | |
280 } | |
281 | |
282 private static void selectCallback(String name) { | |
283 trigger.trigger(name); | |
284 } | |
285 | |
286 private native void callHighlightRiver(String name) /*-{ | |
287 $wnd.highlight(name); | |
288 }-*/; | |
180 } | 289 } |
181 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 290 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |