view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacageTwinPanel.java @ 9220:e3c2ae1887e8

Allow to filter contents of datacage on client side. Allow to override column label of datacage Some code cleanup
author gernotbelger
date Wed, 04 Jul 2018 12:00:51 +0200
parents af73fdd96920
children 84397da33d17
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.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 final IDatacageTwinPanelInfo leftInfo;
    private final IDatacageTwinPanelInfo rightInfo;

    private final int maxCount;
    private final String msgMaxCount;

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

        String getColumnLabel();
    }

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

        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(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