Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadYearPanel.java Tue May 22 11:58:30 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadYearPanel.java Tue May 22 15:32:00 2018 +0200 @@ -8,182 +8,25 @@ package org.dive4elements.river.client.client.ui.sinfo; -import java.util.ArrayList; -import java.util.List; - -import org.dive4elements.river.client.client.FLYSConstants; -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.shared.model.DataList; -import org.dive4elements.river.client.shared.model.DefaultData; -import org.dive4elements.river.client.shared.model.DefaultDataItem; +import org.dive4elements.river.client.client.ui.AbstractPanel; -import com.google.gwt.core.client.GWT; -import com.google.gwt.i18n.client.NumberFormat; -import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.Label; -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.layout.HLayout; -import com.smartgwt.client.widgets.layout.VLayout; +public class CollisionLoadYearPanel extends AbstractPanel { -public class CollisionLoadYearPanel extends AbstractUIProvider { - - private final FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); - - private TextItem yearsItem; - - private List<String> validYears = new ArrayList<String>(); - - private ListGrid table; + @Override + protected String getDatakey() { + return "years"; // MULTIPLE; get From server (sinfo.xml data for state) + } public CollisionLoadYearPanel() { } @Override - public Canvas createOld(final DataList dataList) { - final List<Data> items = dataList.getAll(); - final Data years = getData(items, "years"); - final DataItem[] yearsItems = years.getItems(); - - final String v1 = yearsItems[0].getStringValue().replace(" ", ", "); - - final Label old = new Label(v1); - final HLayout layout = new HLayout(); - layout.setWidth("400px"); - - final Label label = new Label(dataList.getLabel()); - label.setWidth("200px"); - - final Canvas back = getBackButton(dataList.getState()); - - layout.addMember(label); - layout.addMember(old); - layout.addMember(back); - - return layout; - } - - @Override - public List<String> validate() { - return validateYears(); - } - - @Override - public Canvas create(final DataList data) { - final VLayout layout = new VLayout(); - final IColumnClickHandler fromHandler = new IColumnClickHandler() { // add to external class - - @Override - public void columnClicked(final String value) { - appendYear(value); - } - }; - - final FromToTableHelperPanel helper = new FromToTableHelperPanel(data, "years", this.MSG, fromHandler, null); - final Canvas table = helper.getTable(); - this.validYears = helper.getKeycolEntries(); - - this.helperContainer.addMember(table); - - final Canvas submit = getNextButton(); - final Canvas widget = createWidget(data); - - layout.addMember(widget); - layout.addMember(submit); - - return layout; - } - - public Canvas createWidget(final DataList data) { - final VLayout layout = new VLayout(); - - final Label title = new Label(data.get(0).getDescription()); - title.setHeight("25px"); - - final DynamicForm form = new DynamicForm(); - form.setNumCols(4); - this.yearsItem = new TextItem(this.MSG.years()); - this.yearsItem.setValidators(new IsIntegerValidator()); - form.setFields(this.yearsItem); // TODO: move to helper - - layout.addMember(title); - layout.addMember(form); - - return layout; - } - - @Override - protected Data[] getData() { - validateYears(); - if (this.yearsItem != null && !this.yearsItem.getValueAsString().isEmpty()) { - final List<Data> data = new ArrayList<Data>(); - - final DataItem yearsdata = new DefaultDataItem("years", "years", this.yearsItem.getValueAsString().trim()); - data.add(new DefaultData("years", null, null, new DataItem[] { yearsdata })); - - return data.toArray(new Data[data.size()]); - } - return new Data[0]; - } - - private List<String> validateYears() { - final List<String> errors = new ArrayList<String>(); - final NumberFormat nf = NumberFormat.getDecimalFormat(); - - if (this.yearsItem.getValueAsString() == null || this.yearsItem.getValueAsString().trim().isEmpty()) { - errors.add(this.MESSAGES.empty_filter()); - return errors; - } - - final String[] sValues = this.yearsItem.getValueAsString().trim().split(" "); - String filtered = ""; - int goodValues = 0; - for (final String sValue : sValues) { - int value; - try { - value = Integer.parseInt(sValue); - } - catch (final NumberFormatException e) { - errors.add(this.MESSAGES.wrongFormat() + ": " + sValue); - continue; - } - boolean isGood = false; - for (final String validYear : this.validYears) { - /* No list contains for strings? */ - if (sValue.equals(validYear)) { - isGood = true; - break; - } - } - if (!isGood) { - String tmp = this.MESSAGES.no_data_for_year(); - tmp = tmp.replace("$1", sValue); - errors.add(tmp); - continue; - } - goodValues++; - if (goodValues > 1) { - filtered += " " + Integer.toString(value); - } else { - filtered = Integer.toString(value); - } - } - - return errors; - } - - protected final void appendYear(final String year) { - final String oldYears = this.yearsItem.getValueAsString(); + protected final void appendValue(final String value) { // APPEND = ADD to existing -> MULTI YEAR + final String oldYears = super.inputItem.getValueAsString(); if (oldYears != null && !oldYears.isEmpty()) { - this.yearsItem.setValue(oldYears.trim() + " " + year); + super.inputItem.setValue(oldYears.trim() + " " + value); } else { - this.yearsItem.setValue(year); + super.inputItem.setValue(value); } } }