gernotbelger@9267: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9267: * Software engineering by Intevation GmbH gernotbelger@9267: * gernotbelger@9267: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9267: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9267: * documentation coming with Dive4Elements River for details. gernotbelger@9267: */ gernotbelger@9267: gernotbelger@9267: package org.dive4elements.river.client.client.ui.bundu; gernotbelger@9267: gernotbelger@9267: import java.util.ArrayList; gernotbelger@9267: import java.util.List; gernotbelger@9267: gernotbelger@9267: import org.dive4elements.river.client.client.ui.AbstractUIProvider; gernotbelger@9267: import org.dive4elements.river.client.client.ui.PanelHelper; gernotbelger@9267: import org.dive4elements.river.client.client.ui.ValidationHelper; gernotbelger@9267: import org.dive4elements.river.client.shared.model.Data; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DataItem; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DataList; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DefaultData; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DefaultDataItem; gernotbelger@9267: gernotbelger@9267: import com.smartgwt.client.widgets.Canvas; gernotbelger@9267: import com.smartgwt.client.widgets.Label; gernotbelger@9267: import com.smartgwt.client.widgets.form.DynamicForm; gernotbelger@9267: import com.smartgwt.client.widgets.form.fields.StaticTextItem; gernotbelger@9267: import com.smartgwt.client.widgets.form.fields.TextItem; gernotbelger@9267: import com.smartgwt.client.widgets.layout.HLayout; gernotbelger@9267: import com.smartgwt.client.widgets.layout.VLayout; gernotbelger@9267: gernotbelger@9267: public class QSeriesLengthPanel extends AbstractUIProvider { gernotbelger@9267: private static final long serialVersionUID = 1L; gernotbelger@9267: gernotbelger@9267: private TextItem inputItem; gernotbelger@9267: gernotbelger@9267: protected String getDatakey() { gernotbelger@9267: return "year_input_q_series"; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: private Canvas createWidget(final DataList data) { gernotbelger@9267: final VLayout layout = new VLayout(); gernotbelger@9267: gernotbelger@9267: final Label title = new Label(data.get(0).getDescription()); gernotbelger@9267: title.setHeight("35px"); gernotbelger@9267: gernotbelger@9267: final DynamicForm form = new DynamicForm(); gernotbelger@9267: gernotbelger@9267: form.setNumCols(4); gernotbelger@9267: this.inputItem = PanelHelper.createItem("NAME_TO_PREVENT_ERROR_MSG"); gernotbelger@9267: this.inputItem.setValue(40); gernotbelger@9267: this.inputItem.setShowTitle(false); gernotbelger@9267: this.inputItem.setWidth(100); gernotbelger@9267: final StaticTextItem textItem = new StaticTextItem("IRRELEVANT_NAME"); gernotbelger@9267: gernotbelger@9267: textItem.setValue("[a]"); // internationalisieren? gernotbelger@9267: textItem.setShowTitle(false); gernotbelger@9267: form.setFields(this.inputItem); gernotbelger@9267: gernotbelger@9267: form.setFields(this.inputItem, textItem); gernotbelger@9267: gernotbelger@9267: layout.addMember(title); gernotbelger@9267: layout.addMember(form); gernotbelger@9267: return layout; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: @Override gernotbelger@9267: protected final Data[] getData() { // THIS is a Copy from abstractSingleItemPanel :-( gernotbelger@9267: final List errors = this.validate(); // do not allow advance state gernotbelger@9267: if (errors.size() > 0) { gernotbelger@9267: showErrors(errors); gernotbelger@9267: } gernotbelger@9267: if (this.inputItem != null && !this.inputItem.getValueAsString().isEmpty()) { gernotbelger@9267: final List data = new ArrayList(); gernotbelger@9267: gernotbelger@9267: final DataItem yearsdata = new DefaultDataItem(getDatakey(), getDatakey(), this.inputItem.getValueAsString().trim()); gernotbelger@9267: data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { yearsdata })); gernotbelger@9267: gernotbelger@9267: return data.toArray(new Data[data.size()]); gernotbelger@9267: } gernotbelger@9267: return new Data[0]; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: @Override gernotbelger@9267: public Canvas createOld(final DataList dataList) {// THIS is a Copy from abstractSingleItemPanel :-( gernotbelger@9267: final List items = dataList.getAll(); gernotbelger@9267: final Data years = getData(items, getDatakey()); gernotbelger@9267: final DataItem[] yearsItems = years.getItems(); gernotbelger@9267: gernotbelger@9267: final String v1 = yearsItems[0].getStringValue().replace(" ", ", "); gernotbelger@9267: gernotbelger@9267: final Label old = new Label(v1); gernotbelger@9267: final HLayout layout = new HLayout(); gernotbelger@9267: layout.setWidth("400px"); gernotbelger@9267: gernotbelger@9267: final Label label = new Label(dataList.getLabel()); gernotbelger@9267: label.setWidth("200px"); gernotbelger@9267: gernotbelger@9267: final Canvas back = getBackButton(dataList.getState()); gernotbelger@9267: gernotbelger@9267: layout.addMember(label); gernotbelger@9267: layout.addMember(old); gernotbelger@9267: layout.addMember(back); gernotbelger@9267: gernotbelger@9267: return layout; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: @Override gernotbelger@9267: public Canvas create(final DataList data) { gernotbelger@9267: final VLayout layout = new VLayout(); gernotbelger@9267: gernotbelger@9267: final Canvas submit = getNextButton(); gernotbelger@9267: final Canvas widget = createWidget(data); gernotbelger@9267: gernotbelger@9267: layout.addMember(widget); gernotbelger@9267: layout.addMember(submit); gernotbelger@9267: gernotbelger@9267: return layout; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: @Override gernotbelger@9267: public List validate() { gernotbelger@9267: final List errors = new ArrayList(); gernotbelger@9267: errors.addAll(ValidationHelper.checkForEmpty(this.inputItem, this.MSG)); gernotbelger@9267: try { gernotbelger@9267: Integer.valueOf(this.inputItem.getValueAsString()); gernotbelger@9267: } gernotbelger@9267: catch (final NumberFormatException e) { gernotbelger@9267: errors.add(this.MSG.error_invalid_integer()); gernotbelger@9267: } gernotbelger@9267: return errors; gernotbelger@9267: gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: }