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);

http://dive4elements.wald.intevation.org