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; raimund@3508: gernotbelger@9063: import java.util.LinkedHashMap; gernotbelger@9173: import java.util.Map; raimund@3508: teichmann@5835: import org.dive4elements.river.client.shared.model.Data; teichmann@5835: import org.dive4elements.river.client.shared.model.DataItem; teichmann@5835: import org.dive4elements.river.client.shared.model.DataList; teichmann@5835: import org.dive4elements.river.client.shared.model.DefaultData; teichmann@5835: import org.dive4elements.river.client.shared.model.DefaultDataItem; raimund@3508: gernotbelger@9063: import com.google.gwt.core.client.GWT; gernotbelger@9063: import com.smartgwt.client.widgets.Canvas; gernotbelger@9063: import com.smartgwt.client.widgets.Label; gernotbelger@9063: import com.smartgwt.client.widgets.form.DynamicForm; gernotbelger@9063: import com.smartgwt.client.widgets.form.fields.RadioGroupItem; gernotbelger@9063: import com.smartgwt.client.widgets.layout.HLayout; gernotbelger@9063: import com.smartgwt.client.widgets.layout.VLayout; christian@4184: raimund@3508: public class RadioPanel extends AbstractUIProvider { raimund@3508: christian@4184: private static final long serialVersionUID = 3357071563224461043L; christian@4184: raimund@3508: protected DynamicForm form; gernotbelger@9173: private final Map valueLabelMap = new LinkedHashMap(); sascha@3547: gernotbelger@9369: private final String datakey; gernotbelger@9369: gernotbelger@9369: public RadioPanel(final String datakey) { gernotbelger@9369: this.datakey = datakey; gernotbelger@9369: } gernotbelger@9369: gernotbelger@9369: protected final String getDatakey() { gernotbelger@9369: return this.datakey; gernotbelger@9369: } gernotbelger@9369: raimund@3508: @Override gernotbelger@9063: public Canvas createOld(final DataList dataList) { gernotbelger@9063: final HLayout layout = new HLayout(); gernotbelger@9369: for (final Data data : dataList.getAll()) { gernotbelger@9369: if (this.datakey.equals(data.getLabel())) { gernotbelger@9369: final DataItem[] items = data.getItems(); gernotbelger@9369: // hat Einfluss auf Layout in der Übersicht (oben) nach Setzen des Wertes für den State raimund@3508: gernotbelger@9369: final Label label = new Label(dataList.getLabel()); gernotbelger@9369: final Label value = new Label(items[0].getLabel()); gernotbelger@9369: layout.setWidth(400); gernotbelger@9369: label.setWidth(200); // nicht ändern; scheint wohl ne Konstante zu sein! gernotbelger@9369: value.setWidth(180); // änderbar gernotbelger@9369: layout.setHeight(35); raimund@3508: gernotbelger@9369: layout.addMember(label); gernotbelger@9369: layout.addMember(value); gernotbelger@9369: layout.addMember(getBackButton(dataList.getState())); gernotbelger@9369: gernotbelger@9369: } gernotbelger@9369: } raimund@3508: return layout; raimund@3508: } raimund@3508: raimund@3508: @Override gernotbelger@9063: public Canvas create(final DataList dataList) { gernotbelger@9063: final VLayout layout = new VLayout(); gernotbelger@9369: for (final Data data : dataList.getAll()) { gernotbelger@9369: if (this.datakey.equals(data.getLabel())) { gernotbelger@9369: final DataItem[] items = data.getItems(); gernotbelger@9369: gernotbelger@9369: final Label label = new Label(data.getDescription()); gernotbelger@9369: label.setWrap(false); gernotbelger@9369: final RadioGroupItem rgi = new RadioGroupItem("selection"); gernotbelger@9369: rgi.setWrapTitle(false); gernotbelger@9369: rgi.setWrap(false); gernotbelger@9369: rgi.setShowTitle(false); gernotbelger@9369: GWT.log("items: " + items.length); gernotbelger@9369: final LinkedHashMap elems = new LinkedHashMap(); gernotbelger@9369: for (final DataItem item : items) { gernotbelger@9369: GWT.log(item.getStringValue() + "; " + item.getLabel()); gernotbelger@9369: if (!item.getLabel().startsWith("ignore_")) { gernotbelger@9369: elems.put(item.getStringValue(), item.getLabel()); gernotbelger@9369: this.valueLabelMap.put(item.getStringValue(), item.getLabel()); gernotbelger@9369: } gernotbelger@9369: } gernotbelger@9369: rgi.setValueMap(elems); gernotbelger@9369: rgi.setDefaultValue(items[0].getStringValue()); gernotbelger@9369: gernotbelger@9369: this.form = new DynamicForm(); gernotbelger@9369: this.form.setFields(rgi); gernotbelger@9369: layout.setMembersMargin(10); gernotbelger@9369: layout.setHeight(35); gernotbelger@9369: label.setHeight(35); gernotbelger@9369: layout.setWidth(300); gernotbelger@9369: label.setWidth(300); gernotbelger@9369: gernotbelger@9369: layout.addMember(label); gernotbelger@9369: layout.addMember(this.form); gernotbelger@9369: layout.addMember(getNextButton()); gernotbelger@9369: layout.setMembersMargin(10); gernotbelger@9369: gernotbelger@9267: } raimund@3508: } raimund@3508: return layout; raimund@3508: } raimund@3508: raimund@3508: @Override raimund@3508: protected Data[] getData() { gernotbelger@9063: final String value = this.form.getValueAsString("selection"); gernotbelger@9173: gernotbelger@9173: final DataItem item = new DefaultDataItem("label_irrelevant", "description_irrelevant", value); gernotbelger@9173: gernotbelger@9369: return new Data[] { new DefaultData(this.datakey, "label_no_effect", "description_no_effect", new DataItem[] { item }) gernotbelger@9369: gernotbelger@9173: }; raimund@3508: } raimund@3508: raimund@3508: }