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 :

http://dive4elements.wald.intevation.org