Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacagePairWidget.java @ 9227:84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
Implemented client logic of 'intelligent datacage filtering' for SINFO
author | gernotbelger |
---|---|
date | Wed, 04 Jul 2018 18:28:08 +0200 |
parents | e3c2ae1887e8 |
children |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacagePairWidget.java Wed Jul 04 17:14:16 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacagePairWidget.java Wed Jul 04 18:28:08 2018 +0200 @@ -25,8 +25,26 @@ * Insert a record into a listgrid when add-this-button clicked. */ public class DatacagePairWidget extends VLayout { + + /** + * Allows for advanced controlling of the behavior of this pair widget. + */ + public static interface IDatacagePairControler { + void setup(DatacageWidget leftWidget, DatacageWidget rightWidget, HLayout toolbarLayout); + } + + /** + * {@link IDatacagePairControler} implementation that does nothing. + */ + public static final IDatacagePairControler NIL_CONTROLER = new IDatacagePairControler() { + @Override + public void setup(final DatacageWidget leftWidget, final DatacageWidget rightWidget, final HLayout toolbarLayout) { + // does nothing + } + }; + /** i18n resource. */ - private final FLYSConstants MSG = GWT.create(FLYSConstants.class); + private static final FLYSConstants MSG = GWT.create(FLYSConstants.class); /** The "remote" ListGrid to insert data to when add-button is clicked. */ private final ListGrid grid; @@ -43,8 +61,9 @@ /** errorMsg maxCount */ private final String msgMaxCount; - public DatacagePairWidget(final DatacageWidgetData leftData, final DatacageWidgetData rightData, final ListGrid grid, final int maxCount, - final String msgMaxCount) { + public DatacagePairWidget(final IDatacagePairControler controler, final DatacageWidgetData leftData, final DatacageWidgetData rightData, + final ListGrid grid, final int maxCount, final String msgMaxCount) { + this.msgMaxCount = msgMaxCount; this.maxCount = maxCount; this.grid = grid; @@ -60,7 +79,10 @@ hLayout.addMember(this.firstDatacageWidget); hLayout.addMember(this.secondDatacageWidget); - final Button plusBtn = new Button(this.MSG.datacage_add_pair()); + final HLayout toolbarLayout = new HLayout(); + toolbarLayout.setAutoHeight(); + + final Button plusBtn = new Button(MSG.datacage_add_pair()); plusBtn.setAutoFit(true); plusBtn.addClickHandler(new ClickHandler() { @Override @@ -68,23 +90,26 @@ plusClicked(); } }); + toolbarLayout.addMember(plusBtn); addMember(hLayout); - addMember(plusBtn); + addMember(toolbarLayout); + + controler.setup(this.firstDatacageWidget, this.secondDatacageWidget, toolbarLayout); } /** * Callback for add-button. * Fires to load for every selected element and handler. */ - public void plusClicked() { + protected final void plusClicked() { final ToLoad toLoad1 = this.firstDatacageWidget.getSelection(); final ToLoad toLoad2 = this.secondDatacageWidget.getSelection(); // FIXME: allows to select folders... but it should not if (toLoad1 == null || toLoad2 == null || toLoad1.toRecommendations().isEmpty() || toLoad2.toRecommendations().isEmpty()) { - SC.say(this.MSG.warning_select_two_values()); + SC.say(MSG.warning_select_two_values()); return; }