Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/FixLocationPanel.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 | 6c24c857ccf9 |
children | 1a7cfeb1ff89 |
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.List; import org.dive4elements.river.client.client.FLYSConstants; import org.dive4elements.river.client.client.ui.DoubleRangePanel; 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.fields.FormItem; import com.smartgwt.client.widgets.form.fields.events.BlurEvent; import com.smartgwt.client.widgets.form.fields.events.BlurHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; /** * This UIProvider creates a panel for location or distance input. * * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ public class FixLocationPanel extends FixationPanel implements BlurHandler { /** The message class that provides i18n strings. */ protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); /** The constant name of the input field to enter locations. */ public static final String FIELD_VALUE_LOCATION = "location"; /** The constant name of the input field to enter distance. */ public static final String FIELD_VALUE_DISTANCE = "distance"; DoubleRangePanel inputPanel; double from; double to; double step; @Override public Canvas createWidget(final DataList data) { instances.put(this.artifact.getUuid(), this); final VLayout layout = new VLayout(); final Canvas title = new Label(this.MESSAGES.distance()); title.setHeight("25px"); this.inputPanel = new DoubleRangePanel(this.MESSAGES.unitFrom(), this.MESSAGES.unitTo(), this.MESSAGES.unitWidth(), 0d, 0d, 0d, 240, this); layout.addMember(title); layout.addMember(this.inputPanel); return layout; } @Override public Canvas createOld(final DataList dataList) { final List<Data> items = dataList.getAll(); final Data f = getData(items, "ld_from"); final Data t = getData(items, "ld_to"); final Data s = getData(items, "ld_step"); final DataItem[] fItems = f.getItems(); final DataItem[] tItems = t.getItems(); final DataItem[] sItems = s.getItems(); final StringBuilder sb = new StringBuilder(); sb.append(fItems[0].getLabel()); sb.append(" " + this.MESSAGES.unitFrom() + " "); sb.append(tItems[0].getLabel()); sb.append(" " + this.MESSAGES.unitTo() + " "); sb.append(sItems[0].getLabel()); sb.append(" " + this.MESSAGES.unitWidth()); 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 = saveRangeValues(this.inputPanel); if (valid) { final String f = Double.valueOf(this.from).toString(); final String t = Double.valueOf(this.to).toString(); final String s = Double.valueOf(this.step).toString(); final DataItem fi = new DefaultDataItem("ld_from", "ld_from", f); final DataItem ti = new DefaultDataItem("ld_to", "ld_to", t); final DataItem si = new DefaultDataItem("ld_step", "ld_step", s); data.add(new DefaultData("ld_from", null, null, new DataItem[] { fi })); data.add(new DefaultData("ld_to", null, null, new DataItem[] { ti })); data.add(new DefaultData("ld_step", null, null, new DataItem[] { si })); } // what else? return data.toArray(new Data[data.size()]); } protected boolean saveRangeValues(final DoubleRangePanel p) { final FormItem[] items = p.getFields(); final boolean valid = p.validateForm(); if (valid) { this.from = p.getFrom(); this.to = p.getTo(); this.step = p.getStep(); } return valid; } @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) { // TODO: check if revert makes sense this.inputPanel.setValues(fixInfo.getLowerKm(), fixInfo.getUpperKm(), 100d); } /** * This method is used to validate the inserted data in the form fields. * * @param event * The BlurEvent that gives information about the FormItem that * has been modified and its value. */ @Override public void onBlur(final BlurEvent event) { final FormItem item = event.getItem(); final String field = item.getFieldName(); if (field == null) { return; } final DoubleRangePanel p = (DoubleRangePanel) event.getForm(); } // public void dumpGWT(final String cid) { // GWT.log("Setting values for cId: " + cid); // GWT.log("River: " + this.fixInfo.getRiver()); // GWT.log("Date: " + this.fixInfo.getEventByCId(cid).getDate()); // GWT.log("Name: " + this.fixInfo.getEventByCId(cid).getDescription()); // } }