teichmann@5861: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
teichmann@5861: * Software engineering by Intevation GmbH
teichmann@5861: *
teichmann@5993: * This file is Free Software under the GNU AGPL (>=v3)
teichmann@5861: * and comes with ABSOLUTELY NO WARRANTY! Check out the
teichmann@5993: * documentation coming with Dive4Elements River for details.
teichmann@5861: */
teichmann@5861:
teichmann@5835: package org.dive4elements.river.client.client.ui.fixation;
raimund@2505:
gernotbelger@9256: import java.util.ArrayList;
gernotbelger@9256: import java.util.LinkedHashMap;
gernotbelger@9256: import java.util.List;
gernotbelger@9256:
gernotbelger@9256: import org.dive4elements.river.client.client.FLYSConstants;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.Data;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.DataItem;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.DataList;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.DefaultData;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.DefaultDataItem;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.FixingsOverviewInfo;
gernotbelger@9256:
raimund@2505: import com.google.gwt.core.client.GWT;
raimund@2505: import com.smartgwt.client.widgets.Canvas;
raimund@2505: import com.smartgwt.client.widgets.Label;
christian@3832: import com.smartgwt.client.widgets.form.DynamicForm;
christian@3832: import com.smartgwt.client.widgets.form.fields.SelectItem;
christian@3832: import com.smartgwt.client.widgets.form.fields.StaticTextItem;
raimund@2505: import com.smartgwt.client.widgets.layout.HLayout;
raimund@2505: import com.smartgwt.client.widgets.layout.VLayout;
raimund@2505:
raimund@2505: /**
felix@6592: * This UIProvider creates a panel to select discharge classes / sectors
felix@6592: * (german Abflussklassen).
raimund@2505: *
raimund@2505: * @author Raimund Renkert
raimund@2505: */
gernotbelger@9256: public class FixGaugeSelectPanel extends FixationPanel {
raimund@2505: /** The message class that provides i18n strings. */
raimund@2505: protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
raimund@2505:
raimund@2505: protected String first;
raimund@2505: protected String second;
raimund@2505:
raimund@2505: protected SelectItem from;
raimund@2505: protected SelectItem to;
raimund@2505:
christian@3832: protected LinkedHashMap mapValues;
raimund@2887:
raimund@2505: public FixGaugeSelectPanel() {
gernotbelger@9256: this.mapValues = new LinkedHashMap();
gernotbelger@9256: this.mapValues.put("0", this.MESSAGES.gauge_mnq());
gernotbelger@9256: this.mapValues.put("1", this.MESSAGES.gauge_mq());
gernotbelger@9256: this.mapValues.put("2", this.MESSAGES.gauge_mhq());
gernotbelger@9256: this.mapValues.put("3", this.MESSAGES.gauge_hq5());
raimund@2505: }
raimund@2505:
christian@3832: @Override
gernotbelger@9256: public Canvas createWidget(final DataList data) {
raimund@2505: instances.put(this.artifact.getUuid(), this);
raimund@2505:
gernotbelger@9256: final VLayout layout = new VLayout();
raimund@2505:
gernotbelger@9256: final Label title = new Label(this.MESSAGES.gauge_class());
raimund@2505: title.setHeight(25);
raimund@2505:
gernotbelger@9256: this.from = new SelectItem(this.MESSAGES.from());
gernotbelger@9256: this.to = new SelectItem(this.MESSAGES.to());
raimund@2505:
gernotbelger@9256: this.from.setShowTitle(false);
gernotbelger@9256: this.to.setShowTitle(false);
gernotbelger@9256: this.from.setValueMap(this.mapValues);
gernotbelger@9256: this.from.setDefaultValues("0");
gernotbelger@9256: this.from.setWidth(160);
gernotbelger@9256: this.to.setValueMap(this.mapValues);
gernotbelger@9256: this.to.setDefaultValues("3");
gernotbelger@9256: this.to.setWidth(160);
raimund@2505:
gernotbelger@9256: final DynamicForm form = new DynamicForm();
gernotbelger@9256: final StaticTextItem separator = new StaticTextItem("separator");
raimund@2505: separator.setShowTitle(false);
gernotbelger@9256: separator.setValue(this.MESSAGES.to());
raimund@2505: form.setNumCols(5);
gernotbelger@9256: form.setFields(this.from, separator, this.to);
raimund@2505:
raimund@2505: layout.addMember(title);
raimund@2505: layout.addMember(form);
raimund@2505:
raimund@2505: return layout;
raimund@2505: }
raimund@2505:
raimund@2505: @Override
gernotbelger@9256: public Canvas createOld(final DataList dataList) {
gernotbelger@9256: final List items = dataList.getAll();
raimund@2505:
gernotbelger@9256: final Data f = getData(items, "q1");
gernotbelger@9256: final Data t = getData(items, "q2");
gernotbelger@9256: final DataItem[] fItems = f.getItems();
gernotbelger@9256: final DataItem[] tItems = t.getItems();
raimund@2505:
gernotbelger@9256: final StringBuilder sb = new StringBuilder();
gernotbelger@9256: sb.append(this.mapValues.get(fItems[0].getLabel()));
gernotbelger@9256: sb.append(" " + this.MESSAGES.to() + " ");
gernotbelger@9256: sb.append(this.mapValues.get(tItems[0].getLabel()));
raimund@2505:
gernotbelger@9256: final Label old = new Label(sb.toString());
raimund@2505: old.setWidth(130);
raimund@2505:
gernotbelger@9256: final HLayout layout = new HLayout();
raimund@2505: layout.setWidth("400px");
gernotbelger@9256: final Label label = new Label(dataList.getLabel());
raimund@2505: label.setWidth("200px");
raimund@2505:
gernotbelger@9256: final Canvas back = getBackButton(dataList.getState());
raimund@2505:
raimund@2505: layout.addMember(label);
raimund@2505: layout.addMember(old);
raimund@2505: layout.addMember(back);
raimund@2505: return layout;
raimund@2505: }
raimund@2505:
raimund@2505: /**
raimund@2505: * This method returns the selected data.
raimund@2505: *
raimund@2505: * @return the selected/inserted data.
raimund@2505: */
christian@3832: @Override
raimund@2505: public Data[] getData() {
gernotbelger@9256: final List data = new ArrayList();
raimund@2505:
gernotbelger@9256: final boolean valid = saveClassValues();
raimund@2505: if (valid) {
gernotbelger@9256: final DataItem firstItem = new DefaultDataItem("q1", "q1", this.first);
gernotbelger@9256: final DataItem secItem = new DefaultDataItem("q2", "q2", this.second);
gernotbelger@9256: data.add(new DefaultData("q1", null, null, new DataItem[] { firstItem }));
gernotbelger@9256: data.add(new DefaultData("q2", null, null, new DataItem[] { secItem }));
raimund@2505: }
sascha@3379: return data.toArray(new Data[data.size()]);
raimund@2505: }
raimund@2505:
raimund@2505: @Override
gernotbelger@9256: public void setValues(final String cid, final boolean checked) {
raimund@2505: // No user interaction, do nothing.
raimund@2505: }
raimund@2505:
raimund@2505: @Override
raimund@2505: public boolean renderCheckboxes() {
raimund@2505: // No selection, return false.
raimund@2505: return false;
raimund@2505: }
raimund@2505:
christian@3832: @Override
gernotbelger@9256: public void success(final FixingsOverviewInfo fixInfo) {
gernotbelger@9256: }
raimund@2517:
raimund@2505: protected boolean saveClassValues() {
gernotbelger@9256: final String v1 = this.from.getValueAsString();
gernotbelger@9256: final String v2 = this.to.getValueAsString();
raimund@2505: try {
gernotbelger@9256: final int v1i = Integer.parseInt(v1);
gernotbelger@9256: final int v2i = Integer.parseInt(v2);
raimund@2505: if (v1i <= v2i) {
raimund@2505: this.first = v1;
raimund@2505: this.second = v2;
raimund@2505: return true;
raimund@2505: }
raimund@2505: }
gernotbelger@9256: catch (final NumberFormatException nfe) {
raimund@2505: return false;
raimund@2505: }
raimund@2505: return false;
raimund@2505: }
raimund@2505: }