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 2019/04/01 10:07:17 UTC

[isis] 01/01: ISIS-2001: initial sketch of changes required for defaultXxx support

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

danhaywood pushed a commit to branch ISIS-2001
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 82820afb5635ec45c63047c39c0872256dc15146
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Apr 1 11:06:58 2019 +0100

    ISIS-2001: initial sketch of changes required for defaultXxx support
---
 .../components/actions/ActionParametersForm.java   | 23 ++++++++++++----------
 .../components/scalars/ScalarPanelAbstract2.java   |  6 ++++++
 .../ui/components/scalars/uuid/UuidPanel.java      |  8 ++++++++
 .../valuechoices/ValueChoicesSelect2Panel.java     |  4 ++++
 4 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index 9ad8edd..288af51 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -41,7 +41,6 @@ import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 import org.apache.isis.viewer.wicket.model.models.ActionArgumentModel;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.components.scalars.PanelWithChoices;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract2;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorStrategy;
@@ -155,16 +154,20 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
             final int numParams = action.getParameterCount();
             for (int i = 0; i < numParams; i++) {
                 final ScalarPanelAbstract2 paramPanel = paramPanels.get(i);
-                if (paramPanel != null && paramPanel instanceof PanelWithChoices) {
-                    final PanelWithChoices panelWithChoices = (PanelWithChoices) paramPanel;
-
-                    // this could throw a ConcurrencyException as we may have to reload the
-                    // object adapter of the action in order to compute the choices
-                    // (and that object adapter might have changed)
-                    if (panelWithChoices.updateChoices(pendingArguments)) {
-                        paramPanel.repaint(target);
-                    }
+                if(paramPanel.updateIfNecessary(pendingArguments)) {
+                    paramPanel.repaint(target);
                 }
+
+//                if (paramPanel instanceof PanelWithChoices) {
+//                    final PanelWithChoices panelWithChoices = (PanelWithChoices) paramPanel;
+//
+//                    // this could throw a ConcurrencyException as we may have to reload the
+//                    // object adapter of the action in order to compute the choices
+//                    // (and that object adapter might have changed)
+//                    if (panelWithChoices.updateChoices(pendingArguments)) {
+//                        paramPanel.repaint(target);
+//                    }
+//                }
             }
         } catch (ConcurrencyException ex) {
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 47aefc1..c859b36 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -106,6 +106,12 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract<ScalarModel> im
     private static final String ID_ASSOCIATED_ACTION_LINKS_BELOW = "associatedActionLinksBelow";
     private static final String ID_ASSOCIATED_ACTION_LINKS_RIGHT = "associatedActionLinksRight";
 
+    /**
+     * @param pendingArguments
+     * @return - true if changed as a result of these pending arguments.
+     */
+    public abstract boolean updateIfNecessary(final ObjectAdapter[] pendingArguments);
+
     public static class InlinePromptConfig {
         private final boolean supported;
         private final Component componentToHideIfAny;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
index efe5fd8..6120d4a 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
@@ -23,6 +23,7 @@ import java.util.UUID;
 
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
 import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
@@ -36,6 +37,13 @@ public class UuidPanel extends ScalarPanelTextFieldAbstract<UUID> {
 
     private static final UuidConverter converter = new UuidConverter();
 
+    @Override
+    public boolean updateIfNecessary(
+            final ObjectAdapter[] pendingArguments) {
+        // no-op
+        return true;
+    }
+
     public UuidPanel(
             final String id,
             final ScalarModel scalarModel) {
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 defe635..68a7ff3 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
@@ -43,6 +43,10 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract impleme
 
     private static final long serialVersionUID = 1L;
 
+    @Override public boolean updateIfNecessary(
+            final ObjectAdapter[] pendingArguments) {
+        return updateChoices(pendingArguments);
+    }
 
     public ValueChoicesSelect2Panel(final String id, final ScalarModel scalarModel) {
         super(id, scalarModel);