view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java @ 9416:05405292a7ca

Navigationtheme panel now shows themes of dWt and WQ charts grayed out, if the current station is outside the valid range of the theme.
author gernotbelger
date Thu, 16 Aug 2018 16:28:03 +0200
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 })

        };
    }

}

http://dive4elements.wald.intevation.org