Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java @ 6019:078677c684af
Commit performance improvement written by Sascha Teichmann
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Tue, 14 May 2013 18:41:43 +0200 |
parents | ea9eef426962 |
children | 0eab06d5144f |
comparison
equal
deleted
inserted
replaced
6018:ff70221c078b | 6019:078677c684af |
---|---|
51 protected FLYSConstants messages = GWT.create(FLYSConstants.class); | 51 protected FLYSConstants messages = GWT.create(FLYSConstants.class); |
52 | 52 |
53 /** The selected river*/ | 53 /** The selected river*/ |
54 protected Data river; | 54 protected Data river; |
55 private static Map<String, LinkItem> rivers; | 55 private static Map<String, LinkItem> rivers; |
56 private static HLayout columns; | |
56 | 57 |
57 private static Trigger trigger; | 58 private static Trigger trigger; |
58 | 59 |
59 private Canvas module; | 60 private Canvas module; |
61 | |
60 | 62 |
61 private class Trigger { | 63 private class Trigger { |
62 | 64 |
63 private LinkSelection ls; | 65 private LinkSelection ls; |
64 | 66 |
65 public Trigger(LinkSelection ls) { | 67 public Trigger(LinkSelection ls) { |
66 this.ls = ls; | 68 this.ls = ls; |
67 // TODO Auto-generated constructor stub | |
68 } | 69 } |
69 | 70 |
70 public void trigger(String name) { | 71 public void trigger(String name) { |
71 DataItem item = new DefaultDataItem( | 72 DataItem item = new DefaultDataItem( |
72 name, | 73 name, |
160 protected Canvas createWidget(DataList data) { | 161 protected Canvas createWidget(DataList data) { |
161 GWT.log("LinkSelection - create()"); | 162 GWT.log("LinkSelection - create()"); |
162 | 163 |
163 VLayout layout = new VLayout(); | 164 VLayout layout = new VLayout(); |
164 layout.setAlign(VerticalAlignment.TOP); | 165 layout.setAlign(VerticalAlignment.TOP); |
166 // XXX: This an evil hack because of misuse of static vars! | |
165 layout.setHeight(25); | 167 layout.setHeight(25); |
166 HLayout colums = new HLayout(); | 168 columns = new HLayout(); |
167 VLayout formLayout1 = new VLayout(); | 169 VLayout formLayout1 = new VLayout(); |
168 VLayout formLayout2 = new VLayout(); | 170 VLayout formLayout2 = new VLayout(); |
169 | 171 |
170 formLayout1.setLayoutLeftMargin(60); | 172 formLayout1.setLayoutLeftMargin(60); |
171 | 173 |
176 | 178 |
177 Label label = new Label(d.getDescription()); | 179 Label label = new Label(d.getDescription()); |
178 label.setValign(VerticalAlignment.TOP); | 180 label.setValign(VerticalAlignment.TOP); |
179 label.setHeight(20); | 181 label.setHeight(20); |
180 label.setWidth(400); | 182 label.setWidth(400); |
181 LinkedHashMap<String, String> it = new LinkedHashMap<String, String>(); | |
182 boolean defaultSet = false; | |
183 boolean first = true; | |
184 DataItem def = d.getDefault(); | |
185 String defValue = def != null ? def.getStringValue() : null; | |
186 | |
187 if (defValue != null && defValue.length() > 0) { | |
188 defaultSet = true; | |
189 } | |
190 | 183 |
191 int counter = 0; | 184 int counter = 0; |
192 for (DataItem item: d.getItems()) { | 185 for (DataItem item: d.getItems()) { |
193 LinkItem link = new LinkItem("river"); | 186 LinkItem link = new LinkItem("river"); |
194 link.setLinkTitle(item.getLabel()); | 187 link.setLinkTitle(item.getLabel()); |
224 }); | 217 }); |
225 link.addItemHoverHandler(new ItemHoverHandler() { | 218 link.addItemHoverHandler(new ItemHoverHandler() { |
226 @Override | 219 @Override |
227 public void onItemHover(ItemHoverEvent event) { | 220 public void onItemHover(ItemHoverEvent event) { |
228 String river = ((LinkItem)event.getItem()).getLinkTitle(); | 221 String river = ((LinkItem)event.getItem()).getLinkTitle(); |
229 for (String s : rivers.keySet()) { | 222 for (Map.Entry<String, LinkItem> entry: rivers.entrySet()) { |
230 LinkItem item = rivers.get(s); | 223 String s = entry.getKey(); |
224 LinkItem item = entry.getValue(); | |
231 if (item.getLinkTitle().equals(river)) { | 225 if (item.getLinkTitle().equals(river)) { |
232 item.setCellStyle("riverLinkHighlight"); | 226 item.setCellStyle("riverLinkHighlight"); |
227 callHighlightRiver(river); | |
233 } | 228 } |
234 else { | 229 else { |
235 item.setCellStyle("formCell"); | 230 item.setCellStyle("formCell"); |
236 callUnHighlightRiver(s); | 231 callUnHighlightRiver(s); |
237 } | 232 } |
238 } | 233 } |
239 callHighlightRiver(river); | 234 if (columns != null) { |
235 columns.redraw(); | |
236 } | |
240 } | 237 } |
241 }); | 238 }); |
242 } | 239 } |
243 | 240 |
244 if (module != null) { | 241 if (module != null) { |
245 getModuleSelection().setRivers(rivers); | 242 getModuleSelection().setRivers(rivers); |
246 } | 243 } |
247 label.setWidth(50); | 244 label.setWidth(50); |
248 | 245 |
249 layout.addMember(label); | 246 layout.addMember(label); |
250 colums.addMember(formLayout1); | 247 columns.addMember(formLayout1); |
251 colums.addMember(formLayout2); | 248 columns.addMember(formLayout2); |
252 layout.addMember(colums); | 249 layout.addMember(columns); |
253 | 250 |
254 } | 251 } |
255 layout.addMember(getNextButton()); | 252 layout.addMember(getNextButton()); |
256 HTMLPane map = new HTMLPane(); | 253 HTMLPane map = new HTMLPane(); |
257 map.setContentsURL("images/FLYS_Karte_interactive.html"); | 254 map.setContentsURL("images/FLYS_Karte_interactive.html"); |
277 $wnd.selectRiver = @org.dive4elements.river.client.client.ui.LinkSelection::selectCallback(Ljava/lang/String;); | 274 $wnd.selectRiver = @org.dive4elements.river.client.client.ui.LinkSelection::selectCallback(Ljava/lang/String;); |
278 $wnd.availableRiver = @org.dive4elements.river.client.client.ui.LinkSelection::availableRiver(Ljava/lang/String;); | 275 $wnd.availableRiver = @org.dive4elements.river.client.client.ui.LinkSelection::availableRiver(Ljava/lang/String;); |
279 }-*/; | 276 }-*/; |
280 | 277 |
281 private static void highlightCallback(String name) { | 278 private static void highlightCallback(String name) { |
282 for (String s : rivers.keySet()) { | 279 for (Map.Entry<String, LinkItem> entry: rivers.entrySet()) { |
283 if (s.equals(name)) { | 280 String s = entry.getKey(); |
284 LinkItem item = rivers.get(name); | 281 LinkItem item = entry.getValue(); |
285 item.setCellStyle("riverLinkHighlight"); | 282 item.setCellStyle(s.equals(name) ? "riverLinkHighlight" : "formCell"); |
286 item.redraw(); | 283 } |
287 } | 284 if (columns != null) { |
288 else { | 285 columns.redraw(); |
289 LinkItem item = rivers.get(s); | |
290 item.setCellStyle("formCell"); | |
291 item.redraw(); | |
292 } | |
293 } | 286 } |
294 } | 287 } |
295 | 288 |
296 private static boolean availableRiver(String river) { | 289 private static boolean availableRiver(String river) { |
297 if (rivers.containsKey(river)) { | 290 LinkItem ri = rivers.get(river); |
298 if(rivers.get(river).isVisible()) { | 291 return ri != null && ri.isVisible(); |
299 return true; | |
300 } | |
301 } | |
302 return false; | |
303 } | 292 } |
304 | 293 |
305 private static void selectCallback(String name) { | 294 private static void selectCallback(String name) { |
306 if (rivers.containsKey(name)) { | 295 if (availableRiver(name)) { |
307 if (rivers.get(name).isVisible()) { | 296 trigger.trigger(name); |
308 trigger.trigger(name); | |
309 } | |
310 } | 297 } |
311 } | 298 } |
312 | 299 |
313 private native void callHighlightRiver(String name) /*-{ | 300 private native void callHighlightRiver(String name) /*-{ |
314 $wnd.highlight(name); | 301 $wnd.highlight(name); |