You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/12/23 08:31:52 UTC

[isis] branch master updated: ISIS-2929: [wkt] extract boolean value binding idiom for reuse

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 27d38b7  ISIS-2929: [wkt] extract boolean value binding idiom for reuse
27d38b7 is described below

commit 27d38b7df7a6203d4bb9c59ba74152acbc719c9f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 23 09:31:41 2021 +0100

    ISIS-2929: [wkt] extract boolean value binding idiom for reuse
---
 .../model/models/binding/BooleanBinding.java}      | 29 +++++++++++++---------
 .../models/interaction/coll/DataRowToggleWkt.java  | 20 ++++-----------
 .../ajaxtable/columns/BulkToggleWkt.java           | 25 +++++++------------
 3 files changed, 31 insertions(+), 43 deletions(-)

diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/binding/BooleanBinding.java
similarity index 61%
copy from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java
copy to viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/binding/BooleanBinding.java
index 4f4881a..2ddf42d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/binding/BooleanBinding.java
@@ -16,37 +16,42 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns;
+package org.apache.isis.viewer.wicket.model.models.binding;
 
 import org.apache.wicket.model.ChainingModel;
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataTableModel;
+import org.apache.isis.commons.internal.binding._BindableAbstract;
 
-public class BulkToggleWkt
+/**
+ * Boolean {@link IModel} to bind to the associated {@code T} model`s
+ * bindable boolean value.
+ */
+public abstract class BooleanBinding<T>
 extends ChainingModel<Boolean> {
 
     private static final long serialVersionUID = 1L;
 
-    public BulkToggleWkt(final IModel<DataTableModel> dataTableModelHolder) {
-        super(dataTableModelHolder);
+    protected BooleanBinding(final IModel<T> model) {
+        super(model);
     }
 
     @Override
-    public Boolean getObject() {
-        return dataTableModel().getSelectAllToggle().getValue();
+    public final Boolean getObject() {
+        return getBindable(model()).getValue();
     }
 
     @Override
-    public void setObject(final Boolean value) {
-        dataTableModel().getSelectAllToggle().setValue(value);
+    public final void setObject(final Boolean value) {
+        getBindable(model()).setValue(value);
     }
 
-    // -- HELPER
+    protected abstract _BindableAbstract<Boolean> getBindable(T model);
 
     @SuppressWarnings("unchecked")
-    private DataTableModel dataTableModel() {
-        return ((IModel<DataTableModel>) super.getTarget()).getObject();
+    protected T model() {
+        return ((IModel<T>) super.getTarget()).getObject();
     }
 
 }
+
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/coll/DataRowToggleWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/coll/DataRowToggleWkt.java
index 8818876..c57acf8 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/coll/DataRowToggleWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/coll/DataRowToggleWkt.java
@@ -18,18 +18,19 @@
  */
 package org.apache.isis.viewer.wicket.model.models.interaction.coll;
 
-import org.apache.wicket.model.ChainingModel;
 import org.apache.wicket.model.IModel;
 
+import org.apache.isis.commons.internal.binding._BindableAbstract;
 import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataRow;
 import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataTableModel;
+import org.apache.isis.viewer.wicket.model.models.binding.BooleanBinding;
 
 /**
  * Boolean {@link IModel} to bind to the associated {@link DataTableModel}'s
  * {@link DataRow} model to handle check-box selection.
  */
 public class DataRowToggleWkt
-extends ChainingModel<Boolean> {
+extends BooleanBinding<DataRow> {
 
     private static final long serialVersionUID = 1L;
 
@@ -38,19 +39,8 @@ extends ChainingModel<Boolean> {
     }
 
     @Override
-    public Boolean getObject() {
-        return dataRow().getObject().getSelectToggle().getValue();
-    }
-
-    @Override
-    public void setObject(final Boolean value) {
-        dataRow().getObject().getSelectToggle().setValue(value);
-    }
-
-    // -- HELPER
-
-    private DataRowWkt dataRow() {
-        return (DataRowWkt) super.getTarget();
+    protected _BindableAbstract<Boolean> getBindable(final DataRow dataRow) {
+        return dataRow.getSelectToggle();
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java
index 4f4881a..df4f273 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/BulkToggleWkt.java
@@ -18,13 +18,18 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns;
 
-import org.apache.wicket.model.ChainingModel;
 import org.apache.wicket.model.IModel;
 
+import org.apache.isis.commons.internal.binding._BindableAbstract;
 import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataTableModel;
+import org.apache.isis.viewer.wicket.model.models.binding.BooleanBinding;
 
+/**
+ * Boolean {@link IModel} to bind to the associated {@link DataTableModel}'s
+ * select-all-toggle model to handle bulk check-box selection.
+ */
 public class BulkToggleWkt
-extends ChainingModel<Boolean> {
+extends BooleanBinding<DataTableModel> {
 
     private static final long serialVersionUID = 1L;
 
@@ -33,20 +38,8 @@ extends ChainingModel<Boolean> {
     }
 
     @Override
-    public Boolean getObject() {
-        return dataTableModel().getSelectAllToggle().getValue();
-    }
-
-    @Override
-    public void setObject(final Boolean value) {
-        dataTableModel().getSelectAllToggle().setValue(value);
-    }
-
-    // -- HELPER
-
-    @SuppressWarnings("unchecked")
-    private DataTableModel dataTableModel() {
-        return ((IModel<DataTableModel>) super.getTarget()).getObject();
+    protected _BindableAbstract<Boolean> getBindable(final DataTableModel dataTable) {
+        return dataTable.getSelectAllToggle();
     }
 
 }