felix@899: package de.intevation.flys.client.client.ui; felix@899: felix@899: import de.intevation.flys.client.client.event.DatacageHandler; felix@899: felix@899: import com.google.gwt.core.client.GWT; felix@899: felix@899: import com.google.gwt.user.client.rpc.AsyncCallback; felix@899: felix@899: import com.smartgwt.client.util.SC; felix@899: felix@899: import com.smartgwt.client.widgets.Button; felix@899: felix@899: import com.smartgwt.client.widgets.tree.Tree; felix@899: import com.smartgwt.client.widgets.tree.TreeGrid; felix@899: import com.smartgwt.client.widgets.tree.TreeNode; felix@899: felix@899: import com.smartgwt.client.types.TreeModelType; felix@899: felix@899: import com.smartgwt.client.widgets.layout.VLayout; felix@899: import com.smartgwt.client.widgets.layout.HLayout; felix@899: felix@899: import com.smartgwt.client.widgets.events.ClickHandler; felix@899: import com.smartgwt.client.widgets.events.ClickEvent; felix@899: felix@899: import com.smartgwt.client.widgets.grid.ListGrid; felix@899: import com.smartgwt.client.widgets.grid.ListGridRecord; felix@899: felix@899: import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent; felix@899: import com.smartgwt.client.widgets.grid.events.RecordDoubleClickHandler; felix@899: felix@899: import de.intevation.flys.client.shared.model.Artifact; felix@899: import de.intevation.flys.client.shared.model.User; felix@899: import de.intevation.flys.client.shared.model.ToLoad; felix@899: felix@899: import de.intevation.flys.client.client.FLYSConstants; felix@899: import de.intevation.flys.client.client.Config; felix@899: felix@899: import de.intevation.flys.client.client.services.MetaDataService; felix@899: import de.intevation.flys.client.client.services.MetaDataServiceAsync; felix@899: felix@899: import de.intevation.flys.client.shared.model.DataCageTree; felix@899: import de.intevation.flys.client.shared.model.DataCageNode; felix@899: import de.intevation.flys.client.shared.model.AttrList; felix@899: felix@899: import java.util.ArrayList; felix@899: import java.util.List; felix@899: import java.util.Stack; felix@899: felix@899: public class DatacagePairWidget felix@899: extends VLayout felix@899: { felix@899: protected FLYSConstants messages = felix@899: GWT.create(FLYSConstants.class); felix@899: felix@899: /** The "remote" ListGrid to insert data to when add-button is clicked. */ felix@899: protected ListGrid grid; felix@899: felix@899: /** First attribute-name for StringPairRecord. */ felix@899: protected static final String ATTRIBUTE_FIRST = "first"; felix@899: felix@899: /** Second attribute-name for StringPairRecord. */ felix@899: protected static final String ATTRIBUTE_SECOND = "second"; felix@899: felix@899: /** First (upper) DataCage Grid. */ felix@899: protected DatacageWidget firstDatacageWidget; felix@899: felix@899: /** Second (lower) DataCage Grid. */ felix@899: protected DatacageWidget secondDatacageWidget; felix@899: felix@899: felix@899: /** felix@899: * Two strings to be displayed in a GridList. felix@899: */ felix@899: protected class StringPairRecord extends ListGridRecord { felix@899: public StringPairRecord() { felix@899: } felix@899: felix@899: public StringPairRecord(String first, String second) { felix@899: setFirst(first); felix@899: setSecond(second); felix@899: } felix@899: felix@899: felix@899: public void setFirst(String first) { felix@899: setAttribute(ATTRIBUTE_FIRST, first); felix@899: } felix@899: felix@899: felix@899: public void setSecond(String second) { felix@899: setAttribute(ATTRIBUTE_SECOND, second); felix@899: } felix@899: } felix@899: felix@899: felix@899: /** felix@899: * felix@899: * @param artifact Artifact to query datacage with. felix@899: * @param user User to query datacage with. felix@899: * @param outs outs to query datacage with. felix@899: * @param grid Grid into which to insert selection of pairs. felix@899: */ felix@899: public DatacagePairWidget(Artifact artifact, User user, String outs, felix@899: ListGrid grid) { felix@899: this.grid = grid; felix@899: felix@899: HLayout hLayout = new HLayout(); felix@899: felix@899: firstDatacageWidget = new DatacageWidget(artifact, user, outs, false); felix@899: hLayout.addMember(firstDatacageWidget); felix@899: secondDatacageWidget = new DatacageWidget(artifact, user, outs, false); felix@899: hLayout.addMember(secondDatacageWidget); felix@899: felix@899: // TODO: i18n + icon felix@899: Button plusBtn = new Button("+"); 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: felix@899: if (toLoad1 == null || toLoad2 == null) { felix@899: return; felix@899: } felix@899: felix@899: //grid.addData(new StringPairRecord((String)toLoad1.getKeys().toArray()[0], (String)toLoad2.getKeys().toArray()[0])); felix@899: } felix@899: } felix@899: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :