You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/09/22 04:40:39 UTC
[isis] branch master updated: ISIS-3201: consolidate choice panel factories
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 8baaea61f2 ISIS-3201: consolidate choice panel factories
8baaea61f2 is described below
commit 8baaea61f2cced8cb97679d607f67c0a7db28d54
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 22 06:40:32 2022 +0200
ISIS-3201: consolidate choice panel factories
---
viewers/wicket/ui/src/main/java/module-info.java | 3 +-
.../viewer/wicket/ui/ComponentFactoryAbstract.java | 6 +-
.../ui/components/scalars/ScalarPanelAbstract.java | 6 +-
.../ChoicesSelect2PanelFactory.java} | 36 +++++++-----
.../ObjectChoiceFormComponent.html} | 0
.../ObjectChoiceFormComponent.java} | 8 +--
.../ObjectChoicesSelect2Panel.java} | 14 +++--
.../ValueChoicesSelect2Panel.java | 2 +-
.../ValueChoicesSelect2PanelFactory.java | 68 ----------------------
.../ComponentFactoryRegistrarDefault.java | 8 +--
10 files changed, 45 insertions(+), 106 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/module-info.java b/viewers/wicket/ui/src/main/java/module-info.java
index 785786a70d..442f3a0e82 100644
--- a/viewers/wicket/ui/src/main/java/module-info.java
+++ b/viewers/wicket/ui/src/main/java/module-info.java
@@ -50,7 +50,7 @@ module org.apache.isis.viewer.wicket.ui {
exports org.apache.isis.viewer.wicket.ui.components.widgets.zclip;
exports org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
exports org.apache.isis.viewer.wicket.ui.components.tree;
- exports org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices;
+ exports org.apache.isis.viewer.wicket.ui.components.scalars.choices;
exports org.apache.isis.viewer.wicket.ui.components.layout.bs.tabs;
exports org.apache.isis.viewer.wicket.ui.components.scalars.datepicker;
exports org.apache.isis.viewer.wicket.ui.pages.login;
@@ -68,7 +68,6 @@ module org.apache.isis.viewer.wicket.ui {
exports org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset;
exports org.apache.isis.viewer.wicket.ui.components.scalars;
exports org.apache.isis.viewer.wicket.ui.pages;
- exports org.apache.isis.viewer.wicket.ui.components.scalars.reference;
exports org.apache.isis.viewer.wicket.ui.components.widgets.navbar;
exports org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions;
exports org.apache.isis.viewer.wicket.ui.pages.accmngt;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
index 5538c46de9..3c4b0ed496 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
@@ -66,8 +66,10 @@ public abstract class ComponentFactoryAbstract implements ComponentFactory {
this.componentType = componentType;
this.name = name != null ? name : getClass().getSimpleName();
- if(componentTypeClass != null && ComponentFactory.class.isAssignableFrom(componentTypeClass)) {
- throw new IllegalArgumentException("specified a ComponentFactory as a componentTypeClass... "
+ if(componentTypeClass != null
+ && ComponentFactory.class.isAssignableFrom(componentTypeClass)) {
+ throw new IllegalArgumentException(
+ "specified a ComponentFactory as a componentTypeClass... "
+ "you probably meant the component instead? componentClass = "
+ componentTypeClass.getName());
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 50dfe36d8e..fb5690e638 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -58,8 +58,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarFragmentFactory
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarFragmentFactory.RegularFrame;
import org.apache.isis.viewer.wicket.ui.components.scalars.blobclob.IsisBlobOrClobPanelAbstract;
import org.apache.isis.viewer.wicket.ui.components.scalars.bool.BooleanPanel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices.ValueChoicesSelect2Panel;
+import org.apache.isis.viewer.wicket.ui.components.scalars.choices.ObjectChoicesSelect2Panel;
+import org.apache.isis.viewer.wicket.ui.components.scalars.choices.ValueChoicesSelect2Panel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.Wkt;
import org.apache.isis.viewer.wicket.ui.util.Wkt.EventTopic;
@@ -204,7 +204,7 @@ implements ScalarModelChangeListener {
/**
* Used by most subclasses
- * ({@link ScalarPanelAbstract}, {@link ReferencePanel}, {@link ValueChoicesSelect2Panel})
+ * ({@link ScalarPanelAbstract}, {@link ObjectChoicesSelect2Panel}, {@link ValueChoicesSelect2Panel})
* but not all ({@link IsisBlobOrClobPanelAbstract}, {@link BooleanPanel})
*/
@Getter(AccessLevel.PROTECTED)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanelFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
similarity index 59%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanelFactory.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
index b5defed65c..2b88d563d6 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanelFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
@@ -16,41 +16,47 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
+package org.apache.isis.viewer.wicket.ui.components.scalars.choices;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.isis.viewer.commons.model.components.UiComponentType;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.string.ScalarTitleBadgePanel;
import lombok.val;
-/**
- * {@link ComponentFactory} for {@link ReferencePanel}.
- */
-public class ReferencePanelFactory extends ComponentFactoryAbstract {
+public class ChoicesSelect2PanelFactory extends ComponentFactoryAbstract {
private static final long serialVersionUID = 1L;
- public ReferencePanelFactory() {
- super(UiComponentType.SCALAR_NAME_AND_VALUE, ReferencePanel.class);
+ public ChoicesSelect2PanelFactory() {
+ super(UiComponentType.SCALAR_NAME_AND_VALUE);
}
@Override
public ApplicationAdvice appliesTo(final IModel<?> model) {
- if (!(model instanceof ScalarModel)) {
- return ApplicationAdvice.DOES_NOT_APPLY;
- }
- val scalarModel = (ScalarModel) model;
- return appliesIf(!scalarModel.getScalarTypeSpec().isValue());
+ return appliesIf(model instanceof ScalarModel);
}
@Override
- public Component createComponent(final String id, final IModel<?> model) {
+ public final Component createComponent(final String id, final IModel<?> model) {
val scalarModel = (ScalarModel) model;
- return new ReferencePanel(id, scalarModel);
+
+ 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 {
+ return new ObjectChoicesSelect2Panel(id, scalarModel);
+ }
}
+
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.html b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoiceFormComponent.html
similarity index 100%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.html
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoiceFormComponent.html
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoiceFormComponent.java
similarity index 92%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoiceFormComponent.java
index d4fa676b5a..8cafa6ae01 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoiceFormComponent.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
+package org.apache.isis.viewer.wicket.ui.components.scalars.choices;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.markup.html.form.FormComponentPanel;
@@ -27,15 +27,15 @@ import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelHintRequired;
import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormComponentPanelAbstract;
-class EntityLinkSelect2Panel
+class ObjectChoiceFormComponent
extends FormComponentPanelAbstract<ManagedObject>
implements CancelHintRequired {
private static final long serialVersionUID = 1L;
- private ReferencePanel owningPanel;
+ private ObjectChoicesSelect2Panel owningPanel;
- public EntityLinkSelect2Panel(final String id, final ReferencePanel owningPanel) {
+ public ObjectChoiceFormComponent(final String id, final ObjectChoicesSelect2Panel owningPanel) {
super(id, owningPanel.scalarModel());
this.owningPanel = owningPanel;
setType(ManagedObject.class);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoicesSelect2Panel.java
similarity index 95%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoicesSelect2Panel.java
index 8879ee0c70..1f3b707563 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ObjectChoicesSelect2Panel.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
+package org.apache.isis.viewer.wicket.ui.components.scalars.choices;
import java.util.Optional;
@@ -49,7 +49,7 @@ import lombok.val;
* Panel for rendering scalars which of are of reference type (as opposed to
* value types).
*/
-public class ReferencePanel
+public class ObjectChoicesSelect2Panel
extends ScalarPanelSelectAbstract
implements ChoiceTitleHandler {
@@ -58,11 +58,11 @@ implements ChoiceTitleHandler {
private static final String ID_AUTO_COMPLETE = "autoComplete";
private static final String ID_ENTITY_TITLE_IF_NULL = "entityTitleIfNull";
- private EntityLinkSelect2Panel entityLink;
+ private ObjectChoiceFormComponent entityLink;
private EntityLinkSimplePanel entityLinkOutputFormat;
private final boolean isCompactFormat;
- public ReferencePanel(final String id, final ScalarModel scalarModel) {
+ public ObjectChoicesSelect2Panel(final String id, final ScalarModel scalarModel) {
super(id, scalarModel);
this.isCompactFormat = !scalarModel.getRenderingHint().isRegular();
}
@@ -85,7 +85,7 @@ implements ChoiceTitleHandler {
@Override
protected FormComponent<ManagedObject> createFormComponent(final String id, final ScalarModel scalarModel) {
- this.entityLink = new EntityLinkSelect2Panel(UiComponentType.ENTITY_LINK.getId(), this);
+ this.entityLink = new ObjectChoiceFormComponent(UiComponentType.ENTITY_LINK.getId(), this);
entityLink.setRequired(scalarModel.isRequired());
this.select2 = createSelect2(ID_AUTO_COMPLETE,
@@ -101,7 +101,9 @@ implements ChoiceTitleHandler {
@Override
protected void installScalarModelChangeBehavior() {
- // no-op, as we already have the Select2OnSelect behavior (directly) installed with the Select2 form component
+ /* no-op, as we already have the Select2OnSelect behavior
+ * (directly) installed with the Select2 form component
+ */
}
// -- ON BEFORE RENDER
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ValueChoicesSelect2Panel.java
similarity index 98%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ValueChoicesSelect2Panel.java
index 9a83fbe88e..d9fe279748 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/choices/ValueChoicesSelect2Panel.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices;
+package org.apache.isis.viewer.wicket.ui.components.scalars.choices;
import java.util.Optional;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2PanelFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2PanelFactory.java
deleted file mode 100644
index 986754b807..0000000000
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2PanelFactory.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.model.IModel;
-
-import org.apache.isis.viewer.commons.model.components.UiComponentType;
-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;
-
-import lombok.val;
-
-public class ValueChoicesSelect2PanelFactory extends ComponentFactoryAbstract {
-
- private static final long serialVersionUID = 1L;
-
- public ValueChoicesSelect2PanelFactory() {
- super(UiComponentType.SCALAR_NAME_AND_VALUE, ValueChoicesSelect2Panel.class);
- }
-
- @Override
- public ApplicationAdvice appliesTo(final IModel<?> model) {
- if (!(model instanceof ScalarModel)) {
- return ApplicationAdvice.DOES_NOT_APPLY;
- }
- val scalarModel = (ScalarModel) model;
-
- // autoComplete not supported for values, only for references
- // this is because there is no easy way in the ChoiceProvider to convert the list of Ids (strings)
- // into corresponding ObjectAdapterMemento's.
- // see subclasses of ObjectAdapterMementoProviderAbstract
-
- return appliesIf(scalarModel.getScalarTypeSpec().isValue()
- && (scalarModel.hasChoices()
- /* || scalarModel.hasAutoComplete() */
- ));
- }
-
- @Override
- public final Component createComponent(final String id, final IModel<?> model) {
- val scalarModel = (ScalarModel) model;
- if(scalarModel.isViewMode()) {
- val valueType = scalarModel.getScalarTypeSpec().getCorrespondingClass();
- return new ScalarTitleBadgePanel<>(id, scalarModel, valueType);
- } else {
- return new ValueChoicesSelect2Panel(id, scalarModel);
- }
- }
-
-}
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
index dd63fad31d..4fce025585 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
@@ -40,6 +40,7 @@ import org.apache.isis.commons.internal.functions._Predicates;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
+import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar.ComponentFactoryList;
import org.apache.isis.viewer.wicket.ui.components.about.AboutPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.actioninfo.ActionInfoPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions.ServiceActionsPanelFactory;
@@ -68,14 +69,13 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldW
import org.apache.isis.viewer.wicket.ui.components.scalars.blobclob.IsisBlobPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.blobclob.IsisClobPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.bool.BooleanPanelFactory;
+import org.apache.isis.viewer.wicket.ui.components.scalars.choices.ChoicesSelect2PanelFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.composite.CompositeValuePanel;
import org.apache.isis.viewer.wicket.ui.components.scalars.image.JavaAwtImagePanelFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
import org.apache.isis.viewer.wicket.ui.components.scalars.passwd.IsisPasswordPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanelFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.string.StringPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.value.fallback.ValueFallbackPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices.ValueChoicesSelect2PanelFactory;
import org.apache.isis.viewer.wicket.ui.components.standalonecollection.StandaloneCollectionPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.tree.TreePanelFactories;
import org.apache.isis.viewer.wicket.ui.components.unknown.UnknownModelPanelFactory;
@@ -210,8 +210,6 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
protected void addComponentFactoriesForScalar(final ComponentFactoryList componentFactories) {
componentFactories.add(TreePanelFactories.parented());
-
- componentFactories.add(new ReferencePanelFactory());
componentFactories.add(MarkupPanelFactories.parented());
componentFactories.add(new BooleanPanelFactory());
@@ -231,7 +229,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
componentFactories.add(new ValueFallbackPanelFactory());
// or for choices
- componentFactories.add(new ValueChoicesSelect2PanelFactory());
+ componentFactories.add(new ChoicesSelect2PanelFactory());
}