You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/04/27 12:33:11 UTC

[25/35] isis git commit: ISIS-1603: factors out common createSelect2 method for value choices and reference panel, moves up to ScalarPanelAbstract superclass.

ISIS-1603: factors out common createSelect2 method for value choices and reference panel, moves up to ScalarPanelAbstract superclass.

Along the way found that ValueChoicesSelect2Panel implements a different interface (ScalarModelWith{Multi}Pending), experimented and seems can instead use the model of ReferencePanel (just use the underlying ScalarModel when creating the select2)


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e1e28f9d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e1e28f9d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e1e28f9d

Branch: refs/heads/ISIS-1603
Commit: e1e28f9d59f2bfa7816b14991cae8ccb2695dbbb
Parents: 6558405
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Apr 27 11:09:56 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Apr 27 13:26:40 2017 +0100

----------------------------------------------------------------------
 .../components/scalars/ScalarPanelAbstract.java | 40 ++++++++++++++++++++
 .../scalars/reference/ReferencePanel.java       | 18 ++-------
 .../valuechoices/ValueChoicesSelect2Panel.java  | 29 +++++++-------
 3 files changed, 57 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/e1e28f9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 75c493e..76109cb 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.collect.Lists;
@@ -45,10 +46,13 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
 import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.viewer.wicket.model.models.ScalarModelWithMultiPending;
+import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.AdditionalLinksPanel;
 import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil;
@@ -61,6 +65,7 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOr
 import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.BooleanPanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices.ValueChoicesSelect2Panel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.select2.Select2;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -339,6 +344,41 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
     }
 
 
+
+
+    // //////////////////////////////////////
+
+    /**
+     * For convenience of implementations that use a select2 dropdown ({@link ReferencePanel} and {@link ValueChoicesSelect2Panel}).
+     */
+    protected Select2 createSelect2(final String id) {
+        final Select2 select2;
+        if(getModel().isCollection()) {
+            final IModel<ArrayList<ObjectAdapterMemento>> model = ScalarModelWithMultiPending.Util.createModel(scalarModel);
+            select2 = Select2.newSelect2MultiChoice(id, model, scalarModel);
+        } else {
+            final IModel<ObjectAdapterMemento> model = ScalarModelWithPending.Util.createModel(scalarModel);
+            select2 = Select2.newSelect2Choice(id, model, scalarModel);
+        }
+        return select2;
+    }
+
+    // the implementation pulled up from ValueChoicesSelect2Panel.
+    // however, uses an overloaded version that relies on VCSP implementing ScalarModlWith{Multi}Pending.  Experimenting as to whether that's actually required...
+//    protected Select2 createSelect2(final String id) {
+//        final Select2 select2;
+//        if(getModel().isCollection()) {
+//            final IModel<ArrayList<ObjectAdapterMemento>> model = ScalarModelWithMultiPending.Util.createModel(this);
+//            select2 = Select2.newSelect2MultiChoice(id, model, scalarModel);
+//        } else {
+//            final IModel<ObjectAdapterMemento> modelObject = ScalarModelWithPending.Util.createModel(this);
+//            select2 = Select2.newSelect2Choice(ID_SCALAR_VALUE, modelObject, scalarModel);
+//        }
+//        return select2;
+//    }
+
+
+
     // //////////////////////////////////////
 
     private final List<ScalarModelSubscriber> subscribers = Lists.newArrayList();

http://git-wip-us.apache.org/repos/asf/isis/blob/e1e28f9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index 2ea7c4b..c8c8a3f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.collect.Lists;
@@ -49,8 +48,6 @@ import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.model.models.ScalarModelWithMultiPending;
-import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.PanelWithChoices;
@@ -121,7 +118,7 @@ public class ReferencePanel extends ScalarPanelAbstract implements PanelWithChoi
         entityLink = new EntityLinkSelect2Panel(ComponentType.ENTITY_LINK.getWicketId(), this);
 
         entityLink.setRequired(getModel().isRequired());
-        this.select2 = createSelect2();
+        this.select2 = createSelect2AndSemantics();
         entityLink.addOrReplace(select2.component());
 
         syncWithInput();
@@ -179,18 +176,9 @@ public class ReferencePanel extends ScalarPanelAbstract implements PanelWithChoi
         return select2.component();
     }
 
-    private Select2 createSelect2() {
+    private Select2 createSelect2AndSemantics() {
 
-        final Select2 select2;
-        if(getModel().isCollection()) {
-            final IModel<ArrayList<ObjectAdapterMemento>> model =
-                    ScalarModelWithMultiPending.Util.createModel(getModel());
-            select2 = Select2.newSelect2MultiChoice(ID_AUTO_COMPLETE, model, getModel());
-        } else {
-            final IModel<ObjectAdapterMemento> modelObject =
-                    ScalarModelWithPending.Util.createModel(getModel());
-            select2 = Select2.newSelect2Choice(ID_AUTO_COMPLETE, modelObject, getModel());
-        }
+        final Select2 select2 = createSelect2(ID_AUTO_COMPLETE);
 
         setProviderAndCurrAndPending(select2, getModel().getActionArgsHint());
 

http://git-wip-us.apache.org/repos/asf/isis/blob/e1e28f9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index 0522d8f..7ddf536 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -35,12 +35,10 @@ import org.wicketstuff.select2.ChoiceProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
-import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModelWithMultiPending;
 import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending;
-import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil;
 import org.apache.isis.viewer.wicket.ui.components.scalars.PanelWithChoices;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
@@ -70,27 +68,19 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
 
         // same pattern as in ReferencePanel
         if(select2 == null) {
-            if(getModel().isCollection()) {
-                final IModel<ArrayList<ObjectAdapterMemento>> modelObject = ScalarModelWithMultiPending.Util.createModel(this);
-                select2 = Select2.newSelect2MultiChoice(ID_SCALAR_VALUE, modelObject, scalarModel);
-            } else {
-                final IModel<ObjectAdapterMemento> modelObject = ScalarModelWithPending.Util.createModel(this);
-                select2 = Select2.newSelect2Choice(ID_SCALAR_VALUE, modelObject, scalarModel);
-            }
+            this.select2 = createSelect2AndSemantics();
 
             final ObjectAdapter[] actionArgsHint = scalarModel.getActionArgsHint();
             setProviderAndCurrAndPending(select2, actionArgsHint);
-            addStandardSemantics();
+            addStandardSemantics(select2);
         } else {
             select2.clearInput();
         }
 
-
         final MarkupContainer scalarIfRegularFormGroup = createScalarIfRegularFormGroup();
         if(getModel().isRequired()) {
             scalarIfRegularFormGroup.add(new CssClassAppender("mandatory"));
         }
-        
 
         final Label scalarName = new Label(ID_SCALAR_NAME, getRendering().getLabelCaption(select2.component()));
         if(getModel().isRequired()) {
@@ -109,6 +99,15 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
         return scalarIfRegularFormGroup;
     }
 
+    private Select2 createSelect2AndSemantics() {
+        final Select2 select2 = createSelect2(ID_SCALAR_VALUE);
+
+        final ObjectAdapter[] actionArgsHint = scalarModel.getActionArgsHint();
+        setProviderAndCurrAndPending(select2, actionArgsHint);
+        addStandardSemantics(select2);
+        return select2;
+    }
+
     protected Component getScalarValueComponent() {
         return select2.component();
     }
@@ -121,11 +120,11 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
         return Lists.newArrayList(Lists.transform(choices, ObjectAdapterMemento.Functions.fromAdapter()));
     }
 
-    protected void addStandardSemantics() {
-        setRequiredIfSpecified();
+    protected void addStandardSemantics(final Select2 select2) {
+        setRequiredIfSpecified(select2);
     }
 
-    private void setRequiredIfSpecified() {
+    private void setRequiredIfSpecified(final Select2 select2) {
         final ScalarModel scalarModel = getModel();
         final boolean required = scalarModel.isRequired();
         select2.setRequired(required);