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: }