This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new b0f687c1a8 ISIS-3201: fixes regression in commit 'consolidate choice
panel factories'
b0f687c1a8 is described below
commit b0f687c1a80f4a0dbeaf8968850edd4741f19c02
Author: Andi Huber <[email protected]>
AuthorDate: Thu Sep 22 13:07:58 2022 +0200
ISIS-3201: fixes regression in commit 'consolidate choice panel
factories'
https://github.com/apache/isis/commit/8baaea61f2cced8cb97679d607f67c0a7db28d54
---
.../choices/ChoicesSelect2PanelFactory.java | 42 ++++++++++++++--------
1 file changed, 27 insertions(+), 15 deletions(-)
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
index 080a812dbf..d35394808e 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
@@ -22,8 +22,8 @@ import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.viewer.commons.model.components.UiComponentType;
-import org.apache.isis.viewer.commons.model.scalar.UiScalar.ChoiceProviderSort;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
import
org.apache.isis.viewer.wicket.ui.components.scalars.string.ScalarTitleBadgePanel;
@@ -34,6 +34,21 @@ public class ChoicesSelect2PanelFactory extends
ComponentFactoryAbstract {
private static final long serialVersionUID = 1L;
+ private static enum ComponentSort {
+ TITLE_BADGE,
+ VALUE_CHOICES,
+ OBJECT_CHOICES;
+ static ComponentSort valueOf(final ScalarModel scalarModel) {
+ if(scalarModel.getScalarTypeSpec().isValue()
+ && scalarModel.getChoiceProviderSort().isChoicesAny()) {
+ return scalarModel.isViewMode()
+ ? TITLE_BADGE
+ : VALUE_CHOICES;
+ }
+ return OBJECT_CHOICES;
+ }
+ }
+
public ChoicesSelect2PanelFactory() {
super(UiComponentType.SCALAR_NAME_AND_VALUE);
}
@@ -41,26 +56,23 @@ public class ChoicesSelect2PanelFactory extends
ComponentFactoryAbstract {
@Override
public ApplicationAdvice appliesTo(final IModel<?> model) {
return appliesIf(_Casts.castTo(ScalarModel.class, model)
- .map(ScalarModel::getChoiceProviderSort)
- .map(ChoiceProviderSort::isChoicesAny)
- .orElse(false));
+ .isPresent());
}
@Override
public final Component createComponent(final String id, final IModel<?>
model) {
val scalarModel = (ScalarModel) model;
-
- if(scalarModel.getScalarTypeSpec().isValue()) {
-
- if(scalarModel.isViewMode()) {
- val valueType =
scalarModel.getScalarTypeSpec().getCorrespondingClass();
- return new ScalarTitleBadgePanel<>(id, scalarModel, valueType);
- } else {
- return new ValueChoicesSelect2Panel(id, scalarModel);
- }
-
- } else {
+ val componentSort = ComponentSort.valueOf(scalarModel);
+ switch(componentSort) {
+ case TITLE_BADGE:
+ val valueType =
scalarModel.getScalarTypeSpec().getCorrespondingClass();
+ return new ScalarTitleBadgePanel<>(id, scalarModel, valueType);
+ case VALUE_CHOICES:
+ return new ValueChoicesSelect2Panel(id, scalarModel);
+ case OBJECT_CHOICES:
return new ObjectChoicesSelect2Panel(id, scalarModel);
+ default:
+ throw _Exceptions.unmatchedCase(componentSort);
}
}