view flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacagePairWidget.java @ 899:6e678b5d08a4

New widget for future use. flys-client/trunk@2745 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 14 Sep 2011 14:35:10 +0000
parents
children 39a39e9be5af
line wrap: on
line source
package de.intevation.flys.client.client.ui;

import de.intevation.flys.client.client.event.DatacageHandler;

import com.google.gwt.core.client.GWT;

import com.google.gwt.user.client.rpc.AsyncCallback;

import com.smartgwt.client.util.SC;

import com.smartgwt.client.widgets.Button;

import com.smartgwt.client.widgets.tree.Tree;
import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeNode;

import com.smartgwt.client.types.TreeModelType;

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

import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.events.ClickEvent;

import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;

import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordDoubleClickHandler;

import de.intevation.flys.client.shared.model.Artifact;
import de.intevation.flys.client.shared.model.User;
import de.intevation.flys.client.shared.model.ToLoad;

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

import de.intevation.flys.client.client.services.MetaDataService;
import de.intevation.flys.client.client.services.MetaDataServiceAsync;

import de.intevation.flys.client.shared.model.DataCageTree;
import de.intevation.flys.client.shared.model.DataCageNode;
import de.intevation.flys.client.shared.model.AttrList;

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

public class DatacagePairWidget
extends      VLayout
{
    protected FLYSConstants messages =
        GWT.create(FLYSConstants.class);

    /** The "remote" ListGrid to insert data to when add-button is clicked. */
    protected ListGrid grid; 

    /** First attribute-name for StringPairRecord. */
    protected static final String ATTRIBUTE_FIRST  = "first";

    /** Second attribute-name for StringPairRecord. */
    protected static final String ATTRIBUTE_SECOND = "second";

    /** First (upper) DataCage Grid. */
    protected DatacageWidget firstDatacageWidget;

    /** Second (lower) DataCage Grid. */
    protected DatacageWidget secondDatacageWidget;


    /**
     * Two strings to be displayed in a GridList.
     */
    protected class StringPairRecord extends ListGridRecord {
        public StringPairRecord() {
        }

        public StringPairRecord(String first, String second) {
            setFirst(first);
            setSecond(second);
        }


        public void setFirst(String first) {
            setAttribute(ATTRIBUTE_FIRST, first);
        }


        public void setSecond(String second) {
            setAttribute(ATTRIBUTE_SECOND, second);
        }
    }


    /**
     *
     * @param artifact Artifact to query datacage with.
     * @param user     User to query datacage with.
     * @param outs     outs to query datacage with.
     * @param grid     Grid into which to insert selection of pairs.
     */
    public DatacagePairWidget(Artifact artifact, User user, String outs,
            ListGrid grid) {
        this.grid = grid;

        HLayout hLayout = new HLayout();

        firstDatacageWidget = new DatacageWidget(artifact, user, outs, false);
        hLayout.addMember(firstDatacageWidget);
        secondDatacageWidget = new DatacageWidget(artifact, user, outs, false);
        hLayout.addMember(secondDatacageWidget);

        // TODO: i18n + icon
        Button plusBtn = new Button("+");
        plusBtn.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                plusClicked();
            }
        });

        addMember(hLayout);
        addMember(plusBtn);
    }


    /**
     * Callback for add-button.
     * Fires to load for every selected element and handler.
     */
    public void plusClicked() {
        ToLoad toLoad1 = firstDatacageWidget.getSelection();
        ToLoad toLoad2 = secondDatacageWidget.getSelection();

        if (toLoad1 == null || toLoad2 == null) {
            return;
        }

        //grid.addData(new StringPairRecord((String)toLoad1.getKeys().toArray()[0], (String)toLoad2.getKeys().toArray()[0]));
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org