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,