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);