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/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new 8b9f20b3b0 CAUSEWAY-3424: [Programming Model] mark 
Action/Collection/Property#hidden deprecated for removal
8b9f20b3b0 is described below

commit 8b9f20b3b057438d7db18c1be7322b9c1fd5e252
Author: andi-huber <[email protected]>
AuthorDate: Wed Apr 12 17:22:43 2023 +0200

    CAUSEWAY-3424: [Programming Model] mark
    Action/Collection/Property#hidden deprecated for removal
    
    - also don't use these attributes any more
---
 .../apache/causeway/applib/annotation/Action.java  |  9 ++----
 .../causeway/applib/annotation/Collection.java     |  6 ++--
 .../causeway/applib/annotation/Property.java       |  5 +--
 .../causeway/applib/services/user/UserMemento.java | 12 ++++++--
 .../hidden/HiddenFacetForActionAnnotation.java     |  1 +
 .../hidden/HiddenFacetForCollectionAnnotation.java |  1 +
 .../hidden/HiddenFacetForPropertyAnnotation.java   |  1 +
 .../core/metamodel/inspect/model/ActionNode.java   |  4 ++-
 .../metamodel/inspect/model/AnnotationNode.java    |  4 ++-
 .../metamodel/inspect/model/CollectionNode.java    |  4 ++-
 .../metamodel/inspect/model/FacetAttrNode.java     |  4 ++-
 .../metamodel/inspect/model/FacetGroupNode.java    |  4 ++-
 .../core/metamodel/inspect/model/FacetNode.java    |  4 ++-
 .../metamodel/inspect/model/ParameterNode.java     |  4 ++-
 .../core/metamodel/inspect/model/PropertyNode.java |  4 ++-
 .../core/metamodel/inspect/model/TypeNode.java     |  4 ++-
 .../ActionAnnotationFacetFactoryTest_Hidden.java   |  4 ++-
 .../CollectionAnnotationFacetFactoryTest.java      |  4 ++-
 .../PropertyAnnotationFacetFactoryTest.java        |  4 ++-
 .../ActionHidden_changeNameHiddenAllTables.java    |  8 +++--
 .../ActionHidden_changeNameHiddenEverywhere.java   |  8 +++--
 .../ActionHidden_changeNameHiddenObjectForms.java  |  8 +++--
 .../Action/semantics/ActionSemanticsPage.java      |  2 +-
 .../Collection/hidden/CollectionHiddenPage.java    |  5 +--
 .../objects/mixins/mixins/FibonacciNumberVm.java   | 17 +++++++---
 .../properties/Property/hidden/PropertyHidden.java | 16 ++++++----
 .../Property/hidden/jpa/PropertyHiddenJpa.java     | 36 ++++++++++++++--------
 .../child/PropertyProjectingChildVm.java           |  4 +--
 .../hidden/PropertyLayoutHidden.java               | 16 ++++++----
 .../hidden/jpa/PropertyLayoutHiddenJpa.java        | 31 ++++++++++++-------
 ...JavaAwtBufferedImageHolder_actionReturning.java |  4 +--
 ...feredImageHolder_actionReturningCollection.java |  4 +--
 ...ImageHolder_updateReadOnlyOptionalProperty.java |  4 +--
 ...BufferedImageHolder_updateReadOnlyProperty.java |  4 +--
 ...geHolder_updateReadOnlyPropertyWithChoices.java |  4 +--
 .../secman/applib/user/dom/ApplicationUser.java    |  5 ++-
 .../user/dom/mixins/ApplicationUser_timeZone.java  |  6 ++--
 .../components/actions/ActionParametersForm.java   |  4 ++-
 .../ui/components/scalars/ScalarPanelAbstract.java |  6 +++-
 39 files changed, 171 insertions(+), 104 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java
index f1205a1360..6add510f77 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java
@@ -150,17 +150,14 @@ public @interface Action {
 
     /**
      * Indicates where (in the UI) the action is not visible to the user.
-     *
-     * <p>
-     * It is also possible to suppress an action's visibility using {@link 
ActionLayout#hidden()}.
-     *
      * <p>
      * For {@link DomainService domain service} actions, the action's 
visibility is dependent upon its
      * {@link DomainService#nature() nature}.
      *
-     * @see Property#hidden()
-     * @see Collection#hidden()
+     * @see ActionLayout#hidden()
+     * @deprecated use {@link ActionLayout#hidden()} instead
      */
+    @Deprecated(forRemoval = true, since = "2.0.0-RC2")
     Where hidden()
             default Where.NOT_SPECIFIED;
 
diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java
index c47f2aaa78..2e5591d8ea 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java
@@ -84,10 +84,10 @@ public @interface Collection {
     /**
      * Indicates when the collection is not visible to the user.
      *
-     * @see Action#hidden()
-     * @see Property#hidden()
-     * @see Collection#hidden()
+     * @see CollectionLayout#hidden()
+     * @deprecated use CollectionLayout#hidden() instead
      */
+    @Deprecated(forRemoval = true, since = "2.0.0-RC2")
     Where hidden()
             default Where.NOT_SPECIFIED;
 
diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java
index 1ad9be5a00..d74c650f33 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java
@@ -186,9 +186,10 @@ public @interface Property {
     /**
      * Indicates where the property is not visible to the user.
      *
-     * @see Action#hidden()
-     * @see Collection#hidden()
+     * @see PropertyLayout#hidden()
+     * @deprecated use {@link PropertyLayout#hidden()} instead
      */
+    @Deprecated(forRemoval = true, since = "2.0.0-RC2")
     Where hidden()
             default Where.NOT_SPECIFIED;
 
diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/services/user/UserMemento.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/services/user/UserMemento.java
index 76b4cdca6d..78561b9ecf 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/services/user/UserMemento.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/services/user/UserMemento.java
@@ -28,7 +28,6 @@ import java.util.stream.Stream;
 
 import javax.inject.Named;
 
-import org.apache.causeway.applib.services.sudo.SudoService;
 import org.springframework.context.event.EventListener;
 import org.springframework.core.annotation.Order;
 import org.springframework.lang.Nullable;
@@ -47,10 +46,16 @@ import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.applib.locale.UserLocale;
 import org.apache.causeway.applib.services.iactnlayer.InteractionContext;
+import org.apache.causeway.applib.services.sudo.SudoService;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.internal.base._Strings;
 
-import lombok.*;
+import lombok.Builder;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NonNull;
+import lombok.With;
+import lombok.val;
 
 /**
  * Immutable serializable value holding details about a user and its roles.
@@ -272,7 +277,8 @@ implements Serializable {
      * It should return an empty string {@literal ""}
      * if this is an anonymous (unauthenticated) user.
      */
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Builder.Default @With(onMethod_ = {@Programmatic})
     @NonNull
     String authenticationCode = DEFAULT_AUTH_VALID_CODE;
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
index c82543ca3d..e5b1ec5b37 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
@@ -26,6 +26,7 @@ import 
org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 import 
org.apache.causeway.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 
+@Deprecated(forRemoval = true, since = "2.0.0-RC2")
 public class HiddenFacetForActionAnnotation
 extends HiddenFacetAbstract {
 
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
index 08c022d337..0b00c5c046 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
@@ -26,6 +26,7 @@ import 
org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 import 
org.apache.causeway.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 
+@Deprecated(forRemoval = true, since = "2.0.0-RC2")
 public class HiddenFacetForCollectionAnnotation extends HiddenFacetAbstract {
 
     public static Optional<HiddenFacetForCollectionAnnotation> create(
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
index 5bdc44e7ea..fb6b9f5cdb 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
@@ -26,6 +26,7 @@ import 
org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 import 
org.apache.causeway.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 
+@Deprecated(forRemoval = true, since = "2.0.0-RC2")
 public class HiddenFacetForPropertyAnnotation
 extends HiddenFacetAbstract {
 
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
index ced26420ab..3446fafc1e 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
@@ -30,6 +30,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.schema.metamodel.v2.Action;
 import org.apache.causeway.schema.metamodel.v2.Annotation;
@@ -52,7 +53,8 @@ public class ActionNode extends MemberNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".node.ActionNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private Action action;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/AnnotationNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/AnnotationNode.java
index e9f8681ebe..95efd00a30 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/AnnotationNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/AnnotationNode.java
@@ -31,6 +31,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.schema.metamodel.v2.Annotation;
 import org.apache.causeway.schema.metamodel.v2.MetamodelElement;
@@ -51,7 +52,8 @@ public class AnnotationNode extends MMNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".AnnotationNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private Annotation annotation;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
index 977a37059e..ad2b17c246 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
@@ -28,6 +28,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.schema.metamodel.v2.Annotation;
 import org.apache.causeway.schema.metamodel.v2.Collection;
@@ -50,7 +51,8 @@ public class CollectionNode extends MemberNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".node.CollectionNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private Collection collection;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
index 17e54856d3..de7f879d2c 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
@@ -31,6 +31,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.schema.metamodel.v2.FacetAttr;
 import org.apache.causeway.schema.metamodel.v2.MetamodelElement;
@@ -51,7 +52,8 @@ public class FacetAttrNode extends MMNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".node.FacetAttrNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private FacetAttr facetAttr;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetGroupNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetGroupNode.java
index 085eedf66a..7d1cbf6c31 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetGroupNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetGroupNode.java
@@ -31,6 +31,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.internal.base._NullSafe;
 import org.apache.causeway.schema.metamodel.v2.FacetHolder.Facets;
@@ -52,7 +53,8 @@ public class FacetGroupNode extends MMNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".FacetGroupNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private Facets facets;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
index bf1c45e955..16fd75c157 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
@@ -31,6 +31,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.internal.base._NullSafe;
 import org.apache.causeway.schema.metamodel.v2.Annotation;
@@ -55,7 +56,8 @@ public class FacetNode extends MMNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".node.FacetNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private Facet facet;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ParameterNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ParameterNode.java
index e2154e58ea..4cbe753789 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ParameterNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ParameterNode.java
@@ -31,6 +31,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.schema.metamodel.v2.Annotation;
 import org.apache.causeway.schema.metamodel.v2.MetamodelElement;
@@ -53,7 +54,8 @@ public class ParameterNode extends MMNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".ParameterNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private Param parameter;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/PropertyNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/PropertyNode.java
index f8e8dd4f2a..549c28549f 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/PropertyNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/PropertyNode.java
@@ -28,6 +28,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.schema.metamodel.v2.Annotation;
 import org.apache.causeway.schema.metamodel.v2.Member;
@@ -48,7 +49,8 @@ public class PropertyNode extends MemberNode {
 
     public static final String LOGICAL_TYPE_NAME = 
CausewayModuleApplib.NAMESPACE + ".PropertyNode";
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private org.apache.causeway.schema.metamodel.v2.Property 
property;
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/TypeNode.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/TypeNode.java
index ab47599d6e..5359144226 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/TypeNode.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/TypeNode.java
@@ -32,6 +32,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.internal.collections._Streams;
 import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
@@ -57,7 +58,8 @@ public class TypeNode extends MMNode {
 
     @Inject protected transient SpecificationLoader specificationLoader;
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter private DomainClassDto domainClassDto;
 
     @Override
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_Hidden.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_Hidden.java
index 8c8a849850..e4d8e43051 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_Hidden.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_Hidden.java
@@ -26,6 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.Where;
 import 
org.apache.causeway.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.causeway.core.metamodel.facets.all.hide.HiddenFacet;
@@ -46,7 +47,8 @@ extends ActionAnnotationFacetFactoryTest {
     void withAnnotation() {
 
         class Customer {
-            @Action(hidden = Where.REFERENCES_PARENT)
+            @Action
+            @ActionLayout(hidden = Where.REFERENCES_PARENT)
             public void someAction() {
             }
         }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index 653ccb4d6a..56fc647a1b 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -33,6 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.calls;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 import org.apache.causeway.applib.annotation.Where;
 import 
org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.CollectionSemantics;
 import org.apache.causeway.core.metamodel.commons.matchers.CausewayMatchers;
@@ -107,7 +108,8 @@ extends AbstractFacetFactoryJupiterTestCase {
             class Order {
             }
             class Customer {
-                @Collection(hidden = Where.REFERENCES_PARENT)
+                @Collection
+                @CollectionLayout(hidden = Where.REFERENCES_PARENT)
                 public List<Order> getOrders() {
                     return null;
                 }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 76eb90f51c..4f8cdf5edc 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -38,6 +38,7 @@ import static org.mockito.Mockito.calls;
 
 import org.apache.causeway.applib.annotation.Optionality;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Publishing;
 import org.apache.causeway.applib.annotation.Snapshot;
 import org.apache.causeway.applib.annotation.Where;
@@ -399,7 +400,8 @@ class PropertyAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJupiterTest
 
             @SuppressWarnings("unused")
             class Customer {
-                @Property(hidden = Where.REFERENCES_PARENT)
+                @Property
+                @PropertyLayout(hidden = Where.REFERENCES_PARENT)
                 @Getter @Setter private String name;
             }
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenAllTables.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenAllTables.java
index 0e25256ee4..5088a8ada0 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenAllTables.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenAllTables.java
@@ -19,14 +19,16 @@
  */
 package demoapp.dom.domain.actions.Action.hidden;
 
-import lombok.RequiredArgsConstructor;
-
 import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.Where;
 
+import lombok.RequiredArgsConstructor;
+
 //tag::class[]
-@Action(hidden = Where.ALL_TABLES)                    // <.>
+@Action // TODO Actions's hidden attribute will be removed in 2.0
+@ActionLayout(hidden = Where.ALL_TABLES)                    // <.>
 @RequiredArgsConstructor
 public class ActionHidden_changeNameHiddenAllTables {
     // ...
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenEverywhere.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenEverywhere.java
index f2604c29b7..4bc0d0ee4a 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenEverywhere.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenEverywhere.java
@@ -19,14 +19,16 @@
  */
 package demoapp.dom.domain.actions.Action.hidden;
 
-import lombok.RequiredArgsConstructor;
-
 import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.Where;
 
+import lombok.RequiredArgsConstructor;
+
 //tag::class[]
-@Action(hidden = Where.EVERYWHERE)                    // <.>
+@Action // TODO Actions's hidden attribute will be removed in 2.0
+@ActionLayout(hidden = Where.EVERYWHERE)                    // <.>
 @RequiredArgsConstructor
 public class ActionHidden_changeNameHiddenEverywhere {
     // ...
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenObjectForms.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenObjectForms.java
index 778655d6f1..5cac2d9bca 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenObjectForms.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHidden_changeNameHiddenObjectForms.java
@@ -19,14 +19,16 @@
  */
 package demoapp.dom.domain.actions.Action.hidden;
 
-import lombok.RequiredArgsConstructor;
-
 import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.Where;
 
+import lombok.RequiredArgsConstructor;
+
 //tag::class[]
-@Action(hidden = Where.OBJECT_FORMS)                    // <.>
+@Action // TODO Actions's hidden attribute will be removed in 2.0
+@ActionLayout(hidden = Where.OBJECT_FORMS)                    // <.>
 @RequiredArgsConstructor
 public class ActionHidden_changeNameHiddenObjectForms {
     // ...
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsPage.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsPage.java
index 398b650bb4..3e47e8e852 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsPage.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsPage.java
@@ -158,8 +158,8 @@ public class ActionSemanticsPage implements 
HasAsciiDocDescription {
 //tag::action-semantics-safe-and-request-cacheable[]
     @Action(
         semantics = SemanticsOf.SAFE_AND_REQUEST_CACHEABLE          // <.>
-        , hidden = Where.EVERYWHERE                                 // <.>
     )
+    @ActionLayout(hidden = Where.EVERYWHERE)                        // <.>
     public int queryPropertyForSafeAndRequestCacheable() {
         ++numberOfTimesActionSafeAndRequestCacheableWasExecuted;    // <.>
         return getPropertyForSafeAndRequestCacheable();
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/hidden/CollectionHiddenPage.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/hidden/CollectionHiddenPage.java
index acede92261..bc7db15a78 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/hidden/CollectionHiddenPage.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/hidden/CollectionHiddenPage.java
@@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Editing;
 import org.apache.causeway.applib.annotation.Nature;
@@ -57,8 +58,8 @@ public class CollectionHiddenPage implements 
HasAsciiDocDescription {
     }
 
 //tag::collection[]
-    @Collection(
-            hidden = Where.PARENTED_TABLES)
+    @Collection // TODO Collection's hidden attribute will be removed in 2.0
+    @CollectionLayout(hidden = Where.PARENTED_TABLES)
     @XmlTransient
     @Getter @Setter
     private List<DemoEntity> collection = new ArrayList<>();
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/progmodel/objects/mixins/mixins/FibonacciNumberVm.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/progmodel/objects/mixins/mixins/FibonacciNumberVm.java
index 808207b307..1478d7ab31 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/progmodel/objects/mixins/mixins/FibonacciNumberVm.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/progmodel/objects/mixins/mixins/FibonacciNumberVm.java
@@ -18,15 +18,21 @@
  */
 package demoapp.dom.domain.progmodel.objects.mixins.mixins;
 
+import javax.inject.Named;
+
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Editing;
+import org.apache.causeway.applib.annotation.Nature;
+import org.apache.causeway.applib.annotation.ObjectSupport;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Where;
+
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.inject.Named;
-
-import org.apache.causeway.applib.annotation.*;
-
 @Named("demo.FibonacciNumberVm")
 @DomainObject(
         nature=Nature.VIEW_MODEL,
@@ -47,7 +53,8 @@ public class FibonacciNumberVm {
     @Getter @Setter
     private int fibonacci;
 
-    @Property(hidden = Where.REFERENCES_PARENT)
+    @Property
+    @PropertyLayout(hidden = Where.REFERENCES_PARENT)
     @Getter @Setter
     private CountHolder parent;
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHidden.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHidden.java
index e7c1fe6a99..7d32769709 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHidden.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHidden.java
@@ -18,12 +18,13 @@
  */
 package demoapp.dom.domain.properties.Property.hidden;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom._infra.values.ValueHolder;
-
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom._infra.values.ValueHolder;
+
 //tag::class[]
 public abstract class PropertyHidden
 //end::class[]
@@ -51,19 +52,22 @@ public abstract class PropertyHidden
 //end::none[]
 
 //tag::object-forms[]
-    @Property(hidden = Where.OBJECT_FORMS)          // <.>
+    @Property //TODO property's hidden attribute will be removed in 2.0-final
+    @PropertyLayout(hidden = Where.OBJECT_FORMS)          // <.>
     public abstract String getNameHiddenObjectForms();
     public abstract void setNameHiddenObjectForms(String value);
 //end::object-forms[]
 
 //tag::all-tables[]
-    @Property(hidden = Where.ALL_TABLES)            // <.>
+    @Property //TODO property's hidden attribute will be removed in 2.0-final
+    @PropertyLayout(hidden = Where.ALL_TABLES)            // <.>
     public abstract String getNameHiddenAllTables();
     public abstract void setNameHiddenAllTables(String value);
 //end::all-tables[]
 
 //tag::everywhere[]
-    @Property(hidden = Where.EVERYWHERE)            // <.>
+    @Property //TODO property's hidden attribute will be removed in 2.0-final
+    @PropertyLayout(hidden = Where.EVERYWHERE)            // <.>
     public abstract String getNameHiddenEverywhere();
     public abstract void setNameHiddenEverywhere(String value);
 //end::everywhere[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/jpa/PropertyHiddenJpa.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/jpa/PropertyHiddenJpa.java
index c4be82a512..1e67ca5c9b 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/jpa/PropertyHiddenJpa.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/jpa/PropertyHiddenJpa.java
@@ -18,20 +18,27 @@
  */
 package demoapp.dom.domain.properties.Property.hidden.jpa;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom._infra.values.ValueHolder;
+import javax.inject.Named;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.springframework.context.annotation.Profile;
+
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Nature;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Where;
+import 
org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
+
 import demoapp.dom.domain.properties.Property.hidden.PropertyHidden;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.inject.Named;
-import javax.persistence.*;
-
-import org.apache.causeway.applib.annotation.*;
-import 
org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-import org.springframework.context.annotation.Profile;
-
 @Profile("demo-jpa")
 @Entity
 @Table(
@@ -48,7 +55,7 @@ public class PropertyHiddenJpa extends PropertyHidden {
     // ...
 //end::class[]
 
-    public PropertyHiddenJpa(String value) {
+    public PropertyHiddenJpa(final String value) {
         setName(value);
         setNameHiddenAllTables(value);
         setNameHiddenEverywhere(value);
@@ -63,15 +70,18 @@ public class PropertyHiddenJpa extends PropertyHidden {
     @Getter @Setter
     private String name;
 
-    @Property(hidden = Where.ALL_TABLES)
+    @Property // TODO Property's hidden attribute will be removed in 2.0
+    @PropertyLayout(hidden = Where.ALL_TABLES)
     @Getter @Setter
     private String nameHiddenAllTables;
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property // TODO Property's hidden attribute will be removed in 2.0
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter
     private String nameHiddenEverywhere;
 
-    @Property(hidden = Where.OBJECT_FORMS)
+    @Property // TODO Property's hidden attribute will be removed in 2.0
+    @PropertyLayout(hidden = Where.OBJECT_FORMS)
     @Getter @Setter
     private String nameHiddenObjectForms;
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
index 4569181f25..c2def6e44c 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
@@ -66,9 +66,9 @@ public class PropertyProjectingChildVm implements 
HasAsciiDocDescription {
 
 //tag::projecting[]
     @Property(
-        projecting = Projecting.PROJECTED   // <.>
-        , hidden = Where.EVERYWHERE         // <.>
+        projecting = Projecting.PROJECTED       // <.>
     )
+    @PropertyLayout(hidden = Where.EVERYWHERE)  // <.>
     public PropertyProjectingChildEntity getBackingEntity() {
         return backingEntityJpa!=null
                 ? backingEntityJpa
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHidden.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHidden.java
index f2cc4320fc..fe064748b1 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHidden.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHidden.java
@@ -18,12 +18,13 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.hidden;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom._infra.values.ValueHolder;
-
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom._infra.values.ValueHolder;
+
 //tag::class[]
 public abstract class PropertyLayoutHidden
 //end::class[]
@@ -51,19 +52,22 @@ public abstract class PropertyLayoutHidden
 //end::none[]
 
 //tag::object-forms[]
-    @Property(hidden = Where.OBJECT_FORMS)          // <.>
+    @Property
+    @PropertyLayout(hidden = Where.OBJECT_FORMS)          // <.>
     public abstract String getNameHiddenObjectForms();
     public abstract void setNameHiddenObjectForms(String value);
 //end::object-forms[]
 
 //tag::all-tables[]
-    @Property(hidden = Where.ALL_TABLES)            // <.>
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)            // <.>
     public abstract String getNameHiddenAllTables();
     public abstract void setNameHiddenAllTables(String value);
 //end::all-tables[]
 
 //tag::everywhere[]
-    @Property(hidden = Where.EVERYWHERE)            // <.>
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)            // <.>
     public abstract String getNameHiddenEverywhere();
     public abstract void setNameHiddenEverywhere(String value);
 //end::everywhere[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/jpa/PropertyLayoutHiddenJpa.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/jpa/PropertyLayoutHiddenJpa.java
index ea90eb57eb..a0af645f4b 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/jpa/PropertyLayoutHiddenJpa.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/jpa/PropertyLayoutHiddenJpa.java
@@ -18,20 +18,26 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.hidden.jpa;
 
-import 
demoapp.dom.domain.properties.PropertyLayout.hidden.PropertyLayoutHidden;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
 import javax.inject.Named;
-import javax.persistence.*;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.springframework.context.annotation.Profile;
 
 import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.annotation.Where;
 import 
org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-import org.springframework.context.annotation.Profile;
+
+import 
demoapp.dom.domain.properties.PropertyLayout.hidden.PropertyLayoutHidden;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 @Profile("demo-jpa")
 @Entity
@@ -49,7 +55,7 @@ public class PropertyLayoutHiddenJpa extends 
PropertyLayoutHidden {
     // ...
 //end::class[]
 
-    public PropertyLayoutHiddenJpa(String value) {
+    public PropertyLayoutHiddenJpa(final String value) {
         setName(value);
         setNameHiddenAllTables(value);
         setNameHiddenEverywhere(value);
@@ -64,15 +70,18 @@ public class PropertyLayoutHiddenJpa extends 
PropertyLayoutHidden {
     @Getter @Setter
     private String name;
 
-    @Property(hidden = Where.ALL_TABLES)
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
     @Getter @Setter
     private String nameHiddenAllTables;
 
-    @Property(hidden = Where.EVERYWHERE)
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter @Setter
     private String nameHiddenEverywhere;
 
-    @Property(hidden = Where.OBJECT_FORMS)
+    @Property
+    @PropertyLayout(hidden = Where.OBJECT_FORMS)
     @Getter @Setter
     private String nameHiddenObjectForms;
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturning.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturning.java
index 851b2e8ab4..eefe38ce7c 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturning.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturning.java
@@ -22,15 +22,13 @@ import java.awt.image.BufferedImage;
 
 import org.apache.causeway.applib.annotation.Action;
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.annotation.Where;
 
 import lombok.RequiredArgsConstructor;
 
 
 //tag::class[]
 @Action(
-        semantics = SemanticsOf.SAFE,
-        hidden = Where.EVERYWHERE   // TODO: not yet supported
+        semantics = SemanticsOf.SAFE
     )
 @RequiredArgsConstructor
 public class JavaAwtBufferedImageHolder_actionReturning {
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturningCollection.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturningCollection.java
index c8a3375142..2ab049f700 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturningCollection.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_actionReturningCollection.java
@@ -26,7 +26,6 @@ import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Action;
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.annotation.Where;
 
 import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
@@ -34,8 +33,7 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Action(
-        semantics = SemanticsOf.SAFE,
-        hidden = Where.EVERYWHERE   // TODO: not yet supported
+        semantics = SemanticsOf.SAFE
 )
 @RequiredArgsConstructor
 public class JavaAwtBufferedImageHolder_actionReturningCollection {
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
index 4eea62c4a4..4355492612 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
@@ -27,14 +27,12 @@ import org.apache.causeway.applib.annotation.Optionality;
 import org.apache.causeway.applib.annotation.Parameter;
 import org.apache.causeway.applib.annotation.PromptStyle;
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.annotation.Where;
 
 import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        hidden = Where.EVERYWHERE   // TODO: action parameters for images not 
yet supported.
+        semantics = SemanticsOf.IDEMPOTENT
 )
 @ActionLayout(
         promptStyle = PromptStyle.INLINE
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
index 7e66549d02..2ae7e3f600 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
@@ -25,14 +25,12 @@ import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.PromptStyle;
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.annotation.Where;
 
 import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        hidden = Where.EVERYWHERE   // TODO: action parameters for images not 
yet supported.
+        semantics = SemanticsOf.IDEMPOTENT
 )
 @ActionLayout(
         promptStyle = PromptStyle.INLINE
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
index 4a8433c397..5c8dc13965 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
@@ -29,15 +29,13 @@ import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.PromptStyle;
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.annotation.Where;
 
 import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        hidden = Where.EVERYWHERE   // TODO: action parameters for images not 
yet supported.
+        semantics = SemanticsOf.IDEMPOTENT
 )
 @ActionLayout(
         promptStyle = PromptStyle.INLINE
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUser.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUser.java
index e41390bfd9..8a4319c003 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUser.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUser.java
@@ -553,9 +553,8 @@ public abstract class ApplicationUser
 
     // -- ENCRYPTED PASSWORD
 
-    @Property(
-            hidden = Where.EVERYWHERE
-    )
+    @Property
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, 
ElementType.ANNOTATION_TYPE })
     @Retention(RetentionPolicy.RUNTIME)
     public @interface EncryptedPassword {
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
index 059dd4c6d6..d485690fbd 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
@@ -38,12 +38,12 @@ import lombok.RequiredArgsConstructor;
  * @since 2.0 {@index}
  */
 @Property(
-        editing = Editing.DISABLED,
-        hidden = Where.ALL_TABLES)
+        editing = Editing.DISABLED)
 @PropertyLayout(
         fieldSetId = "regional",
         describedAs = "Timezone ID as stored in your current session. 
(Logout/Login to change.)",
-        sequence = "2"
+        sequence = "2",
+        hidden = Where.ALL_TABLES
 )
 @RequiredArgsConstructor
 public class ApplicationUser_timeZone {
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actions/ActionParametersForm.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actions/ActionParametersForm.java
index 37afdd03e9..e71cbcdccf 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -149,12 +149,14 @@ extends PromptFormAbstract<ActionModel> {
             .map(paramModel->{
 
                 val paramIndexForReassessment = paramModel.getParameterIndex();
+                val paramPanel = paramPanels.get(paramIndexForReassessment);
                 val actionParameter = paramModel.getMetaModel();
 
+                // updates the paramNegotiationModel
                 actionParameter.reassessDefault(paramNegotiationModel);
                 _Xray.reassessedDefault(paramIndexForReassessment, 
paramNegotiationModel);
 
-                val paramPanel = paramPanels.get(paramIndexForReassessment);
+                // repaint is calculated based on changes to the
                 val paramRepaint = paramPanel.updateIfNecessary(paramModel, 
Optional.of(target));
                 if(paramRepaint.isParamOnly()) {
                     
paramOnlyUpdateRequestsHavingParamIndex.add(paramIndexForReassessment);
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index af9f0de1c5..11257acf39 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -608,7 +608,11 @@ implements ScalarModelChangeListener {
     * @param paramModel - the action being invoked
     * @param target - in case there's more to be repainted...
     *
-    * @return - true if changed as a result of these pending arguments.
+    * @return - {@link Repaint} as a result of these pending arguments<ul>
+    * <li>{@link Repaint#NOTHING} if nothing changed</li>
+    * <li>{@link Repaint#PARAM_ONLY} if param value changed</li>
+    * <li>{@link Repaint#ENTIRE_FORM} if layout changed</li>
+    * </ul>
     */
    public Repaint updateIfNecessary(
            final @NonNull UiParameter paramModel,

Reply via email to