Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacagePairWidget.java @ 4182:ad2489b595d7
Fix for issue #967
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Tue, 16 Oct 2012 12:44:15 +0200 |
parents | 6a8f83c538e3 |
children | 1755a1bfe5ce |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import com.google.gwt.core.client.GWT; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.shared.model.Artifact; import de.intevation.flys.client.shared.model.Recommendation; import de.intevation.flys.client.shared.model.ToLoad; import de.intevation.flys.client.shared.model.User; import java.util.List; /** * Widget showing two Datacages and a add-this-button. * Insert a record into a listgrid when add-this-button clicked. */ public class DatacagePairWidget extends VLayout { /** i18n resource. */ protected FLYSConstants MSG = GWT.create(FLYSConstants.class); /** The "remote" ListGrid to insert data to when add-button is clicked. */ protected ListGrid grid; /** First (upper) DataCage Grid. */ protected DatacageWidget firstDatacageWidget; /** Second (lower) DataCage Grid. */ protected DatacageWidget secondDatacageWidget; /** * * @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, "load-system:true", false); secondDatacageWidget = new DatacageWidget( artifact, user, outs, "load-system:true", false); firstDatacageWidget.setIsMutliSelectable(false); secondDatacageWidget.setIsMutliSelectable(false); hLayout.addMember(firstDatacageWidget); hLayout.addMember(secondDatacageWidget); // TODO: icon Button plusBtn = new Button(MSG.datacage_add_pair()); plusBtn.setAutoFit(true); 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; } List<Recommendation> toLoad1Rec = toLoad1.toRecommendations(); List<Recommendation> toLoad2Rec = toLoad2.toRecommendations(); if (toLoad1Rec.size() <= 0 || toLoad2Rec.size() <= 0) { return; } grid.addData(new RecommendationPairRecord(toLoad1Rec.get(0), toLoad2Rec.get(0))); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :