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 2013/08/21 01:42:45 UTC

[4/5] git commit: ISIS-478: dependent choices now refreshed in UI ok.

ISIS-478: dependent choices now refreshed in UI ok.


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

Branch: refs/heads/master
Commit: 6763bd4eb76ee9ab4d845af0201262ee113b2c1e
Parents: cbd4f35
Author: Dan Haywood <da...@apache.org>
Authored: Tue Aug 20 20:43:26 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Tue Aug 20 20:43:26 2013 +0100

----------------------------------------------------------------------
 .../actions/ActionParametersFormPanel.java      |  2 +-
 .../valuechoices/ValueChoicesSelect2Panel.java  | 33 ++++++++++++++------
 .../java/dom/todo/ToDoItemContributions.java    |  2 +-
 3 files changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6763bd4e/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index a9bcea4..c168ec5 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -131,8 +131,8 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
                 final ScalarPanelAbstract paramPanel = component instanceof ScalarPanelAbstract ? (ScalarPanelAbstract) component : null;
                 paramPanels.add(paramPanel);
                 if(paramPanel != null) {
-                    paramPanel.notifyOnChange(this);
                     paramPanel.setOutputMarkupId(true);
+                    paramPanel.notifyOnChange(this);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/6763bd4e/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index d0d5110..7f04de4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -74,7 +74,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract {
         final IModel<ObjectAdapterMemento> modelObject = createModel();
         
         select2ChoiceField = new Select2Choice<ObjectAdapterMemento>(ID_VALUE_ID, modelObject);
-        select2ChoiceField.setProvider(newChoiceProviderForArgs(null));
+        final List<ObjectAdapterMemento> choicesMementos = getChoiceMementos(null);
+        setChoices(choicesMementos);
 
         addStandardSemantics();
 
@@ -90,8 +91,7 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract {
         return labelIfRegular;
     }
 
-    private ChoiceProvider<ObjectAdapterMemento> newChoiceProviderForArgs(final ObjectAdapter[] argumentsIfAvailable) {
-        final List<ObjectAdapterMemento> choicesMementos = getChoiceMementos(argumentsIfAvailable);
+    protected ChoiceProvider<ObjectAdapterMemento> newChoiceProvider(final List<ObjectAdapterMemento> choicesMementos) {
         final IModel<List<ObjectAdapterMemento>> choicesModel = newModel(choicesMementos);
         final ChoiceProvider<ObjectAdapterMemento> choiceProvider = newChoiceProvider(choicesModel);
         return choiceProvider;
@@ -112,11 +112,6 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract {
         
         // take a copy otherwise is only lazily evaluated
         final List<ObjectAdapterMemento> choicesMementos = Lists.newArrayList(Lists.transform(choices, Mementos.fromAdapter()));
-        
-        final ObjectAdapterMemento currentValue = getModel().getObjectAdapterMemento();
-        if(currentValue != null && !choicesMementos.contains(currentValue)) {
-            choicesMementos.add(currentValue);
-        }
         return choicesMementos;
     }
 
@@ -260,9 +255,27 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract {
 
     @Override
     public void updateChoices(ObjectAdapter[] arguments) {
-        select2ChoiceField.setProvider(newChoiceProviderForArgs(arguments));
+        final List<ObjectAdapterMemento> choicesMementos = getChoiceMementos(arguments);
+        setChoices(choicesMementos);
+    }
+
+    /**
+     * sets up the choices, also ensuring that any currently held value
+     * is compatible.
+     */
+    private void setChoices(final List<ObjectAdapterMemento> choicesMementos) {
+        select2ChoiceField.setProvider(newChoiceProvider(choicesMementos));
         getModel().setPending(null);
-        select2ChoiceField.clearInput();
+        final ObjectAdapterMemento objectAdapterMemento = getModel().getObjectAdapterMemento();
+        if(!choicesMementos.contains(objectAdapterMemento)) {
+            final ObjectAdapterMemento newAdapterMemento = 
+                    !choicesMementos.isEmpty() 
+                    ? choicesMementos.get(0) 
+                    : null;
+            select2ChoiceField.getModel().setObject(newAdapterMemento);
+            getModel().setObject(
+                    newAdapterMemento != null? newAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK): null);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6763bd4e/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
index 86c7c3a..d7319b9 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
@@ -144,7 +144,7 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
     @DescribedAs("Update category and subcategory")
     @NotInServiceMenu
     @ActionSemantics(Of.IDEMPOTENT)
-    @MemberOrder(sequence="1")
+    @MemberOrder(name="Subcategory", sequence="1")
     public ToDoItem updateCategory(
             final ToDoItem item, 
             final @Named("Category") Category category,