annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/CrossSectionChartThemePanel.java @ 4568:bbd82bd8e541

flys-client: Cosmetics and warnings.
author Christian Lins <christian.lins@intevation.de>
date Mon, 19 Nov 2012 00:07:53 +0100
parents 3b4cef59836a
children
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
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import com.google.gwt.core.client.GWT;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
4 import com.google.gwt.user.client.rpc.AsyncCallback;
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
5
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
6 import com.smartgwt.client.types.ListGridFieldType;
2939
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
7 import com.smartgwt.client.util.SC;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8 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
9 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
10 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
11 import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
12 import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
2939
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
13 import com.smartgwt.client.widgets.grid.ListGrid;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
14 import com.smartgwt.client.widgets.grid.ListGridField;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
15 import com.smartgwt.client.widgets.grid.ListGridRecord;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
16 import com.smartgwt.client.widgets.layout.VLayout;
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
17 import com.smartgwt.client.widgets.menu.Menu;
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
18 import com.smartgwt.client.widgets.menu.MenuItem;
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
19 import com.smartgwt.client.widgets.menu.events.ClickHandler;
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
20 import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
21
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 import de.intevation.flys.client.client.Config;
2939
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
23 import de.intevation.flys.client.client.services.CrossSectionKMServiceAsync;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
24 import de.intevation.flys.client.client.services.LoadArtifactService;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
25 import de.intevation.flys.client.client.services.LoadArtifactServiceAsync;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
26 import de.intevation.flys.client.client.ui.CollectionView;
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
27 import de.intevation.flys.client.client.widgets.KMSpinner;
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
28 import de.intevation.flys.client.client.widgets.KMSpinnerChangeListener;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29 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
30 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
31 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
32 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
33 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
34 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
35 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
36 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
37
2939
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
38 import java.util.ArrayList;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
39 import java.util.HashMap;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
40 import java.util.HashSet;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
41 import java.util.LinkedHashMap;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
42 import java.util.List;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2937
diff changeset
43 import java.util.Map;
1472
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
44
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
45
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 /**
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 * ThemePanel much like ChartThemePanel, but shows an "Actions" column,
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
48 * needed for interaction in the CrossSection Charts and a selector to
2481
37438d7228b4 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2464
diff changeset
49 * declare which cross section profile is "master" (waterlevels refer to the
37438d7228b4 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2464
diff changeset
50 * chosen kilometer of that cross section profile).
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
51 * Also can show 'area creation' context menus.
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
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
54 extends ChartThemePanel
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
55 implements KMSpinnerChangeListener
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
56 {
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
57 /** Artifact Clone/Creation service. */
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
58 protected LoadArtifactServiceAsync loadService =
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
59 GWT.create(LoadArtifactService.class);
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
61 /** 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
62 CrossSectionKMServiceAsync kmService = GWT.create(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
63 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
64
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
65 /** UUID of the current "master" cross section. */
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
66 protected String currentCSMasterUUID;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
67
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
68 /** 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
69 protected VLayout layout;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
70
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
71 /** Data item name for CrossSections selected km. */
1476
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
72 protected static String CS_KM = "cross_section.km";
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
73
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
74 /** Data item name for CrossSections selected km. */
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
75 protected static String CS_IS_MASTER = "cross_section.master?";
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
76
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
77 /** List of cross-section themes through which is moved through synchronously. */
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
78 protected HashSet synchronCrossSectionThemes = new HashSet();
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
79
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
80 /** Data for master artifact combobox.*/
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
81 protected LinkedHashMap<String, String> masters;
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
82
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
83 /** Combobox for master artifacts.*/
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
84 protected SelectItem masterCb;
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
85
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
86
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 /**
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 * Trivial constructor.
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90 public CrossSectionChartThemePanel(
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
91 OutputMode mode,
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
92 CollectionView view)
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93 {
1555
c057ef91b268 Refactored Collection reference out of Panels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1533
diff changeset
94 super(mode, view);
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
95 }
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
96
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
97
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
98 /** Create DefaultArtifact. */
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
99 public static DefaultArtifact artifactReference(String uuid) {
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
100 return new DefaultArtifact(uuid, "TODO:hash");
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
101 }
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
102
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
103
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
104 /** Access data of collection item of theme. */
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
105 public static String dataOf(Theme theme, String dataItemName) {
1578
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
106 if (theme != null && theme.getCollectionItem() != null
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
107 && theme.getCollectionItem().getData() != null
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
108 ) {
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
109 return theme.getCollectionItem().getData().get(dataItemName);
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
110 }
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
111
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
112 return null;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 /**
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
117 * 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
118 * @param artifact uuid of an artifact.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
119 */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
120 public void feedTellMaster(final String artifact) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
121 Data[] feedData = DefaultData.createSimpleStringDataArray(
1476
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
122 CS_IS_MASTER, "1");
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
123
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
124 feedService.feed(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
125 Config.getInstance().getLocale(),
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
126 artifactReference(artifact),
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
127 feedData,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
128 new AsyncCallback<Artifact>() {
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
129 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
130 public void onFailure(Throwable caught) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
131 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
132 + ") with master marker: " + caught.getMessage());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
133 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
134 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
135 }
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
136 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
137 public void onSuccess(Artifact artifact) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
138 GWT.log("Successfully injected master mark to " + artifact);
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
139 setCurrentCSMaster(artifact.getUuid());
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
140 requestRedraw();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
141 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
142 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
143 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
144 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
145
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
146
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
147 /**
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
148 * Sets currentCSMasterUUID.
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
149 */
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
150 public String findCurrentCSMaster() {
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
151 ThemeList themeList = getThemeList();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
152 int count = getThemeList().getThemeCount();
1445
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
153 String firstCSUuid = null;
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
154
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
155 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
156 Theme theme = themeList.getThemeAt(i);
1476
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
157 String value = dataOf(theme, CS_IS_MASTER);
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
158
1445
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
159 if (value != null) {
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
160 if (firstCSUuid == null) {
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
161 firstCSUuid = theme.getArtifact();
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
162 }
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
163 if (!value.equals("0")) {
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
164 setCurrentCSMaster(theme.getArtifact());
1472
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
165 GWT.log("found a master: " + currentCSMasterUUID
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
166 + "/" + theme.getDescription());
1445
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
167 return theme.getDescription();
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
168 }
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
169 }
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
170 }
1445
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
171 // There is none selected. Take the first one.
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
172 if (firstCSUuid != null) {
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
173 setCurrentCSMaster(firstCSUuid);
1445
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
174 feedTellMaster(firstCSUuid);
df7ebcbff984 Bugfixing and feature-adding for cross-sections/areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1444
diff changeset
175 }
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
176 return null;
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
177 }
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
178
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
179
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
180 /**
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
181 * 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
182 */
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
183 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
184 protected VLayout createLayout() {
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
185 layout = super.createLayout();
1436
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 // Create "set master" combobox.
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
188 masterCb = new SelectItem();
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
189
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
190 masterCb.setTitle(MSG.chart_themepanel_set_master());
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
191 masterCb.setType("comboBox");
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
192 masters = getThemeList().toMapArtifactUUIDDescription("cross_section");
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
193 masterCb.setValueMap(masters);
1436
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 final DynamicForm form = new DynamicForm();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
196 form.setWidth(200);
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
197 form.setFields(masterCb);
2462
d45059aa8507 i18n and moved reference selectbox for cross section master to top.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2453
diff changeset
198 layout.addMember(form, 0);
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
199
1438
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
200 Config config = Config.getInstance();
432180235caf Minor refactoring and fix initial settings when creating ui.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1436
diff changeset
201 final String locale = config.getLocale();
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
202 findCurrentCSMaster();
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
203 masterCb.setValue(getCurrentCSMaster());
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
204
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
205 // 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
206 // new master.
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
207 masterCb.addChangeHandler(new ChangeHandler() {
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
208 @Override
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2544
diff changeset
209 public void onChange(ChangeEvent event) {
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
210 String selectedItem = (String) event.getValue();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
211 final String artifact = selectedItem;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
212
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
213 disable();
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 // Tell current master that he is not master anymore.
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
216 if (getCurrentCSMaster() != null) {
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
217 Data[] feedData = DefaultData.createSimpleStringDataArray(
1476
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
218 CS_IS_MASTER, "0");
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
219 feedService.feed(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
220 locale,
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
221 artifactReference(getCurrentCSMaster()),
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
222 feedData,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
223 new AsyncCallback<Artifact>() {
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
224 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
225 public void onFailure(Throwable caught) {
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
226 GWT.log("Could not un-master artifact ("
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
227 + getCurrentCSMaster() + "): " +
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
228 caught.getMessage());
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
229 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
230 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
231 }
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
232 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
233 public void onSuccess(Artifact oldMaster) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
234 GWT.log("Successfully un-mastered artifact.");
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
235 feedTellMaster(artifact);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
236 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
237 });
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 else {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
240 feedTellMaster(artifact);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
241 }
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2544
diff changeset
242 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
243 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
244
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
245 return layout;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
246 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
247
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
248
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
249 /** Disable the UI (becomes gray, inresponsive to user input). */
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
250 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
251 public void disable() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
252 this.layout.setDisabled(true);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
253 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
254
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
255
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
256 /** DisDisable the UI (becomes ungray, responsive to user input). */
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
257 @Override
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
258 public void enable() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
259 this.layout.setDisabled(false);
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
260 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
261
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
262
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 * 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
265 * 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
266 * the last one is taken.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
267 * @param in possible return values.
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
268 * @param to the value to be as close to as possible.
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
269 * @param up if true, prefer numerically higher values in case of two
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
270 * values with equal distance to \param to.
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
271 * @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
272 */
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
273 public static double closest(Double[] in, double to, boolean up) {
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
274 if (in == null || in.length == 0) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
275 return -1;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
276 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
277 if (in[0] == to) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
278 return to;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
279 }
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
280 for (int i = 0; i < in.length; i++) {
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
281 GWT.log ("Close? " + in[i]);
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
282 }
2937
a30d77d86386 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2934
diff changeset
283
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
284 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
285 double bestMatch = in[0];
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
286 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
287 if (in[i] == to) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
288 return to;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
289 }
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
290 if ((in[i] < to && up)
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
291 || (in[i] > to && !up)) {
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
292 continue;
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
293 }
2484
6f30bbd98618 Small fix for retrieving closest km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2482
diff changeset
294 double diff = Math.abs(to - in[i]);
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
295 if (diff <= minDiff) {
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
296 minDiff = diff;
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
297 bestMatch = in[i];
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
298 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
299 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
300 return bestMatch;
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
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
303
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
304 /**
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
305 * Feed a single artifact with the km of the crosssection to display.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
306 * If its the selected master, also feed the collectionmaster.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
307 *
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
308 * @param artifacts List of artifacts to feed.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
309 * @param kmD The km to set.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
310 */
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
311 public void sendFeed(final List<Artifact> artifacts, final double kmD) {
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
312 Config config = Config.getInstance();
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
313 final String locale = config.getLocale();
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
314
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
315 Data[] feedData =
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
316 DefaultData.createSimpleStringDataArray(CS_KM,
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
317 Double.valueOf(kmD).toString());
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
318
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
319 disable();
2518
b3bf9e5ce9e6 i18n for datacage/computed discharge curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2514
diff changeset
320 // TODO
b3bf9e5ce9e6 i18n for datacage/computed discharge curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2514
diff changeset
321 // The ones who do not have data for this km should not show line!
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
322 feedService.feedMany(
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
323 locale,
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
324 artifacts,
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
325 feedData,
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
326 new AsyncCallback<List<Artifact>>() {
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
327 @Override
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
328 public void onFailure(Throwable caught) {
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
329 GWT.log("Could not feed many artifacts " + caught.getMessage());
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
330 SC.warn(MSG.getString(caught.getMessage()));
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
331 enable();
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
332 }
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
333 @Override
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
334 public void onSuccess(List<Artifact> artifact) {
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
335 GWT.log("Successfully fed many with km");
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
336 requestRedraw();
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
337 enable();
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
338 }
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
339 });
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
340 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
341
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
342
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
343 /**
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
344 * Feed a single artifact with the km of the crosssection to display.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
345 * If its the selected master, also feed the collectionmaster.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
346 * @param artUUID The UUID of the artifact to feed.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
347 * @param kmD The km to set.
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
348 */
1472
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
349 public void sendFeed(final String artUUID, final double kmD) {
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
350 Config config = Config.getInstance();
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
351 final String locale = config.getLocale();
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
352
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
353 Data[] feedData =
1476
edf18a9dfd8b Uncommented some code paths to avoid unwanted side effects, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1475
diff changeset
354 DefaultData.createSimpleStringDataArray(CS_KM,
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
355 Double.valueOf(kmD).toString());
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 disable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
358 feedService.feed(
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
359 locale,
1475
fb2fefe0325f Improvements in CrossSectionChartThemePanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1472
diff changeset
360 artifactReference(artUUID),
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
361 feedData,
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
362 new AsyncCallback<Artifact>() {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
363 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
364 public void onFailure(Throwable caught) {
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
365 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
366 SC.warn(MSG.getString(caught.getMessage()));
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
367 enable();
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
368 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
369 @Override
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
370 public void onSuccess(Artifact artifact) {
1472
a2b0b2af529f Tell master-artifact of collection when cross-section-master changed kilometer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1470
diff changeset
371 GWT.log("Successfully fed with km");
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
372 requestRedraw();
1496
a882297ce63d Changed CrossSection spinner-stepsize, adjusted km- and mastersetting.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1476
diff changeset
373 enable();
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
374 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
375 });
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
376 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
377
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
378
2443
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
379 /** Remove the themes, also from the master (reference) select box. */
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
380 @Override
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
381 protected void removeThemes(final ListGridRecord[] records) {
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
382 // TODO take care of what happens if that was the last
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
383 // cross section and/or the cross section currently selected as master.
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
384 for (ListGridRecord record: records) {
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
385 FacetRecord facet = (FacetRecord) record;
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
386 Theme theme = facet.getTheme();
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
387 masters.remove(theme.getArtifact());
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
388 }
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
389 masterCb.setValueMap(masters);
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
390 super.removeThemes(records);
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
391 }
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
392
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
393
2482
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
394 /**
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
395 * Callback for when a value has been accepted in the km-spinner
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
396 * of a Cross-Section Profile theme.
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
397 * @param item The SpinnerItem which was manipulated.
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
398 * @param enteredKm The double-parsed value that has been entered.
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
399 * @param facetRecord The underlying datastores record.
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
400 * @param up If true, numerically higher values are preferred if
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
401 * two values in \param in are in the same distance to
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
402 * \param to.
2482
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
403 */
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
404 @Override
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
405 public void spinnerValueEntered(KMSpinner spinner, final double enteredKm, final FacetRecord facetRecord, final boolean up) {
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
406 disable();
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
407 Config config = Config.getInstance();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
408 final String locale = config.getLocale();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
409
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
410 Map<Integer, Double> map = new HashMap<Integer,Double>();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
411 int _dbid = -1;
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
412 try {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
413 _dbid = Integer.valueOf(facetRecord.getTheme()
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
414 .getCollectionItem()
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
415 .getData().get("cross_section.dbid"));
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
416 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
417 catch (NumberFormatException nfe) {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
418 GWT.log("Could not extract cross-section db id from data.");
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
419 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
420 final int dbid = _dbid;
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
421
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
422 map.put(dbid, enteredKm);
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
423
2482
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
424 // Query the available cross section measurements.
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
425 kmService.getCrossSectionKMs(locale, map, 2,
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
426 new AsyncCallback<Map<Integer, Double[]>>() {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
427 @Override
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
428 public void onFailure(Throwable caught) {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
429 GWT.log("Could not get single km for "
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
430 + dbid + ": "+ caught.getMessage());
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
431 SC.warn(MSG.getString(caught.getMessage()));
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
432 updateCollection();
1573
0fbbcec35462 Improved spinner-behaviour in cross section km control.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1572
diff changeset
433 //updateGrid();
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
434 enable();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
435 }
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
436
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
437 @Override
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
438 public void onSuccess(Map<Integer, Double[]> obj) {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
439 Double[] kms = obj.get(dbid);
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
440 double closest =
2934
a5ebe2e2c772 issue457
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2930
diff changeset
441 CrossSectionChartThemePanel.closest(kms, enteredKm, up);
2484
6f30bbd98618 Small fix for retrieving closest km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2482
diff changeset
442 GWT.log("Got single km close to " + enteredKm + " for " + dbid + ", it is "
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
443 + closest);
1574
465f72f68cee Fix strange javascript side effects.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1573
diff changeset
444
465f72f68cee Fix strange javascript side effects.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1573
diff changeset
445 // Do not set value, as it will trigger strange
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
446 // "javascript" bugs. /*item.setValue(closest);*/
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
447 if (synchronCrossSectionThemes.contains (themeHash
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
448 (facetRecord.getTheme()))) {
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
449 // Move all other synchrons
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
450 ThemeList themes = getThemeList();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
451 int nThemes = themes.getThemeCount();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
452 List<Artifact> artifacts = new ArrayList<Artifact>();
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
453 for (int i = 0; i < nThemes; i++) {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
454 final Theme theme = themes.getThemeAt(i+1);
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
455 if (theme.getFacet().equals("cross_section") &&
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
456 theme.getActive() == 1 &&
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
457 synchronCrossSectionThemes.contains(themeHash(theme))
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
458 ) {
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
459 artifacts.add(artifactReference(theme.getArtifact()));
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
460 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
461 }
1574
465f72f68cee Fix strange javascript side effects.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1573
diff changeset
462 sendFeed(artifacts, closest);
1572
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
463 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
464 else {
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
465 sendFeed(facetRecord.getTheme().getArtifact(),
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
466 closest);
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
467 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
468 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
469 });
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
470 }
60f8edc7a6f0 Slightly improved Spinner- behaviour in CrossSectionControl, but regress in other case.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1555
diff changeset
471
1436
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 /**
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
474 * 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
475 * @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
476 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
477 @Override
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
478 protected ListGrid createGrid() {
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
479 final CrossSectionChartThemePanel parent = this;
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
480
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
481 ListGrid list = new ListGrid() {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
482 @Override
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
483 protected Canvas createRecordComponent(
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
484 final ListGridRecord record,
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
485 Integer colNum)
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
486 {
861
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
487 // 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
488 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
489 if (!facetRecord.getTheme().getFacet().equals(
1379
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
490 "cross_section"))
546f7f890ffa Cosmetics, refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1378
diff changeset
491 {
861
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
492 return null;
65204f30877b Display Action Widget only for cross_section theme/facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 858
diff changeset
493 }
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
494
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
495 String fieldName = this.getFieldName(colNum);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
496
888
d6b88f8f88dd Fix issue flys/issue311 (i18n crossection).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 861
diff changeset
497 if (fieldName.equals(GRID_FIELD_ACTIONS)) {
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
498 double currentValue =
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
499 Double.valueOf(facetRecord.getTheme().getCollectionItem().getData().get(CS_KM));
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
500 KMSpinner kmSpinner = new KMSpinner(currentValue, facetRecord);
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
501 kmSpinner.addChangeListener(parent);
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
502 return kmSpinner;
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
503 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
504 else {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
505 return null;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
506 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
507 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
508 };
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
509 list.setCanResizeFields(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
510 list.setShowRecordComponents(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
511 list.setShowRecordComponentsByCell(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
512 list.setShowAllRecords(true);
1378
ebba8a8618e6 Fix flys/issue306 (CrossSections: Remove table header context menu).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 891
diff changeset
513 list.setShowHeaderContextMenu(false);
2445
1de15a7bfc59 Removed the scrollbar gap in the theme panels.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2443
diff changeset
514 list.setLeaveScrollbarGap(false);
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
515 return list;
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
516 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
517
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
518
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
519 /**
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
520 * 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
521 */
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
522 @Override
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
523 protected void initGrid() {
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
524 list.setCanEdit(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
525 list.setCanSort(false);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
526 list.setShowRecordComponents(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
527 list.setShowRecordComponentsByCell(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
528 list.setShowHeader(true);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
529 list.setWidth100();
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
530 list.setHeight100();
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
531
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
532 list.addEditCompleteHandler(this);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
533
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
534 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
535 active.setType(ListGridFieldType.BOOLEAN);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
536
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
537 ListGridField name = new ListGridField(
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
538 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
539 name.setType(ListGridFieldType.TEXT);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
540
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
541 ListGridField actions = new ListGridField(GRID_FIELD_ACTIONS,
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
542 MSG.chart_themepanel_header_actions(), 100);
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
543
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
544 list.setFields(active, name, actions);
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
545 }
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
546
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
547
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
548 /** Get Current Cross-section Masters uuid. */
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
549 public String getCurrentCSMaster() {
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
550 return currentCSMasterUUID;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
551 }
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
552
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
553
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
554 /** Set Current Cross-section Masters uuid. */
1470
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
555 public void setCurrentCSMaster(String currentMasterUuid) {
eef55d18f424 Cosmetics, refactoring, renamed Master to CSMaster to avoid confusion.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1458
diff changeset
556 this.currentCSMasterUUID = currentMasterUuid;
1436
29fc2d1dfe9b Client side of interactive cross section diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
557 }
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
558
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
559
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
560 /** Returns name of cross section area facets. */
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
561 @Override
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
562 protected String getAreaFacetName() {
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
563 return "cross_section.area";
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
564 }
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
565
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
566
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
567 /**
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
568 * Return true if two themes are canditates for an area being
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
569 * rendered between them.
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
570 * TODO join with canArea, generalize to allow easier modification
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
571 * in subclasses.
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
572 */
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
573 @Override
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
574 protected boolean areAreaCompatible(Theme a, Theme b) {
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
575 if (a.equals(b)) {
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
576 return false;
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
577 }
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
578 return (a.getFacet().equals("cross_section")
2930
e8eca6eeeec0 Show area menu also for newer manual wsp line facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
579 || a.getFacet().endsWith("line"))
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
580 && (b.getFacet().equals("cross_section")
2930
e8eca6eeeec0 Show area menu also for newer manual wsp line facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
581 || b.getFacet().endsWith("line"));
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
582 }
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
583
1452
fa63366ba115 Improved area creation GUI.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1449
diff changeset
584
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
585 /**
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
586 * True if context menu should contain 'create area' submenu on
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
587 * this theme.
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
588 */
3717
3b4cef59836a KMSpinner refactoring
Christian Lins <christian.lins@intevation.de>
parents: 2939
diff changeset
589 @Override
1457
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
590 protected boolean canArea(Theme a) {
3d9f81c3f00d Refactored to use existing code.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1452
diff changeset
591 return a.getFacet().equals("cross_section")
2930
e8eca6eeeec0 Show area menu also for newer manual wsp line facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
592 || a.getFacet().equals("cross_section_water_line")
e8eca6eeeec0 Show area menu also for newer manual wsp line facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2905
diff changeset
593 || a.getFacet().endsWith("line");
1444
bdac8a72f7e6 Area creation UI update.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1438
diff changeset
594 }
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
595
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
596
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
597 protected String themeHash(Theme theme) {
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
598 return theme.getArtifact() + theme.getFacet() + theme.getIndex();
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
599 }
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
600
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
601
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
602 /**
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
603 * Include synchron navigation item.
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
604 */
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
605 @Override
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
606 protected Menu getSingleContextMenu(final ListGridRecord[] records) {
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
607 Menu contextMenu = super.getSingleContextMenu(records);
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
608
2453
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
609 Theme facetTheme = ((FacetRecord)records[0]).getTheme();
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
610 String item = facetTheme.getFacet();
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
611
2482
cef4c624c68c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2481
diff changeset
612 if (item.equals("cross_section")) {
2453
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
613 // Synchron checking.
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
614 MenuItem synchronNavigationMenuItem = new MenuItem();
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
615 final String themeHash = themeHash(facetTheme);
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
616 if (synchronCrossSectionThemes.contains(themeHash)) {
2462
d45059aa8507 i18n and moved reference selectbox for cross section master to top.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2453
diff changeset
617 synchronNavigationMenuItem.setTitle(MSG.chart_themepanel_asynchron());
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
618 synchronNavigationMenuItem.addClickHandler(new ClickHandler() {
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
619 @Override
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
620 public void onClick(MenuItemClickEvent evt) {
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
621 synchronCrossSectionThemes.remove (themeHash);
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
622 }
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
623 });
2453
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
624 }
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
625 else {
2462
d45059aa8507 i18n and moved reference selectbox for cross section master to top.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2453
diff changeset
626 synchronNavigationMenuItem.setTitle(MSG.chart_themepanel_synchron());
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
627 synchronNavigationMenuItem.addClickHandler(new ClickHandler() {
4568
bbd82bd8e541 flys-client: Cosmetics and warnings.
Christian Lins <christian.lins@intevation.de>
parents: 3717
diff changeset
628 @Override
2463
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
629 public void onClick(MenuItemClickEvent evt) {
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
630 synchronCrossSectionThemes.add (themeHash);
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
631 }
0eeceffd50e3 Make synchron navigation of CrossSections a per-theme option, not global one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2462
diff changeset
632 });
2453
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
633 }
ec120dc6279b Issue 616.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2445
diff changeset
634 contextMenu.addItem(synchronNavigationMenuItem);
1519
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
635 }
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
636
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
637 return contextMenu;
a6f6c61b18be Implemented synchronous navigation through cross section profiles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1496
diff changeset
638 }
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
639
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
640
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
641 /**
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
642 * This method is used to clear the current theme grid and add new updated
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
643 * data.
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
644 */
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
645 @Override
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
646 protected void updateGrid() {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
647 GWT.log("CrossSectionChartThemePanel.updateGrid");
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
648
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
649 ListGridRecord[] selected = list.getSelectedRecords();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
650
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
651 clearGrid();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
652
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
653 ThemeList themeList = getThemeList();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
654
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
655 if (themeList == null) {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
656 GWT.log("ERROR: No theme list.");
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
657 return;
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
658 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
659
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
660 int count = themeList.getThemeCount();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
661
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
662 for (int i = 1; i <= count; i++) {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
663 Theme theme = themeList.getThemeAt(i);
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
664
1578
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
665 if (theme == null) {
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
666 continue;
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
667 }
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
668
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
669 if (theme.getFacet().equals("empty.facet")) {
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
670 theme.setVisible(0);
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
671 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
672
1578
df11c4c8c578 Avoid certain npes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1574
diff changeset
673 if (theme.getVisible() == 0) {
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
674 continue;
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
675 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
676
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
677 if (theme.getFacet().equals("cross_section")) {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
678 addToReferences(theme);
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
679 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
680
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
681 FacetRecord newRecord = createRecord(theme);
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
682 addFacetRecord(newRecord);
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
683
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
684 String newArtifact = theme.getArtifact();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
685 String newFacet = theme.getFacet();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
686 int newIndex = theme.getIndex();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
687
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
688 for (ListGridRecord r: selected) {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
689 FacetRecord sel = (FacetRecord) r;
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
690 Theme oldTheme = sel.getTheme();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
691
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
692 if (oldTheme.getArtifact().equals(newArtifact)
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
693 && oldTheme.getFacet().equals(newFacet)
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
694 && oldTheme.getIndex() == newIndex) {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
695 list.selectRecord(newRecord);
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
696 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
697 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
698 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
699
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
700 fireOutputParameterChanged();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
701
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
702 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
703
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
704
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
705 /**
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
706 * Adds a cross section theme to the master artifacts combobox and finds
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
707 * a new master if necessary.
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
708 *
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
709 * @param theme The cross section theme.
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
710 */
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
711 protected void addToReferences(Theme theme) {
2443
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
712 if (theme.getVisible() != 0) {
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
713 masters.put(theme.getArtifact(), theme.getDescription());
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
714 masterCb.setValueMap(masters);
993871f8e2f2 Partial fix flys/issue624 (removing cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1588
diff changeset
715 }
1533
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
716 findCurrentCSMaster();
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
717 if (masterCb.getSelectedRecord() == null) {
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
718 masterCb.setValue(getCurrentCSMaster());
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
719 }
7fcec57c2f2c Add cross sections loaded from datacage to the master artifacts list.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1519
diff changeset
720 }
858
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
721 }
9f07f67f60a5 Subclassed ChartThemePanel, trigger redraws of Chart when interaction with
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
722 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org