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

Reply via email to