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; 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 String dataName; raimund@3508: protected DynamicForm form; sascha@3547: raimund@3508: @Override gernotbelger@9063: public Canvas createOld(final DataList dataList) { gernotbelger@9063: final Data data = dataList.get(0); gernotbelger@9063: final DataItem[] items = data.getItems(); raimund@3508: gernotbelger@9063: final HLayout layout = new HLayout(); gernotbelger@9063: final Label label = new Label(dataList.getLabel()); gernotbelger@9063: final Label value = new Label(items[0].getLabel()); raimund@3508: gernotbelger@9063: layout.setHeight(35); // hat Einfluss auf Layout in der Übersicht (oben) nach Setzen des Wertes für den State raimund@3508: layout.setWidth(400); raimund@3508: label.setWidth(200); raimund@3508: raimund@3508: layout.addMember(label); raimund@3508: layout.addMember(value); raimund@3508: layout.addMember(getBackButton(dataList.getState())); raimund@3508: raimund@3508: return layout; raimund@3508: } raimund@3508: raimund@3508: @Override gernotbelger@9063: public Canvas create(final DataList dataList) { gernotbelger@9063: final Data data = dataList.get(0); gernotbelger@9063: final DataItem[] items = data.getItems(); raimund@3508: raimund@3508: this.dataName = data.getLabel(); raimund@3508: gernotbelger@9063: final VLayout layout = new VLayout(); gernotbelger@9063: final Label label = new Label(data.getDescription()); gernotbelger@9063: final RadioGroupItem rgi = new RadioGroupItem("selection"); raimund@3508: rgi.setShowTitle(false); raimund@3508: GWT.log("items: " + items.length); gernotbelger@9063: final LinkedHashMap elems = new LinkedHashMap(); gernotbelger@9063: for (final DataItem item : items) { gernotbelger@9063: GWT.log(item.getStringValue() + "; " + item.getLabel()); gernotbelger@9063: elems.put(item.getStringValue(), item.getLabel()); raimund@3508: } raimund@3508: rgi.setValueMap(elems); raimund@3508: rgi.setDefaultValue(items[0].getStringValue()); raimund@3508: gernotbelger@9063: this.form = new DynamicForm(); gernotbelger@9063: this.form.setFields(rgi); raimund@3508: layout.setMembersMargin(10); raimund@3508: layout.setHeight(35); raimund@3508: label.setHeight(35); raimund@3508: raimund@3508: layout.addMember(label); gernotbelger@9063: layout.addMember(this.form); raimund@3508: layout.addMember(getNextButton()); raimund@3508: layout.setMembersMargin(10); raimund@3508: gernotbelger@9063: // initDefaultValues(dataList); 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@9063: final DataItem item = new DefaultDataItem(this.dataName, this.dataName, value); gernotbelger@9063: return new Data[] { new DefaultData(this.dataName, null, null, new DataItem[] { item }) }; raimund@3508: } raimund@3508: gernotbelger@9063: protected String getTitle(final DataItem item) { raimund@3508: return item.getLabel(); raimund@3508: } raimund@3508: }