view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/CollisionLoadEpochPanel.java @ 9079:aafae1ab25f0

epoch-panels, single-input-panels
author gernotbelger
date Wed, 23 May 2018 17:30:24 +0200
parents fc02833dbcc1
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.sinfo;

import org.dive4elements.river.client.client.ui.AbstractEpochPanel;
import org.dive4elements.river.client.shared.model.DataList;

import com.google.gwt.core.client.GWT;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.widgets.Button;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

public class CollisionLoadEpochPanel extends AbstractEpochPanel {

    private static final long serialVersionUID = 1L;

    @Override
    protected String getDatakey() {
        return "epochs";
    }

    public CollisionLoadEpochPanel() {
        super(Type.multi);
    }

    @Override
    protected Canvas createWidget(final DataList data) {
        final HLayout input = new HLayout();
        final VLayout root = new VLayout();
        final VLayout grid = new VLayout();
        final VLayout intFields = new VLayout();
        final Button add = new Button(this.MSG.add_date());
        final ListGrid elements = createListGrid();
        elements.setWidth(185);
        elements.setHeight(120);

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

        final DynamicForm form = new DynamicForm();
        form.setNumCols(4);
        final TextItem start = createStartInputItem(this.MSG.from());
        final TextItem end = createEndInputItem(this.MSG.to());

        form.setFields(start, end);
        add.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(final ClickEvent ce) {
                final String v1 = start.getValueAsString();
                final String v2 = end.getValueAsString();
                if (v1 == null || v2 == null) {
                    return;
                }
                if (!isValidEpoch(v1, v2)) {
                    return;
                }
                final ListGridRecord r = new ListGridRecord();
                r.setAttribute("from", v1);
                r.setAttribute("to", v2);
                elements.addData(r);
            }
        });

        final Label sel = new Label(this.MSG.select());
        sel.setHeight(25);

        final ListGridField from = new ListGridField("from", this.MSG.from());
        final ListGridField to = new ListGridField("to", this.MSG.to());
        from.setWidth(70);
        to.setWidth(70);

        final ListGridField removeField = new ListGridField("_removeRecord", "Remove Record") {
            {
                setType(ListGridFieldType.ICON);
                setIcon(GWT.getHostPageBaseURL() + CollisionLoadEpochPanel.this.MSG.removeFeature());
                setCanEdit(false);
                setCanFilter(false);
                setCanSort(false);
                setCanGroupBy(false);
                setCanFreeze(false);
                setWidth(25);
            }
        };

        elements.addRecordClickHandler(new RecordClickHandler() {
            @Override
            public void onRecordClick(final RecordClickEvent event) {
                // Just handle remove-clicks
                if (!event.getField().getName().equals(removeField.getName())) {
                    return;
                }
                event.getViewer().removeData(event.getRecord());
            }
        });

        elements.setFields(from, to, removeField);

        intFields.addMember(form);
        intFields.addMember(add);
        grid.addMember(sel);
        grid.addMember(elements);
        input.addMember(intFields);
        input.addMember(grid);
        root.addMember(title);
        root.addMember(input);

        return root;
    }

}

http://dive4elements.wald.intevation.org