diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadEpochPanel.java @ 9079:aafae1ab25f0

epoch-panels, single-input-panels
author gernotbelger
date Wed, 23 May 2018 17:30:24 +0200
parents fc02833dbcc1
children
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadEpochPanel.java	Tue May 22 17:44:05 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadEpochPanel.java	Wed May 23 17:30:24 2018 +0200
@@ -8,22 +8,10 @@
 
 package org.dive4elements.river.client.client.ui.sinfo;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.dive4elements.river.client.client.services.SedimentLoadInfoService;
-import org.dive4elements.river.client.client.services.SedimentLoadInfoServiceAsync;
-import org.dive4elements.river.client.client.ui.AbstractUIProvider;
-import org.dive4elements.river.client.client.ui.FromToTableHelperPanel;
-import org.dive4elements.river.client.client.ui.FromToTableHelperPanel.IColumnClickHandler;
-import org.dive4elements.river.client.shared.model.Data;
-import org.dive4elements.river.client.shared.model.DataItem;
+import org.dive4elements.river.client.client.ui.AbstractEpochPanel;
 import org.dive4elements.river.client.shared.model.DataList;
-import org.dive4elements.river.client.shared.model.DefaultData;
-import org.dive4elements.river.client.shared.model.DefaultDataItem;
 
 import com.google.gwt.core.client.GWT;
-import com.smartgwt.client.data.Record;
 import com.smartgwt.client.types.ListGridFieldType;
 import com.smartgwt.client.widgets.Button;
 import com.smartgwt.client.widgets.Canvas;
@@ -32,7 +20,6 @@
 import com.smartgwt.client.widgets.events.ClickHandler;
 import com.smartgwt.client.widgets.form.DynamicForm;
 import com.smartgwt.client.widgets.form.fields.TextItem;
-import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
 import com.smartgwt.client.widgets.grid.ListGrid;
 import com.smartgwt.client.widgets.grid.ListGridField;
 import com.smartgwt.client.widgets.grid.ListGridRecord;
@@ -41,45 +28,44 @@
 import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
 
-// FIXME: copy of SedLoadEpochPanel
-public class CollisionLoadEpochPanel extends AbstractUIProvider {
-    protected SedimentLoadInfoServiceAsync sedLoadInfoService = GWT.create(SedimentLoadInfoService.class);
+public class CollisionLoadEpochPanel extends AbstractEpochPanel {
 
-    protected ListGrid elements;
-    private TextItem start;
-    private TextItem end;
+    private static final long serialVersionUID = 1L;
 
-    private final String getDatakey() {
+    @Override
+    protected String getDatakey() {
         return "epochs";
     }
 
-    protected List<String> validYears = new ArrayList<String>();
+    public CollisionLoadEpochPanel() {
+        super(Type.multi);
+    }
 
-    public Canvas createWidget(final DataList data) {
+    @Override
+    protected Canvas createWidget(final DataList data) {
         final HLayout input = new HLayout();
         final VLayout root = new VLayout();
         final VLayout grid = new VLayout();
         final VLayout intFields = new VLayout();
         final Button add = new Button(this.MSG.add_date());
-        this.elements = new ListGrid();
+        final ListGrid elements = createListGrid();
+        elements.setWidth(185);
+        elements.setHeight(120);
 
         final Label title = new Label(data.get(0).getDescription());
         title.setHeight("25px");
 
         final DynamicForm form = new DynamicForm();
         form.setNumCols(4);
-        this.start = new TextItem(this.MSG.from());
-        this.start.setWidth(60);
-        this.start.setValidators(new IsIntegerValidator());
-        this.end = new TextItem(this.MSG.to());
-        this.end.setWidth(60);
-        this.end.setValidators(new IsIntegerValidator());
-        form.setFields(this.start, this.end);
+        final TextItem start = createStartInputItem(this.MSG.from());
+        final TextItem end = createEndInputItem(this.MSG.to());
+
+        form.setFields(start, end);
         add.addClickHandler(new ClickHandler() {
             @Override
             public void onClick(final ClickEvent ce) {
-                final String v1 = CollisionLoadEpochPanel.this.start.getValueAsString();
-                final String v2 = CollisionLoadEpochPanel.this.end.getValueAsString();
+                final String v1 = start.getValueAsString();
+                final String v2 = end.getValueAsString();
                 if (v1 == null || v2 == null) {
                     return;
                 }
@@ -89,18 +75,13 @@
                 final ListGridRecord r = new ListGridRecord();
                 r.setAttribute("from", v1);
                 r.setAttribute("to", v2);
-                CollisionLoadEpochPanel.this.elements.addData(r);
+                elements.addData(r);
             }
         });
 
         final Label sel = new Label(this.MSG.select());
         sel.setHeight(25);
-        this.elements.setWidth(185);
-        this.elements.setHeight(120);
-        this.elements.setShowHeaderContextMenu(false);
-        this.elements.setCanReorderFields(false);
-        this.elements.setCanSort(false);
-        this.elements.setCanEdit(false);
+
         final ListGridField from = new ListGridField("from", this.MSG.from());
         final ListGridField to = new ListGridField("to", this.MSG.to());
         from.setWidth(70);
@@ -119,7 +100,7 @@
             }
         };
 
-        this.elements.addRecordClickHandler(new RecordClickHandler() {
+        elements.addRecordClickHandler(new RecordClickHandler() {
             @Override
             public void onRecordClick(final RecordClickEvent event) {
                 // Just handle remove-clicks
@@ -130,12 +111,12 @@
             }
         });
 
-        this.elements.setFields(from, to, removeField);
+        elements.setFields(from, to, removeField);
 
         intFields.addMember(form);
         intFields.addMember(add);
         grid.addMember(sel);
-        grid.addMember(this.elements);
+        grid.addMember(elements);
         input.addMember(intFields);
         input.addMember(grid);
         root.addMember(title);
@@ -144,148 +125,4 @@
         return root;
     }
 
-    @Override
-    public Canvas createOld(final DataList dataList) {
-        final HLayout layout = new HLayout();
-        layout.setWidth("400px");
-        final VLayout vLayout = new VLayout();
-        vLayout.setWidth(130);
-        final Label label = new Label(dataList.getLabel());
-        label.setWidth("200px");
-        label.setHeight(25);
-
-        final List<Data> items = dataList.getAll();
-        final Data str = getData(items, getDatakey());
-        final DataItem[] strItems = str.getItems();
-
-        final String[] pairs = strItems[0].getLabel().split(";");
-        for (final String pair : pairs) {
-            final String[] vals = pair.split(",");
-            final Label dateLabel = new Label(vals[0] + " - " + vals[1]);
-            dateLabel.setHeight(20);
-            vLayout.addMember(dateLabel);
-        }
-        final Canvas back = getBackButton(dataList.getState());
-        layout.addMember(label);
-        layout.addMember(vLayout);
-        layout.addMember(back);
-
-        return layout;
-    }
-
-    @Override
-    public Canvas create(final DataList data) {
-        final VLayout layout = new VLayout();
-        final Canvas submit = getNextButton();
-        final Canvas widget = createWidget(data);
-
-        layout.addMember(widget);
-        layout.addMember(submit);
-
-        final IColumnClickHandler fromHandler = createHandler(this.start);
-        final IColumnClickHandler toHandler = createHandler(this.end);
-
-        final FromToTableHelperPanel helper = new FromToTableHelperPanel(data, getDatakey(), this.MSG, fromHandler, toHandler);
-        this.validYears = helper.getKeycolEntries();
-        final Canvas table = helper.getTable();
-
-        this.helperContainer.addMember(table);
-        return layout;
-    }
-
-    private IColumnClickHandler createHandler(final TextItem field) {
-        final IColumnClickHandler handler = new IColumnClickHandler() {
-
-            @Override
-            public void columnClicked(final String value) {
-                field.setValue(value);
-            }
-        };
-
-        return handler;
-    }
-
-    @Override
-    protected Data[] getData() {
-        final List<Data> data = new ArrayList<Data>();
-
-        final ListGridRecord[] lgr = this.elements.getRecords();
-        if (lgr.length == 0) {
-            return new Data[0];
-        }
-        String d = "";
-        for (final ListGridRecord element : lgr) {
-            final Record r = element;
-            d += r.getAttribute("from") + "," + r.getAttribute("to");
-            d += ";";
-        }
-
-        final DataItem item = new DefaultDataItem(getDatakey(), null, d);
-        data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { item }));
-        return data.toArray(new Data[data.size()]);
-    }
-
-    /*
-     * Validate the epoch input. We do this here and not in an overridden
-     * validate method as we want to validate before an epoch is added
-     * to the list of epochs.
-     */
-    protected boolean isValidEpoch(final String y1, final String y2) {
-        // First check that both are integer
-        int iY1;
-        int iY2;
-        final List<String> errors = new ArrayList<String>();
-        try {
-            iY1 = Integer.parseInt(y1);
-        }
-        catch (final NumberFormatException e) {
-            errors.add(this.MSG.wrongFormat() + ": " + y1);
-        }
-        try {
-            iY2 = Integer.parseInt(y2);
-        }
-        catch (final NumberFormatException e) {
-            errors.add(this.MSG.wrongFormat() + ": " + y2);
-        }
-        if (!errors.isEmpty()) {
-            showErrors(errors);
-            return false;
-        }
-        boolean startIsGood = false;
-        boolean endIsGood = false;
-        for (final String validYear : this.validYears) {
-            if (startIsGood || y1.equals(validYear)) {
-                startIsGood = true;
-            }
-            if (endIsGood || y2.equals(validYear)) {
-                endIsGood = true;
-            }
-            if (startIsGood && endIsGood) {
-                break;
-            }
-            /*
-             * alternative check if data lies in between
-             * int aYear = Integer.parseInt(validYear);
-             * if (aYear >= iY1 && aYear <= iY2) {
-             * isGood = true;
-             * break;
-             * }
-             */
-        }
-        if (!startIsGood) {
-            String tmp = this.MSG.no_data_for_year();
-            tmp = tmp.replace("$1", y1);
-            errors.add(tmp);
-        }
-        if (!endIsGood) {
-            String tmp = this.MSG.no_data_for_year();
-            tmp = tmp.replace("$1", y2);
-            errors.add(tmp);
-        }
-        if (!errors.isEmpty()) {
-            showErrors(errors);
-            return false;
-        }
-        return true;
-    }
 }

http://dive4elements.wald.intevation.org