annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/RiverInfoPanel.java @ 4253:a1bc5b8cff0f

Refactor GaugePanel to create it's own SectionStackSection The GaugePanel constructor now creates a SectionStackSection instead of using a provided one. Improve the rendering of the GaugePanel by having access to the SmartGWT wrapper (WidgetCanvas) object for the GWT Tree (GaugeTree) directly. Add methods to close and open the section. Also add a getter for the section.
author Björn Ricks <bjoern.ricks@intevation.de>
date Thu, 25 Oct 2012 13:52:58 +0200
parents 1fa244f70ad5
children e70ff0a600a3
rev   line source
4202
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
2
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
3 import java.util.Iterator;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
4
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
5 import com.google.gwt.core.client.GWT;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
6 import com.google.gwt.i18n.client.NumberFormat;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
7 import com.google.gwt.user.client.ui.Anchor;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
8 import com.google.gwt.user.client.ui.HorizontalPanel;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
9 import com.google.gwt.user.client.ui.Label;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
10 import com.google.gwt.user.client.ui.Widget;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
11
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
12 import de.intevation.flys.client.client.FLYSConstants;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
13
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
14 import de.intevation.flys.client.shared.model.RiverInfo;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
15
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
16 /**
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
17 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
18 */
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
19 public class RiverInfoPanel extends HorizontalPanel {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
20
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
21 /**
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
22 * Panel to display information about a river
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
23 */
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
24
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
25 /** The message class that provides i18n strings.*/
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
26 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
27
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
28 public final static int HEIGHT = 30;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
29 public final static int BORDER_WIDTH = 3;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
30 public final static int PADDING = 8;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
31 public final static int MARGIN = 10;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
32
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
33 public RiverInfoPanel(RiverInfo riverinfo) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
34 setStyleName("riverinfopanel");
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
35 setHeight("" + HEIGHT + "px");
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
36 setVerticalAlignment(ALIGN_MIDDLE);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
37
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
38 setRiverInfo(riverinfo);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
39 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
40
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
41 public void setRiverInfo(RiverInfo riverinfo) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
42 GWT.log("RiverInfoPanel - setRiverInfo");
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
43
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
44 NumberFormat nf = NumberFormat.getDecimalFormat();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
45
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
46 removeAllLabels();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
47
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
48 addLabel(riverinfo.getName(), false);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
49
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
50 String kmtext = "";
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
51 Double start = riverinfo.getKmStart();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
52 Double end = riverinfo.getKmEnd();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
53
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
54 if (!riverinfo.isKmUp()) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
55 Double tmp = end;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
56 end = start;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
57 start = tmp;
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
58 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
59 if (end != null) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
60 kmtext += nf.format(end);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
61 kmtext += " - ";
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
62 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
63 if (start != null) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
64 kmtext += nf.format(start);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
65 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
66 kmtext += " km";
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
67
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
68 addLabel(kmtext, false);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
69
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
70 String qtext = "";
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
71 Double qmin = riverinfo.getMinQ();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
72 Double qmax = riverinfo.getMaxQ();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
73 if (qmin != null) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
74 qtext += nf.format(qmin);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
75 qtext += " " + MSG.gauge_q_unit();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
76 qtext += " - ";
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
77 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
78 if (qmax != null) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
79 qtext += nf.format(qmax);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
80 qtext += " " + MSG.gauge_q_unit();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
81 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
82
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
83 addLabel(qtext, false);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
84
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
85 Long number = riverinfo.getOfficialNumber();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
86 String url = number != null ?
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
87 MSG.gauge_river_url() + number :
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
88 MSG.gauge_river_url();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
89 Anchor anchor = new Anchor(MSG.gauge_river_info_link(), url, "_blank");
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
90 add(anchor);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
91 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
92
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
93 public static int getStaticHeight() {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
94 return RiverInfoPanel.HEIGHT +
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
95 (2 * RiverInfoPanel.BORDER_WIDTH) +
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
96 (2 * RiverInfoPanel.PADDING) +
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
97 (2 * RiverInfoPanel.MARGIN);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
98 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
99
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
100 private void addLabel(String text, boolean wordwrap) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
101 Label label = new Label(text, wordwrap);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
102 add(label);
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
103 setCellHeight(label, "" + HEIGHT + "px");
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
104 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
105
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
106 private void removeAllLabels() {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
107 GWT.log("RiverInfoPanel - removeAllLabels");
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
108
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
109 Iterator<Widget> it = this.iterator();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
110 while(it.hasNext()) {
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
111 it.next();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
112 it.remove();
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
113 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
114 /* for (Widget wid: this) { */
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
115 /* this.remove(wid); */
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
116 /* } */
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
117 }
1fa244f70ad5 Move RiverInfoPanel to its own java file in refactor it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
118 }

http://dive4elements.wald.intevation.org