view flys-client/src/main/java/de/intevation/flys/client/client/ui/fixation/FixPeriodPanel.java @ 2517:8f528f5ae137

Added filter object class and scrollable chart to helper panel. flys-client/trunk@4392 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 11 May 2012 12:42:29 +0000
parents 87ac5c532523
children a911e2968cb1
line wrap: on
line source
package de.intevation.flys.client.client.ui.fixation;

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

import com.google.gwt.core.client.GWT;
import com.smartgwt.client.util.SC;

import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;

import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.DateRangeItem;

import de.intevation.flys.client.client.FLYSConstants;

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;

/**
 * This UIProvider creates a panel for location or distance input.
 *
 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
 */
public class FixPeriodPanel
extends      FixationPanel
{
    /** The message class that provides i18n strings. */
    protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);

    DateRangeItem inputPanel;

    long start;
    long end;

    public FixPeriodPanel() {
        htmlOverview = "";
    }

    public Canvas createWidget(DataList data) {
        instances.put(this.artifact.getUuid(), this);

        VLayout layout = new VLayout();

        Label title = new Label(MESSAGES.period());
        title.setHeight("25px");

        DynamicForm form = new DynamicForm();
        inputPanel = new DateRangeItem();
        inputPanel.setToTitle(MESSAGES.to());
        inputPanel.setFromTitle(MESSAGES.from());
        inputPanel.setShowTitle(false);
        form.setFields(inputPanel);

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

        return layout;
    }

    @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();

        StringBuilder sb = new StringBuilder();
        sb.append(startItem[0].getLabel() + " - ");
        sb.append(endItem[0].getLabel());

        Label old = new Label(sb.toString());
        old.setWidth(130);

        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;
    }


    /**
     * This method returns the selected data.
     *
     * @return the selected/inserted data.
     */
    public Data[] getData() {
        List<Data> data = new ArrayList<Data>();

        boolean valid = saveDateValues();
        if(valid) {
            String start = Long.valueOf(this.start).toString();
            String end   = Long.valueOf(this.end).toString();
            DataItem startItem = new DefaultDataItem("start", "start", start);
            DataItem endItem   = new DefaultDataItem("end", "end", end);
            data.add(new DefaultData(
                "start",
                null,
                null,
                new DataItem[] { startItem }));
            data.add(new DefaultData(
                "end",
                null,
                null,
                new DataItem[] { endItem }));
        }

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


    @Override
    public void setValues(String cid, boolean checked) {
        // No user interaction, do nothing.
    }


    @Override
    public boolean renderCheckboxes() {
        // No selection, return false.
        return false;
    }


    public void setFilter(FixFilter filter) {
        this.fixFilter = filter;
    }


    public FixFilter getFilter() {
        return this.fixFilter;
    }


    protected boolean saveDateValues() {
        Date st = inputPanel.getFromDate();
        Date en = inputPanel.getToDate();
        if (st == null || en == null) {
            SC.warn(MESSAGES.error_wrong_date());
            return false;
        }

        long start = st.getTime();
        long end = en.getTime();

        if (start <= end) {
            this.start = start;
            this.end = end;
            return true;
        }
        return false;
    }
}

http://dive4elements.wald.intevation.org