annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacagePairWidget.java @ 899:6e678b5d08a4

New widget for future use. flys-client/trunk@2745 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 14 Sep 2011 14:35:10 +0000
parents
children 39a39e9be5af
rev   line source
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import de.intevation.flys.client.client.event.DatacageHandler;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
4
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
5 import com.google.gwt.core.client.GWT;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
6
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7 import com.google.gwt.user.client.rpc.AsyncCallback;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
9 import com.smartgwt.client.util.SC;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import com.smartgwt.client.widgets.Button;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import com.smartgwt.client.widgets.tree.Tree;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import com.smartgwt.client.widgets.tree.TreeGrid;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import com.smartgwt.client.widgets.tree.TreeNode;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import com.smartgwt.client.types.TreeModelType;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.layout.VLayout;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 import com.smartgwt.client.widgets.layout.HLayout;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 import com.smartgwt.client.widgets.events.ClickHandler;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 import com.smartgwt.client.widgets.events.ClickEvent;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 import com.smartgwt.client.widgets.grid.ListGrid;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 import com.smartgwt.client.widgets.grid.ListGridRecord;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29 import com.smartgwt.client.widgets.grid.events.RecordDoubleClickHandler;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 import de.intevation.flys.client.shared.model.Artifact;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 import de.intevation.flys.client.shared.model.User;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 import de.intevation.flys.client.shared.model.ToLoad;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
34
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 import de.intevation.flys.client.client.FLYSConstants;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 import de.intevation.flys.client.client.Config;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 import de.intevation.flys.client.client.services.MetaDataService;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 import de.intevation.flys.client.client.services.MetaDataServiceAsync;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41 import de.intevation.flys.client.shared.model.DataCageTree;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42 import de.intevation.flys.client.shared.model.DataCageNode;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 import de.intevation.flys.client.shared.model.AttrList;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 import java.util.ArrayList;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 import java.util.List;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 import java.util.Stack;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 public class DatacagePairWidget
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 extends VLayout
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 protected FLYSConstants messages =
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 GWT.create(FLYSConstants.class);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55 /** The "remote" ListGrid to insert data to when add-button is clicked. */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 protected ListGrid grid;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58 /** First attribute-name for StringPairRecord. */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 protected static final String ATTRIBUTE_FIRST = "first";
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 /** Second attribute-name for StringPairRecord. */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62 protected static final String ATTRIBUTE_SECOND = "second";
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64 /** First (upper) DataCage Grid. */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65 protected DatacageWidget firstDatacageWidget;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 /** Second (lower) DataCage Grid. */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 protected DatacageWidget secondDatacageWidget;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 /**
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72 * Two strings to be displayed in a GridList.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 protected class StringPairRecord extends ListGridRecord {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 public StringPairRecord() {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 public StringPairRecord(String first, String second) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 setFirst(first);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 setSecond(second);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 public void setFirst(String first) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 setAttribute(ATTRIBUTE_FIRST, first);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 public void setSecond(String second) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90 setAttribute(ATTRIBUTE_SECOND, second);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
92 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
94
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 /**
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 *
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 * @param artifact Artifact to query datacage with.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98 * @param user User to query datacage with.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99 * @param outs outs to query datacage with.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 * @param grid Grid into which to insert selection of pairs.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 public DatacagePairWidget(Artifact artifact, User user, String outs,
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 ListGrid grid) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 this.grid = grid;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 HLayout hLayout = new HLayout();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 firstDatacageWidget = new DatacageWidget(artifact, user, outs, false);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109 hLayout.addMember(firstDatacageWidget);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 secondDatacageWidget = new DatacageWidget(artifact, user, outs, false);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 hLayout.addMember(secondDatacageWidget);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 // TODO: i18n + icon
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 Button plusBtn = new Button("+");
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 plusBtn.addClickHandler(new ClickHandler() {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 @Override
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117 public void onClick(ClickEvent event) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118 plusClicked();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
119 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
120 });
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
121
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
122 addMember(hLayout);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
123 addMember(plusBtn);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
124 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
126
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127 /**
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128 * Callback for add-button.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
129 * Fires to load for every selected element and handler.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
130 */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131 public void plusClicked() {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
132 ToLoad toLoad1 = firstDatacageWidget.getSelection();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 ToLoad toLoad2 = secondDatacageWidget.getSelection();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
135 if (toLoad1 == null || toLoad2 == null) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
136 return;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
137 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
138
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
139 //grid.addData(new StringPairRecord((String)toLoad1.getKeys().toArray()[0], (String)toLoad2.getKeys().toArray()[0]));
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org