comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWidget.java @ 1325:2f5fbfeda1d4

Introduced i18n for datacage flys-client/trunk@2967 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 13 Oct 2011 16:30:55 +0000
parents e8bb11976c70
children 1627a28c4504
comparison
equal deleted inserted replaced
1324:90b786325324 1325:2f5fbfeda1d4
42 import de.intevation.flys.client.shared.model.DataCageNode; 42 import de.intevation.flys.client.shared.model.DataCageNode;
43 import de.intevation.flys.client.shared.model.AttrList; 43 import de.intevation.flys.client.shared.model.AttrList;
44 44
45 import java.util.ArrayList; 45 import java.util.ArrayList;
46 import java.util.List; 46 import java.util.List;
47 import java.util.MissingResourceException;
47 import java.util.Stack; 48 import java.util.Stack;
48 49
49 // TODO: refactor, extract ~DataCageGrid 50 // TODO: refactor, extract ~DataCageGrid
50 /** 51 /**
51 * Display tree of, for example, previous calculations and allows 52 * Display tree of, for example, previous calculations and allows
52 * selection in order to access/clone these. 53 * selection in order to access/clone these.
53 */ 54 */
54 public class DatacageWidget 55 public class DatacageWidget
55 extends VLayout 56 extends VLayout
56 { 57 {
58 public static final int MAX_OPEN = 30;
59
57 protected MetaDataServiceAsync metaDataService = 60 protected MetaDataServiceAsync metaDataService =
58 GWT.create(MetaDataService.class); 61 GWT.create(MetaDataService.class);
59 62
60 protected FLYSConstants messages = 63 protected FLYSConstants messages =
61 GWT.create(FLYSConstants.class); 64 GWT.create(FLYSConstants.class);
115 toLoad = new ToLoad(); 118 toLoad = new ToLoad();
116 119
117 setWidth100(); 120 setWidth100();
118 121
119 tree = new Tree(); 122 tree = new Tree();
120 tree.setModelType(TreeModelType.PARENT); 123 tree.setModelType(TreeModelType.CHILDREN);
121 tree.setNameProperty("name"); 124 tree.setNameProperty("name");
122 tree.setIdField("id"); 125 tree.setIdField("id");
123 tree.setParentIdField("parent-id"); 126 tree.setChildrenProperty("children-nodes");
127 tree.setShowRoot(false);
124 128
125 treeGrid = new TreeGrid(); 129 treeGrid = new TreeGrid();
126 treeGrid.setLoadDataOnDemand(false); 130 treeGrid.setLoadDataOnDemand(false);
127 treeGrid.setWidth100(); 131 treeGrid.setWidth100();
128 treeGrid.setHeight100(); 132 treeGrid.setHeight100();
129 treeGrid.setShowRoot(false); 133 treeGrid.setShowRoot(false);
134 treeGrid.setNodeIcon("[SKIN]/images/blank.gif");
135 treeGrid.setShowConnectors(true);
130 136
131 treeGrid.addRecordDoubleClickHandler(new RecordDoubleClickHandler() { 137 treeGrid.addRecordDoubleClickHandler(new RecordDoubleClickHandler() {
132 @Override 138 @Override
133 public void onRecordDoubleClick(RecordDoubleClickEvent event) { 139 public void onRecordDoubleClick(RecordDoubleClickEvent event) {
134 doubleClickedOnTree(event); 140 doubleClickedOnTree(event);
271 } 277 }
272 } 278 }
273 279
274 280
275 protected Button createPlusButton() { 281 protected Button createPlusButton() {
276 // TODO: i18n + icon 282 Button plusBtn = new Button(messages.datacageAdd());
277 Button plusBtn = new Button("+");
278 plusBtn.addClickHandler(new ClickHandler() { 283 plusBtn.addClickHandler(new ClickHandler() {
279 @Override 284 @Override
280 public void onClick(ClickEvent event) { 285 public void onClick(ClickEvent event) {
281 plusClicked(); 286 plusClicked();
282 } 287 }
352 SC.warn(caught.getMessage()); 357 SC.warn(caught.getMessage());
353 } 358 }
354 359
355 public void onSuccess(DataCageTree dcTree) { 360 public void onSuccess(DataCageTree dcTree) {
356 GWT.log("Successfully loaded meta data."); 361 GWT.log("Successfully loaded meta data.");
357 tree.setData(treeToData(dcTree)); 362 IdGenerator idGenerator = new IdGenerator();
363 DataCageNode dcRoot = dcTree.getRoot();
364 TreeNode root = buildRecursiveChildren(
365 dcRoot, idGenerator);
366 tree.setRoot(root);
367 if (idGenerator.current() < MAX_OPEN) {
368 tree.openAll();
369 }
358 treeGrid.setData(tree); 370 treeGrid.setData(tree);
359 } 371 }
360 }); 372 });
361 } 373 }
362 374
363 private static class IdGenerator { 375 private static final class IdGenerator {
364 protected int current; 376 protected int current;
365 377
366 public IdGenerator() { 378 public IdGenerator() {
367 }
368
369 public IdGenerator(int start) {
370 current = start;
371 } 379 }
372 380
373 public int next() { 381 public int next() {
374 return current++; 382 return current++;
375 } 383 }
384
385 public int current() {
386 return current;
387 }
376 } // class IdGenerator 388 } // class IdGenerator
377 389
378 protected static void buildRecursive( 390 private String i18n(String s) {
391 if (!(s.startsWith("${") && s.endsWith("}"))) {
392 return s;
393 }
394
395 s = s.substring(2, s.length()-1);
396
397 try {
398 return messages.getString(s);
399 }
400 catch (MissingResourceException mre) {
401 GWT.log("cannot find i18n for + '" + s + "'");
402 return s;
403 }
404 }
405
406 protected TreeNode buildRecursiveChildren(
379 DataCageNode node, 407 DataCageNode node,
380 int parentId, 408 IdGenerator idGenerator
381 IdGenerator idGenerator,
382 List<TreeNode> nodes
383 ) { 409 ) {
384 TreeNode tn = new TreeNode(); 410 TreeNode tn = new TreeNode();
385 int id = idGenerator.next(); 411 tn.setAttribute("id", idGenerator.next());
386 tn.setAttribute("parent-id", parentId); 412
387 tn.setAttribute("id", id); 413 List<DataCageNode> children = node.getChildren();
388 // TODO: i18n 414
389 tn.setAttribute("name", node.getDescription()); 415 if (children != null) {
416 TreeNode [] tns = new TreeNode[children.size()];
417 for (int i = 0; i < tns.length; ++i) {
418 DataCageNode child = children.get(i);
419 tns[i] = buildRecursiveChildren(child, idGenerator);
420 }
421 tn.setAttribute("children-nodes", tns);
422 }
423
424 tn.setAttribute("name", i18n(node.getDescription()));
390 tn.setAttribute("facet", node.getName()); 425 tn.setAttribute("facet", node.getName());
391 nodes.add(tn); 426
392 AttrList attrs = node.getAttributes(); 427 AttrList attrs = node.getAttributes();
393 if (attrs != null) { 428 if (attrs != null) {
394 for (int i = 0, N = attrs.size(); i < N; ++i) { 429 for (int i = 0, N = attrs.size(); i < N; ++i) {
395 String key = attrs.getKey(i); 430 String key = attrs.getKey(i);
396 String value = attrs.getValue(i); 431 String value = attrs.getValue(i);
397 tn.setAttribute(key, value); 432 tn.setAttribute(key, value);
398 } 433 }
399 } 434 }
400 List<DataCageNode> children = node.getChildren(); 435
401 if (children != null) { 436 return tn;
402 for (DataCageNode child: children) {
403 buildRecursive(child, id, idGenerator, nodes);
404 }
405 }
406 }
407
408
409 protected static TreeNode [] treeToData(DataCageTree tree) {
410 List<TreeNode> nodes = new ArrayList<TreeNode>();
411
412 DataCageNode root = tree.getRoot();
413
414 IdGenerator idGenerator = new IdGenerator();
415
416 buildRecursive(root, idGenerator.next(), idGenerator, nodes);
417
418 return nodes.toArray(new TreeNode[nodes.size()]);
419 } 437 }
420 } 438 }
421 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 439 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org