Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadYearPanel.java @ 9077:2b13de1b0897
moved single_year/multi_year common code to AbstractPanel
author | gernotbelger |
---|---|
date | Tue, 22 May 2018 15:32:00 +0200 |
parents | 22d8928895a1 |
children | fc02833dbcc1 |
comparison
equal
deleted
inserted
replaced
9076:22d8928895a1 | 9077:2b13de1b0897 |
---|---|
6 * documentation coming with Dive4Elements River for details. | 6 * documentation coming with Dive4Elements River for details. |
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.river.client.client.ui.sinfo; | 9 package org.dive4elements.river.client.client.ui.sinfo; |
10 | 10 |
11 import java.util.ArrayList; | 11 import org.dive4elements.river.client.client.ui.AbstractPanel; |
12 import java.util.List; | |
13 | 12 |
14 import org.dive4elements.river.client.client.FLYSConstants; | 13 public class CollisionLoadYearPanel extends AbstractPanel { |
15 import org.dive4elements.river.client.client.ui.AbstractUIProvider; | |
16 import org.dive4elements.river.client.client.ui.FromToTableHelperPanel; | |
17 import org.dive4elements.river.client.client.ui.FromToTableHelperPanel.IColumnClickHandler; | |
18 import org.dive4elements.river.client.shared.model.Data; | |
19 import org.dive4elements.river.client.shared.model.DataItem; | |
20 import org.dive4elements.river.client.shared.model.DataList; | |
21 import org.dive4elements.river.client.shared.model.DefaultData; | |
22 import org.dive4elements.river.client.shared.model.DefaultDataItem; | |
23 | 14 |
24 import com.google.gwt.core.client.GWT; | 15 @Override |
25 import com.google.gwt.i18n.client.NumberFormat; | 16 protected String getDatakey() { |
26 import com.smartgwt.client.widgets.Canvas; | 17 return "years"; // MULTIPLE; get From server (sinfo.xml data for state) |
27 import com.smartgwt.client.widgets.Label; | 18 } |
28 import com.smartgwt.client.widgets.form.DynamicForm; | |
29 import com.smartgwt.client.widgets.form.fields.TextItem; | |
30 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator; | |
31 import com.smartgwt.client.widgets.grid.ListGrid; | |
32 import com.smartgwt.client.widgets.layout.HLayout; | |
33 import com.smartgwt.client.widgets.layout.VLayout; | |
34 | |
35 public class CollisionLoadYearPanel extends AbstractUIProvider { | |
36 | |
37 private final FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); | |
38 | |
39 private TextItem yearsItem; | |
40 | |
41 private List<String> validYears = new ArrayList<String>(); | |
42 | |
43 private ListGrid table; | |
44 | 19 |
45 public CollisionLoadYearPanel() { | 20 public CollisionLoadYearPanel() { |
46 } | 21 } |
47 | 22 |
48 @Override | 23 @Override |
49 public Canvas createOld(final DataList dataList) { | 24 protected final void appendValue(final String value) { // APPEND = ADD to existing -> MULTI YEAR |
50 final List<Data> items = dataList.getAll(); | 25 final String oldYears = super.inputItem.getValueAsString(); |
51 final Data years = getData(items, "years"); | |
52 final DataItem[] yearsItems = years.getItems(); | |
53 | |
54 final String v1 = yearsItems[0].getStringValue().replace(" ", ", "); | |
55 | |
56 final Label old = new Label(v1); | |
57 final HLayout layout = new HLayout(); | |
58 layout.setWidth("400px"); | |
59 | |
60 final Label label = new Label(dataList.getLabel()); | |
61 label.setWidth("200px"); | |
62 | |
63 final Canvas back = getBackButton(dataList.getState()); | |
64 | |
65 layout.addMember(label); | |
66 layout.addMember(old); | |
67 layout.addMember(back); | |
68 | |
69 return layout; | |
70 } | |
71 | |
72 @Override | |
73 public List<String> validate() { | |
74 return validateYears(); | |
75 } | |
76 | |
77 @Override | |
78 public Canvas create(final DataList data) { | |
79 final VLayout layout = new VLayout(); | |
80 final IColumnClickHandler fromHandler = new IColumnClickHandler() { // add to external class | |
81 | |
82 @Override | |
83 public void columnClicked(final String value) { | |
84 appendYear(value); | |
85 } | |
86 }; | |
87 | |
88 final FromToTableHelperPanel helper = new FromToTableHelperPanel(data, "years", this.MSG, fromHandler, null); | |
89 final Canvas table = helper.getTable(); | |
90 this.validYears = helper.getKeycolEntries(); | |
91 | |
92 this.helperContainer.addMember(table); | |
93 | |
94 final Canvas submit = getNextButton(); | |
95 final Canvas widget = createWidget(data); | |
96 | |
97 layout.addMember(widget); | |
98 layout.addMember(submit); | |
99 | |
100 return layout; | |
101 } | |
102 | |
103 public Canvas createWidget(final DataList data) { | |
104 final VLayout layout = new VLayout(); | |
105 | |
106 final Label title = new Label(data.get(0).getDescription()); | |
107 title.setHeight("25px"); | |
108 | |
109 final DynamicForm form = new DynamicForm(); | |
110 form.setNumCols(4); | |
111 this.yearsItem = new TextItem(this.MSG.years()); | |
112 this.yearsItem.setValidators(new IsIntegerValidator()); | |
113 form.setFields(this.yearsItem); // TODO: move to helper | |
114 | |
115 layout.addMember(title); | |
116 layout.addMember(form); | |
117 | |
118 return layout; | |
119 } | |
120 | |
121 @Override | |
122 protected Data[] getData() { | |
123 validateYears(); | |
124 if (this.yearsItem != null && !this.yearsItem.getValueAsString().isEmpty()) { | |
125 final List<Data> data = new ArrayList<Data>(); | |
126 | |
127 final DataItem yearsdata = new DefaultDataItem("years", "years", this.yearsItem.getValueAsString().trim()); | |
128 data.add(new DefaultData("years", null, null, new DataItem[] { yearsdata })); | |
129 | |
130 return data.toArray(new Data[data.size()]); | |
131 } | |
132 return new Data[0]; | |
133 } | |
134 | |
135 private List<String> validateYears() { | |
136 final List<String> errors = new ArrayList<String>(); | |
137 final NumberFormat nf = NumberFormat.getDecimalFormat(); | |
138 | |
139 if (this.yearsItem.getValueAsString() == null || this.yearsItem.getValueAsString().trim().isEmpty()) { | |
140 errors.add(this.MESSAGES.empty_filter()); | |
141 return errors; | |
142 } | |
143 | |
144 final String[] sValues = this.yearsItem.getValueAsString().trim().split(" "); | |
145 String filtered = ""; | |
146 int goodValues = 0; | |
147 for (final String sValue : sValues) { | |
148 int value; | |
149 try { | |
150 value = Integer.parseInt(sValue); | |
151 } | |
152 catch (final NumberFormatException e) { | |
153 errors.add(this.MESSAGES.wrongFormat() + ": " + sValue); | |
154 continue; | |
155 } | |
156 boolean isGood = false; | |
157 for (final String validYear : this.validYears) { | |
158 /* No list contains for strings? */ | |
159 if (sValue.equals(validYear)) { | |
160 isGood = true; | |
161 break; | |
162 } | |
163 } | |
164 if (!isGood) { | |
165 String tmp = this.MESSAGES.no_data_for_year(); | |
166 tmp = tmp.replace("$1", sValue); | |
167 errors.add(tmp); | |
168 continue; | |
169 } | |
170 goodValues++; | |
171 if (goodValues > 1) { | |
172 filtered += " " + Integer.toString(value); | |
173 } else { | |
174 filtered = Integer.toString(value); | |
175 } | |
176 } | |
177 | |
178 return errors; | |
179 } | |
180 | |
181 protected final void appendYear(final String year) { | |
182 final String oldYears = this.yearsItem.getValueAsString(); | |
183 if (oldYears != null && !oldYears.isEmpty()) { | 26 if (oldYears != null && !oldYears.isEmpty()) { |
184 this.yearsItem.setValue(oldYears.trim() + " " + year); | 27 super.inputItem.setValue(oldYears.trim() + " " + value); |
185 } else { | 28 } else { |
186 this.yearsItem.setValue(year); | 29 super.inputItem.setValue(value); |
187 } | 30 } |
188 } | 31 } |
189 } | 32 } |