Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/FixGaugeSelectPanel.java @ 9559:ba0561906f81
Uinfo inundation duration workflow (vegetation zones, scenario), wms-config changed
author | gernotbelger |
---|---|
date | Wed, 24 Oct 2018 18:40:38 +0200 |
parents | c7e5285d434f |
children |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.client.client.ui.fixation; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import org.dive4elements.river.client.client.FLYSConstants; 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.shared.model.FixingsOverviewInfo; import com.google.gwt.core.client.GWT; 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.SelectItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; /** * This UIProvider creates a panel to select discharge classes / sectors * (german Abflussklassen). * * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ public class FixGaugeSelectPanel extends FixationPanel { /** The message class that provides i18n strings. */ protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); protected String first; protected String second; protected SelectItem from; protected SelectItem to; protected LinkedHashMap<String, String> mapValues; public FixGaugeSelectPanel() { this.mapValues = getMapValues(this.MESSAGES); } public static final LinkedHashMap<String, String> getMapValues(final FLYSConstants MSG) { final LinkedHashMap<String, String> mapValues = new LinkedHashMap<String, String>(); mapValues.put("0", MSG.gauge_mnq()); mapValues.put("1", MSG.gauge_mq()); mapValues.put("2", MSG.gauge_mhq()); mapValues.put("3", MSG.gauge_hq5()); return mapValues; } @Override public Canvas createWidget(final DataList data) { instances.put(this.artifact.getUuid(), this); final VLayout layout = new VLayout(); final Label title = new Label(this.MESSAGES.gauge_class()); title.setHeight(25); this.from = new SelectItem(this.MESSAGES.from()); this.to = new SelectItem(this.MESSAGES.to()); this.from.setShowTitle(false); this.to.setShowTitle(false); this.from.setValueMap(this.mapValues); this.from.setDefaultValues("0"); this.from.setWidth(160); this.to.setValueMap(this.mapValues); this.to.setDefaultValues("3"); this.to.setWidth(160); final DynamicForm form = new DynamicForm(); final StaticTextItem separator = new StaticTextItem("separator"); separator.setShowTitle(false); separator.setValue(this.MESSAGES.to()); form.setNumCols(5); form.setFields(this.from, separator, this.to); layout.addMember(title); layout.addMember(form); return layout; } @Override public Canvas createOld(final DataList dataList) { final List<Data> items = dataList.getAll(); final Data f = getData(items, "q1"); final Data t = getData(items, "q2"); final DataItem[] fItems = f.getItems(); final DataItem[] tItems = t.getItems(); final StringBuilder sb = new StringBuilder(); sb.append(this.mapValues.get(fItems[0].getLabel())); sb.append(" " + this.MESSAGES.to() + " "); sb.append(this.mapValues.get(tItems[0].getLabel())); final Label old = new Label(sb.toString()); old.setWidth(130); 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; } /** * This method returns the selected data. * * @return the selected/inserted data. */ @Override public Data[] getData() { final List<Data> data = new ArrayList<Data>(); final boolean valid = saveClassValues(); if (valid) { final DataItem firstItem = new DefaultDataItem("q1", "q1", this.first); final DataItem secItem = new DefaultDataItem("q2", "q2", this.second); data.add(new DefaultData("q1", null, null, new DataItem[] { firstItem })); data.add(new DefaultData("q2", null, null, new DataItem[] { secItem })); } return data.toArray(new Data[data.size()]); } @Override public void setValues(final String cid, final boolean checked) { // No user interaction, do nothing. } @Override public boolean renderCheckboxes() { // No selection, return false. return false; } @Override public void success(final FixingsOverviewInfo fixInfo) { } protected boolean saveClassValues() { final String v1 = this.from.getValueAsString(); final String v2 = this.to.getValueAsString(); try { final int v1i = Integer.parseInt(v1); final int v2i = Integer.parseInt(v2); if (v1i <= v2i) { this.first = v1; this.second = v2; return true; } } catch (final NumberFormatException nfe) { return false; } return false; } }