Mercurial > dive4elements > river
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; - } }