annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/CrossSectionChartThemePanel.java @ 1438:432180235caf

Minor refactoring and fix initial settings when creating ui. flys-client/trunk@3403 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Tue, 13 Dec 2011 13:24:43 +0000
parents 29fc2d1dfe9b
children bdac8a72f7e6
rev   line source
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui.chart;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
3 import java.util.HashMap;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
4 import java.util.Map;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
5 import java.util.LinkedHashMap;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
6
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7 import com.google.gwt.core.client.GWT;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
9 import com.google.gwt.user.client.rpc.AsyncCallback;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
10
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
11 import com.smartgwt.client.util.SC;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
12
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import com.smartgwt.client.types.Alignment;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
14 import com.smartgwt.client.types.ListGridFieldType;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
15
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16 import com.smartgwt.client.widgets.Canvas;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import com.smartgwt.client.widgets.grid.ListGrid;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 import com.smartgwt.client.widgets.grid.ListGridField;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.grid.ListGridRecord;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 import com.smartgwt.client.widgets.layout.HLayout;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
21 import com.smartgwt.client.widgets.layout.VLayout;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 import com.smartgwt.client.widgets.form.fields.SpinnerItem;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 import com.smartgwt.client.widgets.form.DynamicForm;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
24
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
25 import com.smartgwt.client.widgets.form.fields.SelectItem;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
26 import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
29 import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 import de.intevation.flys.client.client.Config;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 import de.intevation.flys.client.shared.model.Artifact;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 import de.intevation.flys.client.shared.model.Collection;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
34 import de.intevation.flys.client.shared.model.CollectionItem;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 import de.intevation.flys.client.shared.model.Data;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 import de.intevation.flys.client.shared.model.DataItem;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 import de.intevation.flys.client.shared.model.DefaultArtifact;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 import de.intevation.flys.client.shared.model.DefaultData;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 import de.intevation.flys.client.shared.model.DefaultDataItem;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 import de.intevation.flys.client.shared.model.FacetRecord;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
41 import de.intevation.flys.client.shared.model.OutputMode;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
42 import de.intevation.flys.client.shared.model.Theme;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
43 import de.intevation.flys.client.shared.model.ThemeList;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
45 import de.intevation.flys.client.client.services.FeedServiceAsync;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
46 import de.intevation.flys.client.client.services.CrossSectionKMServiceAsync;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 /**
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 * ThemePanel much like ChartThemePanel, but shows an "Actions" column,
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
50 * needed for interaction in the CrossSection Charts and a selctor to
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
51 * declare which cross section profile is "master".
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 public class CrossSectionChartThemePanel
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 extends ChartThemePanel {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
56 /** Service to query measurement points of cross sections. */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
57 CrossSectionKMServiceAsync kmService = GWT.create(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
58 de.intevation.flys.client.client.services.CrossSectionKMService.class);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
59
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
60 /** UUID of the current "master" cross section. */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
61 protected String currentMasterUUID;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
62
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
63 /** The layout (used for visual active/inactive feedback). */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
64 protected VLayout layout;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
65
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66 /**
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 * Trivial constructor.
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 public CrossSectionChartThemePanel(
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
70 Collection collection,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
71 OutputMode mode)
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72 {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 super(collection, mode);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 /**
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
78 * Feed an artifact to let it know that it is master wrt cross-sections.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
79 * @param artifact uuid of an artifact.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
80 */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
81 public void feedTellMaster(final String artifact) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
82 Data[] feedData = DefaultData.createSimpleStringDataArray(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
83 "cross_section.master?", "1");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
84
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
85 feedService.feed(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
86 Config.getInstance().getLocale(),
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
87 new DefaultArtifact(artifact, "TODO:hash"),
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
88 feedData,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
89 new AsyncCallback<Artifact>() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
90 public void onFailure(Throwable caught) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
91 GWT.log("Could not feed artifact (" + artifact
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
92 + ") with master marker: " + caught.getMessage());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
93 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
94 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
95 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
96 public void onSuccess(Artifact artifact) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
97 GWT.log("Successfully injected master mark to " + artifact);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
98 setCurrentMaster(artifact.getUuid());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
99 requestRedraw();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
100 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
101 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
102 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
103 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
104
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
105
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
106 /**
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
107 * sets currentMasterUUID.
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
108 */
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
109 public String findCurrentMaster() {
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
110 ThemeList themeList = getThemeList();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
111 int count = getThemeList().getThemeCount();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
112 for (int i = 1; i <= count; i++) {
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
113 Theme theme = themeList.getThemeAt(i);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
114 String value = theme.getCollectionItem().getData().get("cross_section.master?");
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
115
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
116 if (value != null && !value.equals("0")) {
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
117 setCurrentMaster(theme.getArtifact());
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
118 GWT.log("found a master! " + currentMasterUUID + "/" + theme.getDescription());
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
119 return theme.getDescription();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
120 }
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
121 }
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
122 return null;
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
123 }
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
124
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
125 /**
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
126 * Create Layout, add a master selection box beneath.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
127 */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
128 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
129 protected VLayout createLayout() {
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
130 layout = super.createLayout();
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
131
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
132 // Create "set master" combobox.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
133 SelectItem cbItem = new SelectItem();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
134
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
135 cbItem.setTitle(MSG.chart_themepanel_set_master());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
136 cbItem.setType("comboBox");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
137 final LinkedHashMap<String, String> valueMap =
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
138 getThemeList().toMapArtifactUUIDDescription("cross_section");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
139 cbItem.setValueMap(valueMap);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
140
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
141 final DynamicForm form = new DynamicForm();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
142 form.setWidth(200);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
143 form.setFields(cbItem);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
144 layout.addMember(form);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
145
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
146 Config config = Config.getInstance();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
147 final String locale = config.getLocale();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
148 findCurrentMaster();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
149 cbItem.setValue(getCurrentMaster());
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
150
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
151 // Add Change Handler to first unset the old master and then set the
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
152 // new master.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
153 cbItem.addChangeHandler(new ChangeHandler() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
154 public void onChange(ChangeEvent event) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
155 String selectedItem = (String) event.getValue();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
156 final String artifact = selectedItem;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
157
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
158 disable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
159
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
160 // Tell current master that he is not master anymore.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
161 if (getCurrentMaster() != null) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
162 Data[] feedData = DefaultData.createSimpleStringDataArray(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
163 "cross_section.master?", "0");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
164 feedService.feed(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
165 locale,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
166 new DefaultArtifact(getCurrentMaster(), "TODO:hash"),
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
167 feedData,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
168 new AsyncCallback<Artifact>() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
169 public void onFailure(Throwable caught) {
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
170 GWT.log("Could not un-master artifact ("+getCurrentMaster()+"): " +
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
171 caught.getMessage());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
172 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
173 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
174 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
175 public void onSuccess(Artifact oldMaster) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
176 GWT.log("Successfully un-mastered artifact.");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
177 feedTellMaster(artifact);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
178 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
179 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
180 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
181 else {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
182 feedTellMaster(artifact);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
183 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
184 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
185 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
186
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
187 return layout;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
188 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
189
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
190
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
191 /** Disable the UI (becomes gray, inresponsive to user input). */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
192 public void disable() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
193 this.layout.setDisabled(true);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
194 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
195
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
196
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
197 /** DisDisable the UI (becomes ungray, responsive to user input). */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
198 public void enable() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
199 this.layout.setDisabled(false);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
200 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
201
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
202
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
203 /**
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
204 * Returns a double from the list that has the smallest distance to the
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
205 * given to value. In case of multiple values with the same difference,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
206 * the last one is taken.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
207 * @param in possible return values.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
208 * @param to the value to be as close to as possible.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
209 * @return value from in that is closest to to, -1 if none.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
210 */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
211 public static double closest(Double[] in, double to) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
212 if (in == null || in.length == 0) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
213 return -1;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
214 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
215 if (in[0] == to) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
216 return to;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
217 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
218 double minDiff = Math.abs(to - in[0]);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
219 double bestMatch = in[0];
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
220 for (int i = 1; i < in.length; i++) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
221 if (in[i] == to) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
222 return to;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
223 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
224 double diff = Math.abs(to - in[0]);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
225 if (diff < minDiff) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
226 minDiff = diff;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
227 bestMatch = in[i];
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
228 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
229 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
230 return bestMatch;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
231 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
232
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
233
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
234 /** Feed a single artifact with the km of the crosssection to display. */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
235 public void sendFeed(FacetRecord facetRecord, double kmD) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
236 Config config = Config.getInstance();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
237 final String locale = config.getLocale();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
238
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
239 Data[] feedData =
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
240 DefaultData.createSimpleStringDataArray("cross_section.km",
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
241 Double.valueOf(kmD).toString());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
242
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
243 disable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
244 feedService.feed(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
245 locale,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
246 new DefaultArtifact(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
247 facetRecord.getTheme().getArtifact(),
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
248 "TODO:hash"),
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
249 feedData,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
250 new AsyncCallback<Artifact>() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
251 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
252 public void onFailure(Throwable caught) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
253 GWT.log("Could not feed artifact " + caught.getMessage());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
254 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
255 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
256 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
257 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
258 public void onSuccess(Artifact artifact) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
259 GWT.log("Successfully fed");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
260 requestRedraw();
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
261 // TODO also feed the winfo/masterartifact? (for plot subtitle)
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
262 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
263 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
264 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
265 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
266
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
267
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
268 /**
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
269 * Create the handler for ChangeEvents on the Spinner in the
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
270 * facets that control km of cross section.
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
271 *
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
272 * @param feedService The FeedService to send (changed) data to.
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
273 * @param facetRecord The FacetRecord (~row in table) where this
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
274 * handler is added to (to a child, to be exact).
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
275 */
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
276 public final ChangedHandler createSpinnerHandler(
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
277 final FeedServiceAsync feedService,
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
278 final FacetRecord facetRecord)
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
279 {
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
280 Config config = Config.getInstance();
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
281 final String locale = config.getLocale();
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
282
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
283 ChangedHandler handler = new ChangedHandler()
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
284 {
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
285 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
286 public void onChanged(final ChangedEvent ce) {
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
287 if (ce.getValue() == null) {
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
288 return;
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
289 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
290
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
291 // Now, query the value with the kmService.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
292 Map<Integer, Double> map = new HashMap<Integer,Double>();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
293 final double selected_km =
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
294 Double.parseDouble(ce.getValue().toString());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
295
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
296 int _dbid = -1;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
297 try {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
298 _dbid = Integer.valueOf(facetRecord.getTheme()
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
299 .getCollectionItem()
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
300 .getData().get("cross_section.dbid"));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
301 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
302 catch (NumberFormatException nfe) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
303 GWT.log("Could not extract cross-section db id from data.");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
304 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
305 final int dbid = _dbid;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
306
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
307 map.put(dbid, Double.parseDouble(ce.getValue().toString()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
308
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
309 disable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
310
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
311 kmService.getCrossSectionKMs(locale, map, 2,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
312 new AsyncCallback<Map<Integer, Double[]>>() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
313 @Override
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
314 public void onFailure(Throwable caught) {
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
315 GWT.log("Could not get single km for "
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
316 + dbid + ": "+ caught.getMessage());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
317 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
318 updateCollection();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
319 updateGrid();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
320 enable();
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
321 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
322 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
323 public void onSuccess(Map<Integer, Double[]> obj) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
324 Double[] kms = obj.get(dbid);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
325 double closest =
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
326 CrossSectionChartThemePanel.closest(kms,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
327 selected_km);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
328 GWT.log("Got single km for " + dbid + ", it is "
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
329 + closest);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
330 SpinnerItem item = (SpinnerItem) ce.getItem();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
331 item.setValue(closest);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
332 sendFeed(facetRecord, closest);
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
333 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
334 });
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
335 }
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
336 };
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
337 return handler;
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
338 }
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
339
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
340
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
341 /**
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
342 * Get the chosen km for given cross-section.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
343 */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
344 final public double getKmForCrossSectionIdx(final int index) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
345 double km = 0d;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
346 int collIdx = 0;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
347 while (km == 0d) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
348 CollectionItem item = collection.getItem(collIdx++);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
349 if (item == null) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
350 break;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
351 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
352 if (item.getData() == null) continue;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
353 String d = item.getData().get("cross_section" + index + ".km");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
354 if (d == null) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
355 continue;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
356 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
357 km = Double.valueOf(d);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
358 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
359 return km;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
360 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
361
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
362
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
363 /**
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
364 * Create a "kilometer spinner" for CrossSection Facets.
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
365 * @param facetRecord The respective Facet/Theme.
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
366 * @return label, intialized SpinnerItem.
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
367 */
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
368 public SpinnerItem createSpinnerItem(FacetRecord facetRecord) {
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
369 SpinnerItem spinnerItem = new SpinnerItem();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
370 spinnerItem.setShowTitle(false);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
371 spinnerItem.setTitle("Waterlevel-Spinner");
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
372 spinnerItem.setWidth(45);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
373 spinnerItem.setDefaultValue(facetRecord.getTheme()
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
374 .getCollectionItem()
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
375 .getData().get("cross_section.km"));
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
376
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
377 // TODO actually use crosssectionkmservice with
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
378 // min/max-extension
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
379 spinnerItem.setMin(0);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
380 spinnerItem.setMax(1000);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
381 spinnerItem.setStep(5f);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
382 spinnerItem.setChangeOnKeypress(true);
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
383 return spinnerItem;
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
384 }
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
385
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
386
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
387 /**
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
388 * Create and configure the Grid to display.
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
389 * @return ListGrid with Themes and related controls inside.
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
390 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
391 @Override
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
392 protected ListGrid createGrid() {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
393 ListGrid list = new ListGrid() {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
394 @Override
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
395 protected Canvas createRecordComponent(
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
396 final ListGridRecord record,
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
397 Integer colNum)
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
398 {
861
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
399 // Only cross_section Facets display an action widget.
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
400 final FacetRecord facetRecord = (FacetRecord) record;
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
401 if (!facetRecord.getTheme().getFacet().equals(
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
402 "cross_section"))
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
403 {
861
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
404 return null;
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
405 }
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
406
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
407 String fieldName = this.getFieldName(colNum);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
408
888
d6b88f8f88dd Fix issue flys/issue311 (i18n crossection).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 861
diff changeset
409 if (fieldName.equals(GRID_FIELD_ACTIONS)) {
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
410 HLayout recordCanvas = new HLayout(3);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
411 recordCanvas.setHeight(22);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
412 recordCanvas.setAlign(Alignment.CENTER);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
413 // TODO Refactor in createSpinner(data, artifact)
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
414 SpinnerItem spinnerItem = createSpinnerItem(facetRecord);
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
415 spinnerItem.addChangedHandler(
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
416 createSpinnerHandler(feedService, facetRecord));
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
417
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
418 DynamicForm formWrap = new DynamicForm();
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
419 formWrap.setFields(spinnerItem);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
420 formWrap.setTitlePrefix("");
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
421 formWrap.setTitleSuffix("");
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
422 recordCanvas.addMember(formWrap);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
423 return recordCanvas;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
424 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
425 else {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
426 return null;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
427 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
428 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
429 };
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
430 list.setCanResizeFields(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
431 list.setShowRecordComponents(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
432 list.setShowRecordComponentsByCell(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
433 list.setShowAllRecords(true);
1378
ebba8a8618e6 Fix flys/issue306 (CrossSections: Remove table header context menu).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 891
diff changeset
434 list.setShowHeaderContextMenu(false);
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
435 return list;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
436 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
437
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
438
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
439 /**
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
440 * Initializes the components (columns) of the theme grid.
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
441 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
442 @Override
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
443 protected void initGrid() {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
444 list.setCanEdit(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
445 list.setCanSort(false);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
446 list.setShowRecordComponents(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
447 list.setShowRecordComponentsByCell(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
448 list.setShowHeader(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
449 list.setWidth100();
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
450 list.setHeight100();
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
451
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
452 list.addEditCompleteHandler(this);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
453
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
454 ListGridField active = new ListGridField(GRID_FIELD_ACTIVE, " ", 20);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
455 active.setType(ListGridFieldType.BOOLEAN);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
456
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
457 ListGridField name = new ListGridField(
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
458 GRID_FIELD_NAME, MSG.chart_themepanel_header_themes());
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
459 name.setType(ListGridFieldType.TEXT);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
460
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
461 ListGridField actions = new ListGridField(GRID_FIELD_ACTIONS,
891
f6c14ffdfd07 Rest for fix for flys/issue311 .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 890
diff changeset
462 MSG.chart_themepanel_header_actions(), 50);
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
463
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
464 list.setFields(active, name, actions);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
465 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
466
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
467
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
468 /** Get Current Cross-section Masters uuid. */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
469 public String getCurrentMaster() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
470 return currentMasterUUID;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
471 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
472
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
473
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
474 /** Set Current Cross-section Masters uuid. */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
475 public void setCurrentMaster(String currentMasterUuid) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
476 this.currentMasterUUID = currentMasterUuid;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
477 }
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
478 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
479 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org