view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java @ 9369:1a4d2ce77423

radio choice fix
author gernotbelger
date Thu, 02 Aug 2018 17:39:13 +0200
parents c7e5285d434f
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 })

        };
    }

}

http://dive4elements.wald.intevation.org