view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacageTwinPanel.java @ 9227:84397da33d17

Allow to control specific behaviour in TwinDatacagePanel Implemented client logic of 'intelligent datacage filtering' for SINFO
author gernotbelger
date Wed, 04 Jul 2018 18:28:08 +0200
parents e3c2ae1887e8
children 839b2aa84dd0
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 org.dive4elements.river.client.client.ui.DatacagePairWidget.IDatacagePairControler;
import org.dive4elements.river.client.shared.model.DataList;
import org.dive4elements.river.client.shared.model.User;

import com.google.gwt.core.client.GWT;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

/**
 * A {@link AbstractPairRecommendationPanel} that uses a 'TwinDatacage' in the help-input area.
 * DatacagePairWidget which is put in the input-helper area.
 */
public abstract class DatacageTwinPanel extends AbstractPairRecommendationPanel {

    private static final long serialVersionUID = 1L;

    private final IDatacageTwinPanelInfo leftInfo;
    private final IDatacageTwinPanelInfo rightInfo;

    private final int maxCount;
    private final String msgMaxCount;

    private final IDatacagePairControler controler;

    public static interface IDatacageTwinPanelInfo extends IRecommendationInfo {
        String getOuts();

        String getColumnLabel();
    }

    public DatacageTwinPanel(final User user, final IValidator validator, final IDatacagePairControler controler, final IDatacageTwinPanelInfo leftInfo,
            final IDatacageTwinPanelInfo rightInfo,
            final int maxCount, final String msgMaxCount) {
        super(user, validator, leftInfo, rightInfo);

        this.controler = controler;
        this.maxCount = maxCount;
        this.msgMaxCount = msgMaxCount;
        this.leftInfo = leftInfo;
        this.rightInfo = rightInfo;
    }

    @Override
    protected final Canvas createChooserWidgets(final Canvas widget, final DataList dataList, final User user, final ListGrid differencesList) {
        GWT.log("createData()");

        final Canvas submit = getNextButton();

        final VLayout layout = new VLayout();
        final HLayout helperLayout = new HLayout();

        final String leftOuts = this.leftInfo.getOuts();
        final String leftLabel = this.leftInfo.getColumnLabel();
        final DatacageWidgetData leftData = new DatacageWidgetData(this.artifact, user, leftOuts, "load-system:true", false, leftLabel);

        final String rightOuts = this.rightInfo.getOuts();
        final String rightLabel = this.rightInfo.getColumnLabel();
        final DatacageWidgetData rightData = new DatacageWidgetData(this.artifact, user, rightOuts, "load-system:true", false, rightLabel);

        helperLayout.addMember(new DatacagePairWidget(this.controler, leftData, rightData, differencesList, this.maxCount, this.msgMaxCount));

        if (dataList != null && dataList.get(0) != null && dataList.get(0).getDescription() != null) {
            final Label title = new Label(dataList.get(0).getDescription());
            title.setHeight("25px");
            layout.addMember(title);
        }

        layout.addMember(widget);
        layout.addMember(submit);
        layout.setMembersMargin(10);
        this.helperContainer.addMember(helperLayout);

        return layout;
    }
}

http://dive4elements.wald.intevation.org