Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java @ 9698:812a6a3eaaf5
another try
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Wed, 20 Jan 2021 17:19:59 +0100 |
parents | 1a4d2ce77423 |
children |
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; import java.util.LinkedHashMap; import java.util.Map; 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 com.google.gwt.core.client.GWT; 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.RadioGroupItem; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; public class RadioPanel extends AbstractUIProvider { private static final long serialVersionUID = 3357071563224461043L; protected DynamicForm form; private final Map<String, String> valueLabelMap = new LinkedHashMap<String, String>(); private final String datakey; public RadioPanel(final String datakey) { this.datakey = datakey; } protected final String getDatakey() { return this.datakey; } @Override public Canvas createOld(final DataList dataList) { final HLayout layout = new HLayout(); for (final Data data : dataList.getAll()) { if (this.datakey.equals(data.getLabel())) { final DataItem[] items = data.getItems(); // hat Einfluss auf Layout in der Übersicht (oben) nach Setzen des Wertes für den State final Label label = new Label(dataList.getLabel()); final Label value = new Label(items[0].getLabel()); layout.setWidth(400); label.setWidth(200); // nicht ändern; scheint wohl ne Konstante zu sein! value.setWidth(180); // änderbar layout.setHeight(35); layout.addMember(label); layout.addMember(value); layout.addMember(getBackButton(dataList.getState())); } } return layout; } @Override public Canvas create(final DataList dataList) { final VLayout layout = new VLayout(); for (final Data data : dataList.getAll()) { if (this.datakey.equals(data.getLabel())) { final DataItem[] items = data.getItems(); final Label label = new Label(data.getDescription()); label.setWrap(false); final RadioGroupItem rgi = new RadioGroupItem("selection"); rgi.setWrapTitle(false); rgi.setWrap(false); rgi.setShowTitle(false); GWT.log("items: " + items.length); final LinkedHashMap<String, String> elems = new LinkedHashMap<String, String>(); for (final DataItem item : items) { GWT.log(item.getStringValue() + "; " + item.getLabel()); if (!item.getLabel().startsWith("ignore_")) { elems.put(item.getStringValue(), item.getLabel()); this.valueLabelMap.put(item.getStringValue(), item.getLabel()); } } rgi.setValueMap(elems); rgi.setDefaultValue(items[0].getStringValue()); this.form = new DynamicForm(); this.form.setFields(rgi); layout.setMembersMargin(10); layout.setHeight(35); label.setHeight(35); layout.setWidth(300); label.setWidth(300); layout.addMember(label); layout.addMember(this.form); layout.addMember(getNextButton()); layout.setMembersMargin(10); } } return layout; } @Override protected Data[] getData() { final String value = this.form.getValueAsString("selection"); final DataItem item = new DefaultDataItem("label_irrelevant", "description_irrelevant", value); return new Data[] { new DefaultData(this.datakey, "label_no_effect", "description_no_effect", new DataItem[] { item }) }; } }