Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/BunduFixPeriodPanel.java @ 9289:fe207a8699f7
Changed optics of groups in module selection
author | gernotbelger |
---|---|
date | Tue, 24 Jul 2018 10:51:09 +0200 |
parents | 7337034eb5d5 |
children | e6958f0e72fa |
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.PanelHelper; import org.dive4elements.river.client.client.ui.StringArrayParseHelper; import org.dive4elements.river.client.client.ui.ValidationHelper; 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 org.dive4elements.river.client.shared.model.FixingsOverviewInfo.FixEvent; import org.dive4elements.river.client.shared.model.IntDataItem; import org.dive4elements.river.client.shared.model.IntegerArrayData; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.DateTimeFormat; 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.TextItem; 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 BunduFixPeriodPanel extends FixationPanel { private static final long serialVersionUID = 1L; /** The message class that provides i18n strings. */ protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); private TextItem inputItem; long start; long end; private final ArrayList<FixEvent> events = new ArrayList<FixEvent>(); protected String getDatakey() { return "singleyear"; } @Override public Canvas createWidget(final DataList data) { instances.put(this.artifact.getUuid(), this); final VLayout layout = new VLayout(); final Label title = new Label(data.get(0).getDescription()); title.setHeight("25px"); final DynamicForm form = new DynamicForm(); form.setNumCols(4); this.inputItem = PanelHelper.createItem("YEAR_INPUT"); this.inputItem.setShowHint(true); this.inputItem.setHint(this.MSG.common_input_hint_year()); this.inputItem.setShowHintInField(true); this.inputItem.setShowTitle(false); form.setFields(this.inputItem); layout.addMember(title); layout.addMember(form); return layout; } @Override public Canvas createOld(final DataList dataList) { final List<Data> items = dataList.getAll(); final Data years = getData(items, getDatakey()); final DataItem[] yearsItems = years.getItems(); final String v1 = yearsItems[0].getStringValue().replace(" ", ", "); // multi.. single only allowed.. TODO: make createOld expecting single (general // refactoring necessary) final Label old = new Label(v1); 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<String> errors = this.validate(); if (errors.size() > 0) { showErrors(errors); // TODO: do not allow advance state } long startMillis = 0; long endMillis = 0; final DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy"); if (this.inputItem != null && !this.inputItem.getValueAsString().isEmpty()) { final List<Data> data = new ArrayList<Data>(); final String bezugsjahr = StringArrayParseHelper.trimRawString(this.inputItem.getValueAsString()); final DataItem yearsdata = new DefaultDataItem(getDatakey(), getDatakey(), bezugsjahr); data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { yearsdata })); // start/end final int bezugsjahrInt = Integer.valueOf(bezugsjahr); startMillis = df.parse("01.01." + (bezugsjahrInt - 5)).getTime(); // ist; radio-auswahl erfolgt aber erst im nächsten schritt endMillis = df.parse("31.12." + (bezugsjahrInt + 5)).getTime(); // events: if (this.events.size() > 0) { // filter by start/end final ArrayList<FixEvent> temp = new ArrayList<FixEvent>(); for (final FixEvent e : this.events) { final long time = df.parse(e.getDate()).getTime(); if (!(time >= startMillis && time <= endMillis)) { temp.add(e); } } this.events.removeAll(temp); final IntDataItem[] arr = new IntDataItem[this.events.size()]; for (int i = 0, E = this.events.size(); i < E; i++) { try { final Integer v = new Integer(this.events.get(i).getCId()); arr[i] = new IntDataItem("id", "id", v.intValue()); } catch (final NumberFormatException nfe) { return data.toArray(new Data[data.size()]); } } final IntegerArrayData iad = new IntegerArrayData("events_temp", "events_temp", arr); data.add(iad); } return data.toArray(new Data[data.size()]); } return new Data[0]; } @Override public final List<String> validate() { final List<String> errors = new ArrayList<String>(); errors.addAll(ValidationHelper.checkForEmpty(this.inputItem, this.MSG)); try { final int year = Integer.valueOf(this.inputItem.getValueAsString()); if (year < 1000 || year > 9999) { errors.add(this.MSG.wrongFormat() + "(" + this.MSG.common_input_hint_year() + ")"); } } catch (final NumberFormatException e) { errors.add(this.MSG.error_invalid_integer()); } return errors; } @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) { for (final FixEvent fe : fixInfo.getEvents()) { this.events.add(fe); } } }