Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacageWidget.java @ 9580:839b2aa84dd0
minuend/subtrahend-UI-switch
author | gernotbelger |
---|---|
date | Tue, 08 Jan 2019 17:01:09 +0100 |
parents | 84397da33d17 |
children |
rev | line source |
---|---|
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5993
ea9eef426962
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5871
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5993
ea9eef426962
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5871
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
9 package org.dive4elements.river.client.client.ui; |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 |
5871
88d6bddbf6cd
River GWT client: Removed obsolete same package imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
11 import java.util.ArrayList; |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
12 import java.util.Collection; |
5871
88d6bddbf6cd
River GWT client: Removed obsolete same package imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
13 import java.util.List; |
88d6bddbf6cd
River GWT client: Removed obsolete same package imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
14 import java.util.MissingResourceException; |
88d6bddbf6cd
River GWT client: Removed obsolete same package imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
15 import java.util.Stack; |
88d6bddbf6cd
River GWT client: Removed obsolete same package imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
16 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
17 import org.dive4elements.river.client.client.Config; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
18 import org.dive4elements.river.client.client.FLYSConstants; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
19 import org.dive4elements.river.client.client.event.DatacageDoubleClickHandler; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
20 import org.dive4elements.river.client.client.event.DatacageHandler; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
21 import org.dive4elements.river.client.client.services.MetaDataService; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
22 import org.dive4elements.river.client.client.services.MetaDataServiceAsync; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
23 import org.dive4elements.river.client.shared.model.AttrList; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
24 import org.dive4elements.river.client.shared.model.DataCageNode; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
25 import org.dive4elements.river.client.shared.model.DataCageTree; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
26 import org.dive4elements.river.client.shared.model.ToLoad; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
27 import org.dive4elements.river.client.shared.model.User; |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
29 import com.google.gwt.core.client.GWT; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
30 import com.google.gwt.user.client.rpc.AsyncCallback; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
31 import com.smartgwt.client.types.SelectionStyle; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
32 import com.smartgwt.client.types.TreeModelType; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
33 import com.smartgwt.client.util.SC; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
34 import com.smartgwt.client.widgets.Button; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
35 import com.smartgwt.client.widgets.events.ClickEvent; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
36 import com.smartgwt.client.widgets.events.ClickHandler; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
37 import com.smartgwt.client.widgets.grid.HoverCustomizer; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
38 import com.smartgwt.client.widgets.grid.ListGridRecord; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
39 import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
40 import com.smartgwt.client.widgets.grid.events.RecordDoubleClickHandler; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
41 import com.smartgwt.client.widgets.layout.VLayout; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
42 import com.smartgwt.client.widgets.tree.Tree; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
43 import com.smartgwt.client.widgets.tree.TreeGrid; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
44 import com.smartgwt.client.widgets.tree.TreeNode; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
45 |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
46 // TODO: refactor, extract ~DataCageGrid |
1283
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
47 /** |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
48 * Display tree of, for example, previous calculations and allows |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
49 * selection in order to access/clone these. |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
50 */ |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
51 public final class DatacageWidget extends VLayout { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
52 |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
53 private static final FLYSConstants MSG = GWT.create(FLYSConstants.class); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
54 |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
55 public static final int MAX_OPEN = 30; |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
56 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
57 public interface DatacageFilter { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
58 boolean accept(DataCageNode node); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
60 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
61 public static final DatacageFilter ACCEPT_ALL_FILTER = new DatacageFilter() { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
62 @Override |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
63 public boolean accept(final DataCageNode node) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
64 return true; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
65 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
66 }; |
868
439068365cde
Minor cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
848
diff
changeset
|
67 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
68 public static final DatacageFilter ACCEPT_NONE_FILTER = new DatacageFilter() { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
69 @Override |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
70 public boolean accept(final DataCageNode node) { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
71 return false; |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
72 } |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
73 }; |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
74 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
75 private final MetaDataServiceAsync metaDataService = GWT.create(MetaDataService.class); |
916
a1a5dc2b9e34
Improved the DEM datacage panel to display the DEMs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
897
diff
changeset
|
76 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
77 private final List<DatacageHandler> handlers = new ArrayList<DatacageHandler>(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
79 private final List<DatacageDoubleClickHandler> doubleHandlers = new ArrayList<DatacageDoubleClickHandler>(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
80 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
81 private final TreeGrid treeGrid; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
82 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
83 private Tree tree; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
84 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
85 private ToLoad toLoad; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
86 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
87 /** Layout to show spinning wheel of joy. */ |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
88 private VLayout lockScreen; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
89 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
90 private DataCageTree dcTree; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
91 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
92 private DatacageFilter filter = ACCEPT_ALL_FILTER; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
93 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
94 private DatacageWidgetData data; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
95 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
96 public DatacageWidget(final DatacageWidgetData data) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
97 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
98 this.data = data; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
99 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
100 this.toLoad = new ToLoad(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 setWidth100(); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
104 this.treeGrid = new TreeGrid(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
106 final String columnLabel = this.data.getColumnLabel(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
107 if (columnLabel != null) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
108 this.treeGrid.setTreeFieldTitle(columnLabel); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
110 this.treeGrid.setLoadDataOnDemand(false); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
111 this.treeGrid.setWidth100(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
112 this.treeGrid.setHeight100(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
113 this.treeGrid.setShowRoot(false); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
114 this.treeGrid.setNodeIcon("[SKIN]/../blank.gif"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
115 this.treeGrid.setShowConnectors(true); |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
116 this.treeGrid.setLoadingMessage(MSG.databasket_loading()); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
117 this.treeGrid.setLoadingDataMessage(MSG.databasket_loading()); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
118 this.treeGrid.setEmptyMessage(MSG.databasket_empty()); |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
119 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
120 this.treeGrid.setHoverMoveWithMouse(true); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
121 this.treeGrid.setCanHover(true); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
122 this.treeGrid.setShowHover(true); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
123 this.treeGrid.setHoverOpacity(75); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
124 this.treeGrid.setHoverWidth(120); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
125 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
126 this.treeGrid.setHoverCustomizer(new HoverCustomizer() { |
3475
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
127 @Override |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
128 public String hoverHTML(final Object value, final ListGridRecord record, final int rowNum, final int colNum) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
129 if (record instanceof TreeNode) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
130 final TreeNode hoveredTreeNode = (TreeNode) record; |
3475
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
131 String info = hoveredTreeNode.getAttribute("info"); |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
132 if (info == null) { |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
133 info = hoveredTreeNode.getName(); |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
134 } |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
135 return info; |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
136 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
137 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
138 return "";// should not happen |
3475
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
139 } |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
140 }); |
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
141 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
142 this.treeGrid.addRecordDoubleClickHandler(new RecordDoubleClickHandler() { |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 @Override |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
144 public void onRecordDoubleClick(final RecordDoubleClickEvent event) { |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 doubleClickedOnTree(event); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 }); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
149 addMember(this.treeGrid); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
151 if (data.isShowButton()) |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
152 addMember(createPlusButton()); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 triggerTreeBuilding(); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
157 public void setFilter(final DatacageFilter filter) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
158 assert (filter != null); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
159 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
160 this.filter = filter; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
161 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
162 if (this.dcTree != null) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
163 updateTree(this.dcTree); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
164 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
165 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
166 public TreeGrid getTreeGrid() { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
167 return this.treeGrid; |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
168 } |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
169 |
6042 | 170 /** Disable input, show spinning wheel of joy. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
171 private void lockUI() { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
172 this.lockScreen = ScreenLock.lockUI(this, this.lockScreen); |
5488
6ec7c8ebb2c9
DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5462
diff
changeset
|
173 } |
6ec7c8ebb2c9
DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5462
diff
changeset
|
174 |
6ec7c8ebb2c9
DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5462
diff
changeset
|
175 /** Enable input, remove grey, remove spinning wheel of joy. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
176 protected final void unlockUI() { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
177 ScreenLock.unlockUI(this, this.lockScreen); |
5488
6ec7c8ebb2c9
DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5462
diff
changeset
|
178 } |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
179 |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
180 /** |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
181 * Sets whether more than one item can be selected. |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
182 * |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
183 * @param multi |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
184 * if true, allow mutliple selections. |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
185 */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
186 public void setIsMutliSelectable(final boolean multi) { |
1268
d0500e993218
Force a single selection in the datacage widget for DEMs and WSPs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1267
diff
changeset
|
187 if (multi) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
188 this.treeGrid.setSelectionType(SelectionStyle.MULTIPLE); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
189 } else { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
190 this.treeGrid.setSelectionType(SelectionStyle.SINGLE); |
1268
d0500e993218
Force a single selection in the datacage widget for DEMs and WSPs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1267
diff
changeset
|
191 } |
d0500e993218
Force a single selection in the datacage widget for DEMs and WSPs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1267
diff
changeset
|
192 } |
d0500e993218
Force a single selection in the datacage widget for DEMs and WSPs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1267
diff
changeset
|
193 |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
194 /** |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
195 * @param handler |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
196 * Handler to be added (notified on add-action). |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
197 */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
198 public void addDatacageHandler(final DatacageHandler handler) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
199 if (!this.handlers.contains(handler)) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
200 this.handlers.add(handler); |
1267
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
201 } |
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
202 } |
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
203 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
204 /** |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
205 * @param h |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
206 * Handler to be added (notified on Double click on node). |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
207 */ |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
208 public void addDatacageDoubleClickHandler(final DatacageDoubleClickHandler h) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
209 if (!this.doubleHandlers.contains(h)) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
210 this.doubleHandlers.add(h); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
211 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
212 } |
1267
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
213 |
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
214 /** |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
215 * @param handler |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
216 * Handler to remove from list. |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
217 */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
218 public void removeDatacageHandler(final DatacageHandler handler) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
219 this.handlers.remove(handler); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
220 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
221 |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
222 public ToLoad getSelection() { |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
223 // Reset content of toLoads. |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
224 |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
225 // FIXME: bad... instead we should react to selection events and update toLoad in this way. |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
226 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
227 this.toLoad = new ToLoad(); |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
228 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
229 if (this.treeGrid == null) |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
230 return this.toLoad; |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
231 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
232 final ListGridRecord[] selection = this.treeGrid.getSelectedRecords(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
233 |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
234 if (selection != null) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
235 for (final ListGridRecord record : selection) { |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
236 if (record instanceof TreeNode) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
237 collectToLoads((TreeNode) record); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
238 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
239 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
240 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
241 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
242 return this.toLoad; |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
243 } |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
244 |
7971
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
245 public List<TreeNode> getPlainSelection() { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
246 final ListGridRecord[] selection = this.treeGrid.getSelectedRecords(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
247 final List<TreeNode> nodes = new ArrayList<TreeNode>(); |
7971
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
248 if (selection != null) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
249 for (final ListGridRecord record : selection) { |
7971
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
250 if (record instanceof TreeNode) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
251 nodes.add((TreeNode) record); |
7971
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
252 } |
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
253 } |
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
254 } |
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
255 return nodes; |
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
256 } |
93da474506e7
Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents:
6136
diff
changeset
|
257 |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
258 /** |
1283
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
259 * Returns the titles of selected items (if any). |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
260 */ |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
261 public String[] getSelectionTitles() { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
262 if (this.treeGrid == null) { |
1283
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
263 return new String[] {}; |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
264 } |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
265 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
266 final ListGridRecord[] selection = this.treeGrid.getSelectedRecords(); |
1283
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
267 |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
268 if (selection == null) { |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
269 return new String[] {}; |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
270 } |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
271 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
272 final List<String> titleList = new ArrayList<String>(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
273 for (final ListGridRecord record : selection) { |
1283
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
274 if (record instanceof TreeNode) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
275 titleList.add(((TreeNode) record).getAttribute("name")); |
1283
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
276 } |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
277 } |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
278 |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
279 return titleList.toArray(new String[titleList.size()]); |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
280 } |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
281 |
e8bb11976c70
Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1268
diff
changeset
|
282 /** |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
283 * Callback for add-button. |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
284 * Fires to load for every selected element and handler. |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
285 */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
286 protected final void plusClicked() { |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
287 if (!getSelection().isEmpty()) { |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
288 fireToLoad(); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
289 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
290 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
291 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
292 private Button createPlusButton() { |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
293 final Button plusBtn = new Button(MSG.datacageAdd()); |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
294 plusBtn.addClickHandler(new ClickHandler() { |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
295 @Override |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
296 public void onClick(final ClickEvent event) { |
897
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
297 plusClicked(); |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
298 } |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
299 }); |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
300 return plusBtn; |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
301 } |
2b6efb8b2301
Refactored DatacageWidget to allow reuse in other use-cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
892
diff
changeset
|
302 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
303 private void fireToLoad() { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
304 for (final DatacageHandler handler : this.handlers) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
305 handler.toLoad(this.toLoad); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
306 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
307 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
308 |
1333
1627a28c4504
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1325
diff
changeset
|
309 /** Notify DatacageDoubleClickHandlers that a doubleclick happened. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
310 private void fireOnDoubleClick() { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
311 for (final DatacageDoubleClickHandler handler : this.doubleHandlers) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
312 handler.onDoubleClick(this.toLoad); |
1267
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
313 } |
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
314 } |
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
315 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
316 protected final void doubleClickedOnTree(final RecordDoubleClickEvent event) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
317 final TreeNode node = (TreeNode) event.getRecord(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
318 collectToLoads(node); |
1267
07aa1f504491
Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
916
diff
changeset
|
319 fireOnDoubleClick(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
320 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
321 |
1349
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
322 /** |
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
323 * Adds to toLoad, from info in node. |
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
324 * Afterwards, add all children of node to stack to parse (next time |
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
325 * collectToLoads is called). |
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
326 */ |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
327 private void collectToLoads(final TreeNode root1) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
328 final Stack<TreeNode> stack = new Stack<TreeNode>(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
329 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
330 stack.push(root1); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
331 |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
332 while (!stack.isEmpty()) { |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
333 final TreeNode node = stack.pop(); |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
334 final String factory = node.getAttribute("factory"); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
335 if (factory != null) { // we need at least a factory |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
336 final String artifact = node.getAttribute("artifact-id"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
337 final String out = node.getAttribute("out"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
338 final String name = node.getAttribute("facet"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
339 final String ids = node.getAttribute("ids"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
340 final String displayname = node.getAttribute("name"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
341 final String targetOut = node.getAttribute("target_out"); |
1349
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
342 String debugAttributeValues = ""; |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
343 for (final String attr : node.getAttributes()) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
344 debugAttributeValues += ("[" + attr + ": " + node.getAttributeAsString(attr) + "] "); |
1349
46a4b74d87bf
Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1333
diff
changeset
|
345 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
346 GWT.log("DatacageWidget.collectToLoad, attributes are " + debugAttributeValues); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
347 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
348 this.toLoad.add(artifact, factory, out, name, ids, displayname, targetOut); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
349 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
350 final TreeNode[] children = this.tree.getChildren(node); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
351 if (children != null) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
352 for (final TreeNode child : children) { |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
353 stack.push(child); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
354 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
355 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
356 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
357 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
358 |
3475
9b29facddbd1
Show tooltips for datacage rows.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2905
diff
changeset
|
359 /** Get meta-data and populate tree with it. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
360 private void triggerTreeBuilding() { |
5488
6ec7c8ebb2c9
DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5462
diff
changeset
|
361 lockUI(); |
6ec7c8ebb2c9
DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5462
diff
changeset
|
362 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
363 final String locale = Config.getInstance().getLocale(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
364 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
365 final String artifactId = this.data.getArtifact().getUuid(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
366 final User user = this.data.getUser(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
367 final String userId = user != null ? user.identifier() : null; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
368 final String outs = this.data.getOuts(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
369 final String parameters = this.data.getParameters(); |
2478
6462a02022ab
Issue 424.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2435
diff
changeset
|
370 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
371 this.metaDataService.getMetaData(locale, artifactId, userId, outs, parameters, new AsyncCallback<DataCageTree>() { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
372 @Override |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
373 public void onFailure(final Throwable caught) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
374 GWT.log("Could not load meta data."); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
375 SC.warn(caught.getMessage()); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
376 unlockUI(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
377 } |
2478
6462a02022ab
Issue 424.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2435
diff
changeset
|
378 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
379 @Override |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
380 public void onSuccess(final DataCageTree dcData) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
381 GWT.log("Successfully loaded meta data."); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
382 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
383 setDatacageData(dcData); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
384 unlockUI(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
385 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
386 }); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
387 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
388 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
389 protected final void setDatacageData(final DataCageTree dcTree) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
390 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
391 this.dcTree = dcTree; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
392 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
393 if (this.tree != null) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
394 this.tree.destroy(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
395 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
396 updateTree(this.dcTree); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
397 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
398 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
399 private void updateTree(final DataCageTree dcData) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
400 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
401 this.tree = new Tree(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
402 this.tree.setModelType(TreeModelType.CHILDREN); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
403 this.tree.setNameProperty("name"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
404 this.tree.setIdField("id"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
405 this.tree.setChildrenProperty("children-nodes"); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
406 this.tree.setShowRoot(false); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
407 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
408 final IdGenerator idGenerator = new IdGenerator(); |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
409 final DataCageNode dcRoot = dcData.getRoot(); |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
410 final TreeNode root = buildRecursiveChildren(dcRoot, idGenerator); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
411 if (root != null) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
412 this.tree.setRoot(root); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
413 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
414 // FIXME: why is this necessary? an it only happens for the first level... |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
415 final TreeNode[] nodes = this.tree.getChildren(root); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
416 for (final TreeNode node : nodes) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
417 if (node.getAttribute("factory") == null && !this.tree.hasChildren(node)) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
418 node.setIsFolder(true); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
419 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
420 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
421 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
422 if (idGenerator.current() < MAX_OPEN) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
423 this.tree.openAll(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
424 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
425 this.treeGrid.setData(this.tree); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
426 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
427 |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
428 private static final class IdGenerator { |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
429 protected int current; |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
430 |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
431 public IdGenerator() { |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
432 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
433 |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
434 public int next() { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
435 return this.current++; |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
436 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
437 |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
438 public int current() { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
439 return this.current; |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
440 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
441 } // class IdGenerator |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
442 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
443 private String i18n(final String s) { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
444 if (!(s.startsWith("${") && s.endsWith("}"))) |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
445 return s; |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
446 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
447 final String sub = s.substring(2, s.length() - 1); |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
448 |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
449 try { |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
450 return MSG.getString(sub); |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
451 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
452 catch (final MissingResourceException mre) { |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
453 GWT.log("cannot find i18n for + '" + sub + "'", mre); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
454 return sub; |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
455 } |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
456 } |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
457 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
458 private TreeNode buildRecursiveChildren(final DataCageNode node, final IdGenerator idGenerator) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
459 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
460 if (!this.filter.accept(node)) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
461 return null; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
462 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
463 final List<DataCageNode> children = node.getChildren(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
464 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
465 final Collection<TreeNode> tns = new ArrayList<TreeNode>(); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
466 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
467 if (children != null && !children.isEmpty()) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
468 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
469 for (final DataCageNode child : children) { |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
470 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
471 final TreeNode childNode = buildRecursiveChildren(child, idGenerator); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
472 if (childNode != null) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
473 tns.add(childNode); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
474 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
475 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
476 /* if we should have children, but all got filtered, hide this node as well */ |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
477 if (tns.isEmpty()) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
478 return null; |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
479 } |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
480 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
481 final TreeNode tn = new TreeNode(); |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
482 tn.setAttribute("id", idGenerator.next()); |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
483 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
484 if (!tns.isEmpty()) |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
485 tn.setAttribute("children-nodes", tns.toArray(new TreeNode[tns.size()])); |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
486 |
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
487 tn.setAttribute("name", i18n(node.getDescription())); |
892
63b258bf365c
Bugfix: Use name instead of description for loading new facets via Datacage.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
884
diff
changeset
|
488 tn.setAttribute("facet", node.getName()); |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
489 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
490 final AttrList attrs = node.getAttributes(); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
491 if (attrs != null) { |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
492 for (int i = 0, N = attrs.size(); i < N; ++i) { |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
493 final String key = attrs.getKey(i); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
494 final String value = attrs.getValue(i); |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
495 tn.setAttribute(key, value); |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
496 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
497 } |
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
498 |
1325
2f5fbfeda1d4
Introduced i18n for datacage
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1283
diff
changeset
|
499 return tn; |
848
9ecd58f619a4
Moved datacage into a separated widget.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
500 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
7971
diff
changeset
|
501 } |