view flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadPeriodPanel.java @ 4241:49cb65d5932d

Improved the historical discharge calculation. The calculation now creates new HistoricalWQKms (new subclass of WQKms). Those WQKms are used to create new facets from (new) type 'HistoricalDischargeCurveFacet'. The chart generator is improved to support those facets.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Oct 2012 14:34:35 +0200
parents 015b219a97af
children abd304085bd4
line wrap: on
line source
package de.intevation.flys.client.client.ui.minfo;

import java.util.ArrayList;
import java.util.List;

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.TextItem;
import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

import de.intevation.flys.client.client.ui.AbstractUIProvider;
import de.intevation.flys.client.client.ui.IntegerRangePanel;
import de.intevation.flys.client.shared.model.Data;
import de.intevation.flys.client.shared.model.DataItem;
import de.intevation.flys.client.shared.model.DataList;
import de.intevation.flys.client.shared.model.DefaultData;
import de.intevation.flys.client.shared.model.DefaultDataItem;


public class SedLoadPeriodPanel
extends AbstractUIProvider
//extends SedLoadPanel
{

    private TextItem start;
    private TextItem end;

    public SedLoadPeriodPanel () {
    }

    @Override
    public Canvas createOld(DataList dataList) {
        List<Data> items = dataList.getAll();
        Data start = getData(items, "start");
        Data end = getData(items, "end");
        DataItem[] startItem = start.getItems();
        DataItem[] endItem = end.getItems();

        String v1 = startItem[0].getStringValue();
        String v2 = endItem[0].getStringValue();

        int v1i = 0;
        int v2i = 0;
        try {
            v1i = Integer.parseInt(v1);
            v2i = Integer.parseInt(v2);
        }
        catch (NumberFormatException nfe) {
            GWT.log(nfe.toString());
        }
        Label old = new Label(v1i + " - " + v2i);
        HLayout layout = new HLayout();
        layout.setWidth("400px");

        Label label = new Label(dataList.getLabel());
        label.setWidth("200px");

        Canvas back = getBackButton(dataList.getState());

        layout.addMember(label);
        layout.addMember(old);
        layout.addMember(back);

        return layout;
    }

    @Override
    public Canvas create(DataList data) {
        VLayout layout = new VLayout();

//        Canvas helper = createHelper();
//        this.helperContainer.addMember(helper);

        Canvas submit = getNextButton();
        Canvas widget = createWidget(data);

        layout.addMember(widget);
        layout.addMember(submit);
        return layout;
    }

    public Canvas createWidget(DataList data) {
        VLayout layout = new VLayout();

        Label title = new Label(data.get(0).getDescription());
        title.setHeight("25px");

        DynamicForm form = new DynamicForm();
        form.setNumCols(4);
        start = new TextItem(MSG.from());
        start.setValidators(new IsIntegerValidator());
        end = new TextItem(MSG.to());
        end.setValidators(new IsIntegerValidator());
        form.setFields(start, end);
//        inputPanel.setToTitle(MSG.to());
//        inputPanel.setFromTitle(MSG.from());
//        inputPanel.setShowTitle(false);

        layout.addMember(title);
        layout.addMember(form);

        return layout;
    }

    @Override
    protected Data[] getData() {
        int v1;
        int v2;
        try {
            v1 = Integer.parseInt(start.getValueAsString());
            v2 = Integer.parseInt(end.getValueAsString());
        }
        catch(NumberFormatException nfe) {
            // warn the user...
            return new Data[0];
        }
        if (validateRange(v1, v2)) {
            List<Data> data = new ArrayList<Data>();

            DataItem startItem = new DefaultDataItem("start", "start", start.getValueAsString());
            DataItem endItem   = new DefaultDataItem("end", "end", end.getValueAsString());
            data.add(new DefaultData(
                "start",
                null,
                null,
                new DataItem[] { startItem }));
            data.add(new DefaultData(
                "end",
                null,
                null,
                new DataItem[] { endItem }));

            return data.toArray(new Data[data.size()]);
        }
        return new Data[0];
    }

    protected boolean validateRange(int v1, int v2) {
        // TODO: Set useful years for validation. Current range is between start
        // of gregorian calendar and a year in the future...
        if ((v1 > 1582 && v1 < 2100) 
            && (v2 > 1582 && v2 < 2100)) {
            return true;
        }
        return false;
    }


}

http://dive4elements.wald.intevation.org