view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java @ 9066:b5d7a9d79837

uinfo.inundation_duration ui
author gernotbelger
date Fri, 11 May 2018 17:04:35 +0200
parents b6919e3c2d86
children 2ec912345359
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 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 String dataName;
    protected DynamicForm form;

    @Override
    public Canvas createOld(final DataList dataList) {
        final Data data = dataList.get(0);
        final DataItem[] items = data.getItems();
        // hat Einfluss auf Layout in der Übersicht (oben) nach Setzen des Wertes für den State
        final HLayout layout = new HLayout();
        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 Data data = dataList.get(0);
        final DataItem[] items = data.getItems();

        this.dataName = data.getLabel();

        final VLayout layout = new VLayout();
        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());
            elems.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);

        // initDefaultValues(dataList);

        return layout;
    }

    @Override
    protected Data[] getData() {
        final String value = this.form.getValueAsString("selection");
        final DataItem item = new DefaultDataItem(this.dataName, this.dataName, value);
        return new Data[] { new DefaultData(this.dataName, null, null, new DataItem[] { item }) };
    }

    protected String getTitle(final DataItem item) {
        return item.getLabel();
    }
}

http://dive4elements.wald.intevation.org