Mercurial > dive4elements > river
comparison flys-client/src/main/java/org/dive4elements/river/client/client/ui/wq/ClickableQDTable.java @ 5834:f507086aa94b
Repaired internal references.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:31:32 +0200 |
parents | flys-client/src/main/java/de/intevation/flys/client/client/ui/wq/ClickableQDTable.java@1cdbd8a0c994 |
children | 821a02bbfb4e |
comparison
equal
deleted
inserted
replaced
5833:a2bdc0f524e8 | 5834:f507086aa94b |
---|---|
1 package de.intevation.flys.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.types.ListGridFieldType; | |
6 import com.smartgwt.client.types.SelectionStyle; | |
7 import com.smartgwt.client.widgets.grid.CellFormatter; | |
8 import com.smartgwt.client.widgets.grid.ListGrid; | |
9 import com.smartgwt.client.widgets.grid.ListGridField; | |
10 import com.smartgwt.client.widgets.grid.ListGridRecord; | |
11 import com.smartgwt.client.widgets.grid.events.CellClickEvent; | |
12 import com.smartgwt.client.widgets.grid.events.CellClickHandler; | |
13 | |
14 import de.intevation.flys.client.client.FLYSConstants; | |
15 | |
16 | |
17 /** | |
18 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | |
19 */ | |
20 public class ClickableQDTable extends ListGrid { | |
21 | |
22 public static enum ClickMode { | |
23 NONE, SINGLE, RANGE | |
24 } | |
25 | |
26 public static interface QClickedListener { | |
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 QClickedListener qClickedListener; | |
37 private ClickMode clickMode; | |
38 | |
39 protected boolean lockClick; | |
40 | |
41 public ClickableQDTable() { | |
42 this.clickMode = ClickMode.NONE; | |
43 init(); | |
44 } | |
45 | |
46 public ClickableQDTable(QClickedListener qClickedListener, | |
47 ClickMode clickMode) { | |
48 this.qClickedListener = qClickedListener; | |
49 this.clickMode = clickMode; | |
50 init(); | |
51 } | |
52 | |
53 private void init() { | |
54 setWidth100(); | |
55 setHeight100(); | |
56 setSelectionType(SelectionStyle.SINGLE); | |
57 setSelectionType(SelectionStyle.SINGLE); | |
58 setShowHeaderContextMenu(false); | |
59 setShowRecordComponents(true); | |
60 setShowRecordComponentsByCell(true); | |
61 setEmptyMessage(MESSAGE.empty_table()); | |
62 | |
63 ListGridField name = new ListGridField("name", MESSAGE.discharge()); | |
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("20%"); | |
70 | |
71 final NumberFormat nf = NumberFormat.getDecimalFormat(); | |
72 | |
73 ListGridField value = new ListGridField("value", MESSAGE.wq_value_q()); | |
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 value.setWidth("20%"); | |
93 | |
94 switch (clickMode) { | |
95 case NONE: | |
96 setFields(name, type, value); | |
97 break; | |
98 case SINGLE: | |
99 initSingleClickMode(name, type, value); | |
100 break; | |
101 case RANGE: | |
102 initRangeClickMode(name, type, value); | |
103 break; | |
104 } | |
105 } | |
106 | |
107 private void initSingleClickMode(ListGridField name, ListGridField type, | |
108 ListGridField value) { | |
109 ListGridField select = new ListGridField("select", MESSAGE.selection()); | |
110 select.setType(ListGridFieldType.ICON); | |
111 select.setWidth(70); | |
112 select.setCellIcon(GWT.getHostPageBaseURL() + MESSAGE.markerGreen()); | |
113 | |
114 addCellClickHandler(new CellClickHandler() { | |
115 | |
116 @Override | |
117 public void onCellClick(CellClickEvent event) { | |
118 if (event.getColNum() == 0) { | |
119 ListGridRecord r = event.getRecord(); | |
120 fireLowerClickEvent(r.getAttributeAsDouble("value")); | |
121 } | |
122 } | |
123 }); | |
124 | |
125 setFields(select, name, type, value); | |
126 } | |
127 | |
128 private void initRangeClickMode(ListGridField name, ListGridField type, | |
129 ListGridField value) { | |
130 ListGridField addMin = new ListGridField("min", MESSAGE.to()); | |
131 addMin.setType(ListGridFieldType.ICON); | |
132 addMin.setWidth(30); | |
133 addMin.setCellIcon(GWT.getHostPageBaseURL() + MESSAGE.markerGreen()); | |
134 | |
135 ListGridField addMax = new ListGridField("max", MESSAGE.from()); | |
136 addMax.setType(ListGridFieldType.ICON); | |
137 addMax.setWidth(30); | |
138 addMax.setCellIcon(GWT.getHostPageBaseURL() + MESSAGE.markerRed()); | |
139 | |
140 addCellClickHandler(new CellClickHandler() { | |
141 | |
142 @Override | |
143 public void onCellClick(CellClickEvent event) { | |
144 if (event.getColNum() == 0) { | |
145 ListGridRecord r = event.getRecord(); | |
146 fireLowerClickEvent(r.getAttributeAsDouble("value")); | |
147 } | |
148 | |
149 if (event.getColNum() == 1) { | |
150 ListGridRecord r = event.getRecord(); | |
151 fireUpperClickEvent(r.getAttributeAsDouble("value")); | |
152 } | |
153 } | |
154 }); | |
155 | |
156 setFields(addMin, addMax, name, type, value); | |
157 } | |
158 | |
159 private void fireLowerClickEvent(double value) { | |
160 if (qClickedListener != null) { | |
161 qClickedListener.clickedLower(value); | |
162 } | |
163 } | |
164 | |
165 private void fireUpperClickEvent(double value) { | |
166 if (qClickedListener != null) { | |
167 qClickedListener.clickedUpper(value); | |
168 } | |
169 } | |
170 } | |
171 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |