gernotbelger@9267: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9267: * Software engineering by Intevation GmbH gernotbelger@9267: * gernotbelger@9267: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9267: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9267: * documentation coming with Dive4Elements River for details. gernotbelger@9267: */ gernotbelger@9267: gernotbelger@9267: package org.dive4elements.river.client.client.ui.bundu; gernotbelger@9267: gernotbelger@9267: import java.util.ArrayList; gernotbelger@9267: import java.util.Iterator; gernotbelger@9267: import java.util.LinkedHashMap; gernotbelger@9267: import java.util.List; gernotbelger@9267: gernotbelger@9267: import org.dive4elements.river.client.client.ui.RadioPanel; gernotbelger@9267: import org.dive4elements.river.client.client.ui.fixation.FixEventSelect; gernotbelger@9267: import org.dive4elements.river.client.client.ui.fixation.FixGaugeSelectPanel; gernotbelger@9267: import org.dive4elements.river.client.shared.model.Data; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DataItem; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DataList; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DefaultData; gernotbelger@9267: import org.dive4elements.river.client.shared.model.DefaultDataItem; gernotbelger@9267: import org.dive4elements.river.client.shared.model.IntDataItem; gernotbelger@9267: import org.dive4elements.river.client.shared.model.IntegerArrayData; gernotbelger@9267: gernotbelger@9267: import com.google.gwt.i18n.client.DateTimeFormat; gernotbelger@9267: import com.smartgwt.client.widgets.Canvas; gernotbelger@9267: import com.smartgwt.client.widgets.Label; gernotbelger@9267: import com.smartgwt.client.widgets.layout.HLayout; gernotbelger@9267: import com.smartgwt.client.widgets.layout.VLayout; gernotbelger@9267: gernotbelger@9267: public class CustomFixationChoiceRadioPanel extends RadioPanel { gernotbelger@9267: gernotbelger@9267: private static final long serialVersionUID = 3357071563224461043L; gernotbelger@9267: gernotbelger@9267: private String events[]; gernotbelger@9267: private int bezugsjahr = 0; gernotbelger@9267: gernotbelger@9369: public CustomFixationChoiceRadioPanel() { gernotbelger@9369: super("fix_choice"); gernotbelger@9369: } gernotbelger@9369: gernotbelger@9267: @Override gernotbelger@9267: public Canvas createOld(final DataList dataList) { // wild überschrieben :-( gernotbelger@9267: final List list = dataList.getAll(); gernotbelger@9267: gernotbelger@9267: final VLayout root = new VLayout(); gernotbelger@9267: final HLayout layoutChoice = new HLayout(); gernotbelger@9267: layoutChoice.setHeight(35); gernotbelger@9267: layoutChoice.setWidth(400); gernotbelger@9267: gernotbelger@9267: for (final Data item : list) { gernotbelger@9369: if (getDatakey().equals(item.getLabel())) { gernotbelger@9267: final Label labelLabel = new Label(this.MSG.bundu_bezugswst_fix_choice_title()); gernotbelger@9267: final Label valueLabel = new Label(item.getItems()[0].getLabel()); gernotbelger@9267: gernotbelger@9267: labelLabel.setWidth(200); gernotbelger@9267: valueLabel.setWidth(180); gernotbelger@9267: layoutChoice.addMember(labelLabel); gernotbelger@9267: layoutChoice.addMember(valueLabel); gernotbelger@9267: final Canvas back = getBackButton(dataList.getState()); gernotbelger@9267: layoutChoice.addMember(back); gernotbelger@9267: root.addMember(layoutChoice); gernotbelger@9267: } gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: final Data data = getData(list, "events"); gernotbelger@9267: if (data != null) { gernotbelger@9267: gernotbelger@9267: final VLayout dataLayout = FixEventSelect.getEventDataLayout(data); gernotbelger@9267: gernotbelger@9267: final HLayout layout = new HLayout(); gernotbelger@9267: layout.setWidth("400px"); gernotbelger@9267: final Label label = new Label(this.MSG.bundu_bezugswst_auto_event_choice()); gernotbelger@9267: label.setWidth("200px"); gernotbelger@9267: layout.addMember(label); gernotbelger@9267: layout.addMember(dataLayout); gernotbelger@9267: root.addMember(layout); gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: return root; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: @Override gernotbelger@9267: public Canvas create(final DataList dataList) { // wild überschrieben :-( gernotbelger@9267: final Data data = dataList.get(0); gernotbelger@9267: final DataItem[] items = data.getItems(); gernotbelger@9267: for (final DataItem item : items) { gernotbelger@9267: if (item.getLabel().equals("ignore_events_temp")) { gernotbelger@9267: if (!item.getStringValue().equals("")) gernotbelger@9267: this.events = (item.getStringValue().split(";")); gernotbelger@9267: gernotbelger@9267: } else if (item.getLabel().equals("ignore_singleyear")) { gernotbelger@9267: this.bezugsjahr = Integer.valueOf(item.getStringValue()); gernotbelger@9267: } gernotbelger@9267: } gernotbelger@9267: return super.create(dataList); gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: @Override gernotbelger@9366: protected Data[] getData() { gernotbelger@9267: final String value = this.form.getValueAsString("selection"); gernotbelger@9267: final List data = new ArrayList(); gernotbelger@9267: gernotbelger@9267: // Default-values for data. they have to be reset, if user switches from auto to manual gernotbelger@9267: IntegerArrayData iad = new IntegerArrayData("events", "events", new IntDataItem[] {}); gernotbelger@9267: DataItem firstItem = new DefaultDataItem(null, null, ""); gernotbelger@9267: DataItem secItem = new DefaultDataItem(null, null, ""); gernotbelger@9267: DataItem startItem = new DefaultDataItem(null, null, ""); gernotbelger@9267: DataItem endItem = new DefaultDataItem(null, null, ""); gernotbelger@9267: gernotbelger@9369: final DataItem item = new DefaultDataItem(getDatakey(), getDatakey(), value); gernotbelger@9369: data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { item })); gernotbelger@9267: gernotbelger@9366: if (value.equals("state.bundu.wst.fix.auto")) { gernotbelger@9267: // set gauges: (do not appear in create old, but need to be set for calculation purpose gernotbelger@9267: final LinkedHashMap map = FixGaugeSelectPanel.getMapValues(this.MSG); gernotbelger@9267: final String mnq = this.MSG.gauge_mnq(); gernotbelger@9267: final String hq5 = this.MSG.gauge_hq5(); gernotbelger@9267: String firstKey = "-1"; gernotbelger@9267: String secondKey = "-1"; gernotbelger@9267: // irgendwie hässlich, aber sicher (man kann die Map ändern und kriegt hier den richtigen Index) gernotbelger@9267: final Iterator iterator = map.keySet().iterator(); gernotbelger@9267: while (iterator.hasNext()) { gernotbelger@9267: final String key = iterator.next(); gernotbelger@9267: final String mapValue = map.get(key); gernotbelger@9267: if (mnq.equals(mapValue)) { gernotbelger@9267: firstKey = key; gernotbelger@9267: } gernotbelger@9267: if (hq5.equals(mapValue)) { gernotbelger@9267: secondKey = key; gernotbelger@9267: } gernotbelger@9267: } gernotbelger@9267: firstItem = new DefaultDataItem("q1", "q1", firstKey); gernotbelger@9267: secItem = new DefaultDataItem("q2", "q2", secondKey); gernotbelger@9267: gernotbelger@9267: // make start, end gernotbelger@9267: final DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy"); gernotbelger@9267: /// EVENT SELECTION... have to appear in selectOld somehow... gernotbelger@9267: startItem = new DefaultDataItem("start", "start", String.valueOf(df.parse("01.01." + (this.bezugsjahr - 5)).getTime())); gernotbelger@9267: endItem = new DefaultDataItem("end", "end", String.valueOf(df.parse("31.12." + (this.bezugsjahr + 5)).getTime())); gernotbelger@9267: gernotbelger@9267: /// MAKE EVENTS (muss glaube ich zum schluss erst erscheinen... gernotbelger@9267: if (this.events != null) { gernotbelger@9267: final IntDataItem[] arr = new IntDataItem[this.events.length]; gernotbelger@9267: for (int i = 0; i < this.events.length; i++) { gernotbelger@9267: try { gernotbelger@9267: final String s = this.events[i]; gernotbelger@9267: final Integer v = new Integer(s); gernotbelger@9267: arr[i] = new IntDataItem("id", "id", v.intValue()); gernotbelger@9267: } gernotbelger@9267: catch (final NumberFormatException nfe) { gernotbelger@9267: continue; gernotbelger@9267: } gernotbelger@9267: } gernotbelger@9267: iad = new IntegerArrayData("events", "events", arr); // overrides "real" events with events_temp from previous state... gernotbelger@9267: } gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: data.add(iad); gernotbelger@9267: gernotbelger@9267: data.add(new DefaultData("q1", null, null, new DataItem[] { firstItem })); gernotbelger@9267: data.add(new DefaultData("q2", null, null, new DataItem[] { secItem })); gernotbelger@9267: data.add(new DefaultData("start", null, null, new DataItem[] { startItem })); gernotbelger@9267: data.add(new DefaultData("end", null, null, new DataItem[] { endItem })); gernotbelger@9267: gernotbelger@9267: return data.toArray(new Data[data.size()]); gernotbelger@9267: gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: }