comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/wq/ClickableWTable.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-client/src/main/java/org/dive4elements/river/client/client/ui/wq/ClickableWTable.java@821a02bbfb4e
children 172338b1407f
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.client.client.ui.wq;
2
3 import com.google.gwt.core.client.GWT;
4 import com.google.gwt.i18n.client.NumberFormat;
5 import com.smartgwt.client.data.Record;
6 import com.smartgwt.client.types.ListGridFieldType;
7 import com.smartgwt.client.types.SelectionStyle;
8 import com.smartgwt.client.widgets.grid.CellFormatter;
9 import com.smartgwt.client.widgets.grid.ListGrid;
10 import com.smartgwt.client.widgets.grid.ListGridField;
11 import com.smartgwt.client.widgets.grid.ListGridRecord;
12 import com.smartgwt.client.widgets.grid.events.CellClickEvent;
13 import com.smartgwt.client.widgets.grid.events.CellClickHandler;
14
15 import org.dive4elements.river.client.client.FLYSConstants;
16
17
18 public class ClickableWTable extends ListGrid {
19
20 public static enum ClickMode {
21 NONE, SINGLE, RANGE
22 }
23
24 private boolean useWaterlevelLabel = false;
25
26 public static interface WClickedListener {
27
28 void clickedLower(double value);
29
30 void clickedUpper(double value);
31 }
32
33 /** The message class that provides i18n strings. */
34 protected FLYSConstants MESSAGE = GWT.create(FLYSConstants.class);
35
36 private WClickedListener wClickedListener;
37 private ClickMode clickMode;
38
39 public ClickableWTable() {
40 this.clickMode = ClickMode.NONE;
41 init();
42 }
43
44 public ClickableWTable(WClickedListener lowerListener,
45 ClickMode selectionMode, boolean alternativeLabel) {
46 this.wClickedListener = lowerListener;
47 this.clickMode = selectionMode;
48 this.useWaterlevelLabel = alternativeLabel;
49 init();
50 }
51
52 private void init() {
53 setWidth100();
54 setHeight100();
55 setSelectionType(SelectionStyle.NONE);
56 setSelectionType(SelectionStyle.NONE);
57 setShowHeaderContextMenu(false);
58 setShowRecordComponents(true);
59 setShowRecordComponentsByCell(true);
60 setEmptyMessage(MESSAGE.empty_table());
61
62 ListGridField name = new ListGridField("name",
63 useWaterlevelLabel ? MESSAGE.wq_waterlevel_label() : MESSAGE.name() );
64 name.setType(ListGridFieldType.TEXT);
65 name.setWidth("*");
66
67 ListGridField type = new ListGridField("type", MESSAGE.type());
68 type.setType(ListGridFieldType.TEXT);
69 type.setWidth("50");
70
71 final NumberFormat nf = NumberFormat.getDecimalFormat();
72
73 ListGridField value = new ListGridField("value", MESSAGE.wq_value_w());
74 value.setType(ListGridFieldType.FLOAT);
75 value.setCellFormatter(new CellFormatter() {
76
77 @Override
78 public String format(Object v, ListGridRecord r, int row, int col) {
79 if (v == null) {
80 return null;
81 }
82
83 try {
84 double value = Double.valueOf(v.toString());
85 return nf.format(value);
86 }
87 catch (NumberFormatException nfe) {
88 return v.toString();
89 }
90 }
91 });
92
93 switch (clickMode) {
94 case NONE:
95 setFields(name, type, value);
96 break;
97 case SINGLE:
98 initSingleClickMode(name, type, value);
99 break;
100 case RANGE:
101 initRangeClickMode(name, type, value);
102 break;
103 }
104 }
105
106 private void initSingleClickMode(ListGridField name, ListGridField type,
107 ListGridField value) {
108 ListGridField lower = new ListGridField("selection",
109 MESSAGE.selection());
110 lower.setType(ListGridFieldType.ICON);
111 lower.setWidth("65");
112 lower.setCellIcon(GWT.getHostPageBaseURL() + MESSAGE.markerGreen());
113 addCellClickHandler(new CellClickHandler() {
114
115 @Override
116 public void onCellClick(CellClickEvent event) {
117 if (event.getColNum() == 0) {
118 Record r = event.getRecord();
119 double val = r.getAttributeAsDouble("value");
120 fireLowerClickEvent(val);
121 }
122 }
123 });
124
125 setFields(lower, name, type, value);
126 }
127
128 private void initRangeClickMode(ListGridField name, ListGridField type,
129 ListGridField value) {
130 ListGridField lower = new ListGridField("lower", MESSAGE.lower());
131 lower.setType(ListGridFieldType.ICON);
132 lower.setWidth("50");
133 lower.setCellIcon(GWT.getHostPageBaseURL() + MESSAGE.markerRed());
134 addCellClickHandler(new CellClickHandler() {
135
136 @Override
137 public void onCellClick(CellClickEvent event) {
138 if (event.getColNum() == 0) {
139 Record r = event.getRecord();
140 double val = r.getAttributeAsDouble("value");
141 fireLowerClickEvent(val);
142 }
143 }
144 });
145
146 ListGridField upper = new ListGridField("upper", MESSAGE.upper());
147 upper.setType(ListGridFieldType.ICON);
148 upper.setWidth("50");
149 upper.setCellIcon(GWT.getHostPageBaseURL() + MESSAGE.markerGreen());
150 addCellClickHandler(new CellClickHandler() {
151
152 @Override
153 public void onCellClick(CellClickEvent event) {
154 if (event.getColNum() == 1) {
155 Record r = event.getRecord();
156 double val = r.getAttributeAsDouble("value");
157 fireUpperClickEvent(val);
158 }
159 }
160 });
161
162 setFields(lower, upper, name, type, value);
163 }
164
165 private void fireLowerClickEvent(double value) {
166 if (wClickedListener != null) {
167 wClickedListener.clickedLower(value);
168 }
169 }
170
171 private void fireUpperClickEvent(double value) {
172 if (wClickedListener != null) {
173 wClickedListener.clickedUpper(value);
174 }
175 }
176 }

http://dive4elements.wald.intevation.org