comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTableEditPanel.java @ 9107:41f4bc83aa7a

vegzones improved
author gernotbelger
date Tue, 29 May 2018 15:19:03 +0200
parents 611a523fc42f
children f5b55b383ef9
comparison
equal deleted inserted replaced
9106:ffd4e2b0381c 9107:41f4bc83aa7a
9 package org.dive4elements.river.client.client.ui.uinfo; 9 package org.dive4elements.river.client.client.ui.uinfo;
10 10
11 import org.dive4elements.river.client.client.ui.PanelHelper; 11 import org.dive4elements.river.client.client.ui.PanelHelper;
12 import org.dive4elements.river.client.shared.model.DataList; 12 import org.dive4elements.river.client.shared.model.DataList;
13 13
14 import com.google.gwt.core.client.GWT; 14 import com.smartgwt.client.util.SC;
15 import com.smartgwt.client.types.ListGridFieldType;
16 import com.smartgwt.client.widgets.Button; 15 import com.smartgwt.client.widgets.Button;
17 import com.smartgwt.client.widgets.Canvas;
18 import com.smartgwt.client.widgets.events.ClickEvent; 16 import com.smartgwt.client.widgets.events.ClickEvent;
19 import com.smartgwt.client.widgets.events.ClickHandler; 17 import com.smartgwt.client.widgets.events.ClickHandler;
20 import com.smartgwt.client.widgets.form.DynamicForm; 18 import com.smartgwt.client.widgets.form.DynamicForm;
21 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator; 19 import com.smartgwt.client.widgets.form.fields.TextItem;
22 import com.smartgwt.client.widgets.form.validator.IsStringValidator; 20 import com.smartgwt.client.widgets.grid.ListGrid;
23 import com.smartgwt.client.widgets.grid.ListGridField;
24 import com.smartgwt.client.widgets.grid.ListGridRecord; 21 import com.smartgwt.client.widgets.grid.ListGridRecord;
25 import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
26 import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
27 import com.smartgwt.client.widgets.layout.HLayout; 22 import com.smartgwt.client.widgets.layout.HLayout;
23 import com.smartgwt.client.widgets.layout.Layout;
28 24
29 public class VegetationzonesTableEditPanel extends AbstractVegZonesTablePanel { 25 public class VegetationzonesTableEditPanel extends AbstractVegZonesTablePanel {
30 private static final long serialVersionUID = 1L; 26 private static final long serialVersionUID = 1L;
31 27
28 private TextItem vegzone;
29
30 private TextItem start;
31
32 private TextItem end;
33
32 @Override 34 @Override
33 public Canvas createWidget(final DataList data) { 35 public void createWidget(final Layout root, final DataList data) {
34 super.createTable(data, 450); 36
35 this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator()); 37 final ListGrid elements = super.createTable(root, data, 450, true);
36 this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator()); 38
37 this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator()); 39 this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200);
40 this.start = PanelHelper.createIntegerItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40);
41 this.end = PanelHelper.createIntegerItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40);
38 final HLayout fields = new HLayout(); 42 final HLayout fields = new HLayout();
39 final HLayout fields2 = new HLayout(); 43 final HLayout fields2 = new HLayout();
40 44
41 final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific 45 final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific
42 46
51 @Override 55 @Override
52 public void onClick(final ClickEvent ce) { 56 public void onClick(final ClickEvent ce) {
53 final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString(); 57 final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString();
54 final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString(); 58 final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString();
55 final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString(); 59 final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString();
56 if (v1 == null || v2 == null || v3 == null) { 60 final String message = validate(v1, v2, v3);
57 return; 61 if (message != null) {
58 } 62 SC.warn(message);
59 try {
60 final double test = Double.valueOf(v1);
61 final double test2 = Double.valueOf(v2);
62 // TODO: MAKE MESSAGE, Apply Format (1.000,00)
63 }
64 catch (final Exception e) {
65 e.printStackTrace();
66 return; 63 return;
67 } 64 }
68 65
69 final ListGridRecord r = new ListGridRecord(); 66 final ListGridRecord r = new ListGridRecord();
70 r.setAttribute("vegzone", v3); 67 r.setAttribute("vegzone", v3);
71 r.setAttribute("from", v1); 68 r.setAttribute("from", v1);
72 r.setAttribute("to", v2); 69 r.setAttribute("to", v2);
73 VegetationzonesTableEditPanel.this.elements.addData(r); 70 elements.addData(r);
74 } 71 }
75 }); 72 });
76
77 final ListGridField removeField = new ListGridField("_removeRecord", "Remove Record") {
78 {
79 setType(ListGridFieldType.ICON);
80 setIcon(GWT.getHostPageBaseURL() + VegetationzonesTableEditPanel.this.MSG.removeFeature());
81 setCanEdit(false);
82 setCanFilter(false);
83 setCanSort(false);
84 setCanGroupBy(false);
85 setCanFreeze(false);
86 setWidth(25);
87 }
88 };
89
90 this.elements.addRecordClickHandler(new RecordClickHandler() {
91 @Override
92 public void onRecordClick(final RecordClickEvent event) {
93 // Just handle remove-clicks
94 if (!event.getField().getName().equals(removeField.getName())) {
95 return;
96 }
97 event.getViewer().removeData(event.getRecord());
98 }
99 });
100
101 this.elements.setFields(super.vegzoneField, super.fromField, super.toField, removeField);
102 73
103 fields.addMember(form1); 74 fields.addMember(form1);
104 fields2.addMember(form2); 75 fields2.addMember(form2);
105 76
106 this.root.addMember(fields); 77 root.addMember(fields);
107 this.root.addMember(fields2); 78 root.addMember(fields2);
108 this.root.addMember(PanelHelper.getSpacer(10)); 79 root.addMember(PanelHelper.getSpacer(10));
109 this.root.addMember(add); 80 root.addMember(add);
110 this.root.addMember(PanelHelper.getSpacer(20)); 81 root.addMember(PanelHelper.getSpacer(20));
111
112 return this.root;
113 } 82 }
114 83
84 protected String validate(final String v1, final String v2, final String v3) {
85
86 if (v1 == null || v2 == null || v3 == null || v1.trim().isEmpty() || v2.trim().isEmpty() || v3.trim().isEmpty())
87 return this.MSG.uinfo_vegetation_zones_validation_empty();
88
89 try {
90 final Integer from = Integer.valueOf(v1);
91 final Integer to = Integer.valueOf(v2);
92
93 if (from < 0 || from > 365)
94 return this.MSG.uinfo_vegetation_zones_validation_range();
95
96 if (to < 0 || to > 365)
97 return this.MSG.uinfo_vegetation_zones_validation_range();
98
99 if (from > to)
100 return this.MSG.uinfo_vegetation_zones_validation_from_greater_to();
101
102 return null;
103 }
104 catch (final NumberFormatException e) {
105 return this.MSG.uinfo_vegetation_zones_invalid_integer();
106 }
107 }
115 } 108 }

http://dive4elements.wald.intevation.org