Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/BedHeightsDatacagePanel.java @ 8852:8f6d6d26e96f
Refaktored the DatacageTwinPanel so it is reusable.
author | gernotbelger |
---|---|
date | Thu, 18 Jan 2018 18:32:30 +0100 |
parents | 22169da49f9b |
children | 28df64078f27 |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/BedHeightsDatacagePanel.java Thu Jan 18 18:26:30 2018 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/BedHeightsDatacagePanel.java Thu Jan 18 18:32:30 2018 +0100 @@ -8,83 +8,51 @@ package org.dive4elements.river.client.client.ui.minfo; +import java.util.List; + +import org.dive4elements.river.client.client.ui.AbstractPairRecommendationPanel; +import org.dive4elements.river.client.client.ui.DatacageWidget; +import org.dive4elements.river.client.client.ui.DefaultDatacageTwinPanelInfo; +import org.dive4elements.river.client.client.ui.RecommendationPairRecord; +import org.dive4elements.river.client.client.ui.WaterlevelTwinPanelValidator; +import org.dive4elements.river.client.shared.model.DataList; +import org.dive4elements.river.client.shared.model.ToLoad; +import org.dive4elements.river.client.shared.model.User; + import com.google.gwt.core.client.GWT; - import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.Canvas; - 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.VLayout; import com.smartgwt.client.widgets.tree.TreeNode; -import org.dive4elements.river.client.client.FLYSConstants; - -import org.dive4elements.river.client.client.services.LoadArtifactServiceAsync; -import org.dive4elements.river.client.client.services.RemoveArtifactServiceAsync; - -import org.dive4elements.river.client.client.ui.DatacageTwinPanel; -import org.dive4elements.river.client.client.ui.DatacageWidget; -import org.dive4elements.river.client.client.ui.RecommendationPairRecord; - -import org.dive4elements.river.client.shared.model.DataList; -import org.dive4elements.river.client.shared.model.ToLoad; - -import org.dive4elements.river.client.shared.model.Recommendation; -import org.dive4elements.river.client.shared.model.User; - -import java.util.ArrayList; -import java.util.List; - -// TODO Probably better to branch off AbstractUIProvider. public class BedHeightsDatacagePanel -extends DatacageTwinPanel { - - protected static FLYSConstants MSG = GWT.create(FLYSConstants.class); - - /** - * List to track previously selected but now removed pairs. (Needed to - * be able to identify artifacts that can be removed from the collection. - */ - protected List<RecommendationPairRecord> removedPairs = - new ArrayList<RecommendationPairRecord>(); - - /** Service handle to clone and add artifacts to collection. */ - LoadArtifactServiceAsync loadArtifactService = GWT.create( - org.dive4elements.river.client.client.services.LoadArtifactService.class); - - /** Service to remove artifacts from collection. */ - RemoveArtifactServiceAsync removeArtifactService = GWT.create( - org.dive4elements.river.client.client.services.RemoveArtifactService.class); - - protected DatacageWidget datacage; +extends AbstractPairRecommendationPanel { public BedHeightsDatacagePanel(User user) { - super(user); + // FIXME: This will lead to a bad error message in English (i.e. contains something about waterlevels), for M-Info/Bed-Differences calculation + // BUT: this is the behavior of 3.2.1 (because of sloppy derivation), so we do not change it now + super(user, new WaterlevelTwinPanelValidator(), new DefaultDatacageTwinPanelInfo("bedheight", null), new DefaultDatacageTwinPanelInfo("bedheight", null) ); } - /** - * Creates the graphical representation and interaction widgets for the data. - * @param dataList the data. - * @return graphical representation and interaction widgets for data. - */ @Override - public Canvas create(DataList dataList) { + protected Canvas createChooserWidgets(final Canvas widget, final DataList dataList, final User user, final ListGrid differencesList) { GWT.log("createData()"); - Canvas widget = createWidget(); Canvas submit = getNextButton(); - datacage = new DatacageWidget( + + final DatacageWidget datacage = new DatacageWidget( this.artifact, user, "minfo_diff_panel", "load-system:true", false); - Button plusBtn = new Button(MSG.datacage_add_pair()); + Button plusBtn = new Button(msg().datacage_add_pair()); plusBtn.setAutoFit(true); plusBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - plusClicked(); + plusClicked(datacage, differencesList); } }); @@ -98,29 +66,19 @@ layout.setMembersMargin(10); this.helperContainer.addMember(helperLayout); - populateGrid(dataList, "bedheight"); - return layout; } - public void adjustRecommendation(Recommendation recommendation) { - recommendation.setFactory("bedheight"); - } - - @Override - protected String createDataString(String artifact, Recommendation recommendation) { - return createDataString(artifact, recommendation, "bedheight"); - } - /** * Callback for add-button. * Fires to load for every selected element and handler. + * @param differencesList */ - public void plusClicked() { + protected final static void plusClicked( final DatacageWidget datacage, ListGrid differencesList ) { List<TreeNode> selection = datacage.getPlainSelection(); if (selection == null || selection.isEmpty()) { - SC.say(MSG.warning()); + SC.say(msg().warning()); return; }