felix@899: package de.intevation.flys.client.client.ui; felix@899: felix@899: import com.google.gwt.core.client.GWT; felix@899: felix@899: import com.smartgwt.client.widgets.Button; christian@4183: christian@4183: import com.smartgwt.client.widgets.layout.VLayout; christian@4183: import com.smartgwt.client.widgets.layout.HLayout; christian@4183: christian@4182: import com.smartgwt.client.widgets.events.ClickHandler; christian@4183: import com.smartgwt.client.widgets.events.ClickEvent; christian@4183: felix@899: import com.smartgwt.client.widgets.grid.ListGrid; christian@4183: christian@4183: import de.intevation.flys.client.shared.model.Artifact; christian@4183: import de.intevation.flys.client.shared.model.User; christian@4183: import de.intevation.flys.client.shared.model.ToLoad; felix@899: felix@899: import de.intevation.flys.client.client.FLYSConstants; felix@899: felix@899: felix@914: /** ingo@3549: * Widget showing two Datacages and a add-this-button. ingo@3549: * Insert a record into a listgrid when add-this-button clicked. felix@914: */ felix@899: public class DatacagePairWidget felix@899: extends VLayout felix@899: { ingo@3549: /** i18n resource. */ christian@3533: protected FLYSConstants MSG = felix@1284: GWT.create(FLYSConstants.class); sascha@2905: felix@1284: /** The "remote" ListGrid to insert data to when add-button is clicked. */ sascha@2905: protected ListGrid grid; sascha@2905: felix@1284: /** First (upper) DataCage Grid. */ felix@1284: protected DatacageWidget firstDatacageWidget; sascha@2905: felix@1284: /** Second (lower) DataCage Grid. */ felix@1284: protected DatacageWidget secondDatacageWidget; felix@1298: sascha@2905: felix@1284: /** felix@1284: * felix@1284: * @param artifact Artifact to query datacage with. felix@1284: * @param user User to query datacage with. felix@1284: * @param outs outs to query datacage with. felix@1284: * @param grid Grid into which to insert selection of pairs. felix@1284: */ felix@1284: public DatacagePairWidget(Artifact artifact, felix@1283: User user, felix@1283: String outs, felix@1283: ListGrid grid) { felix@899: this.grid = grid; felix@899: felix@1283: HLayout hLayout = new HLayout(); felix@1349: firstDatacageWidget = new DatacageWidget( felix@1349: artifact, felix@1349: user, sascha@2905: outs, felix@1349: "load-system:true", felix@1349: false); felix@1349: secondDatacageWidget = new DatacageWidget( felix@1349: artifact, felix@1349: user, felix@1349: outs, felix@1349: "load-system:true", felix@1349: false); felix@1283: firstDatacageWidget.setIsMutliSelectable(false); felix@1283: secondDatacageWidget.setIsMutliSelectable(false); felix@899: felix@899: hLayout.addMember(firstDatacageWidget); felix@899: hLayout.addMember(secondDatacageWidget); felix@899: christian@3533: // TODO: icon christian@3533: Button plusBtn = new Button(MSG.datacage_add_pair()); christian@3533: plusBtn.setAutoFit(true); felix@899: plusBtn.addClickHandler(new ClickHandler() { felix@899: @Override felix@899: public void onClick(ClickEvent event) { felix@899: plusClicked(); felix@899: } felix@899: }); felix@899: felix@899: addMember(hLayout); felix@899: addMember(plusBtn); felix@899: } felix@899: felix@899: felix@899: /** felix@899: * Callback for add-button. felix@899: * Fires to load for every selected element and handler. felix@899: */ felix@899: public void plusClicked() { felix@899: ToLoad toLoad1 = firstDatacageWidget.getSelection(); felix@899: ToLoad toLoad2 = secondDatacageWidget.getSelection(); felix@899: christian@4183: // TODO further sanitize (toRecommendations.length) felix@899: if (toLoad1 == null || toLoad2 == null) { felix@899: return; felix@899: } felix@899: christian@4183: grid.addData(new RecommendationPairRecord( christian@4183: toLoad1.toRecommendations().get(0), christian@4183: toLoad2.toRecommendations().get(0))); felix@899: } felix@899: } felix@899: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :