Mercurial > dive4elements > river
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 } |