This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/main by this push:
new cda70da2c75 CAUSEWAY-3983: removes tab content when always hidden
cda70da2c75 is described below
commit cda70da2c752a3240191929fb46ec6eabf729bdf
Author: andi-huber <[email protected]>
AuthorDate: Thu Mar 26 15:14:11 2026 +0100
CAUSEWAY-3983: removes tab content when always hidden
---
.../apache/causeway/applib/annotation/Where.java | 4 ++
.../layout/grid/bootstrap/BSGridTransformer.java | 45 +++++++++++++++++-----
2 files changed, 39 insertions(+), 10 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Where.java
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Where.java
index c293b8609b0..000943dd4eb 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Where.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Where.java
@@ -213,6 +213,10 @@ public boolean inStandaloneTable() {
|| this == ALL_TABLES;
}
+ public boolean isObjectForms() {
+ return this == OBJECT_FORMS;
+ }
+
/**
* Whether this <tt>Where</tt> is a superset of the context <tt>Where</tt>
provided.
*
diff --git
a/api/applib/src/main/java/org/apache/causeway/applib/layout/grid/bootstrap/BSGridTransformer.java
b/api/applib/src/main/java/org/apache/causeway/applib/layout/grid/bootstrap/BSGridTransformer.java
index 7debb6475e6..60f053d52aa 100644
---
a/api/applib/src/main/java/org/apache/causeway/applib/layout/grid/bootstrap/BSGridTransformer.java
+++
b/api/applib/src/main/java/org/apache/causeway/applib/layout/grid/bootstrap/BSGridTransformer.java
@@ -25,6 +25,7 @@
import org.apache.causeway.applib.layout.component.ActionLayoutData;
import org.apache.causeway.applib.layout.component.CollectionLayoutData;
import org.apache.causeway.applib.layout.component.DomainObjectLayoutData;
+import org.apache.causeway.applib.layout.component.HasHidden;
import org.apache.causeway.applib.layout.component.PropertyLayoutData;
import
org.apache.causeway.applib.layout.grid.bootstrap.BSElement.BSElementVisitor;
import org.apache.causeway.commons.internal.base._NullSafe;
@@ -48,19 +49,30 @@ public BSGrid apply(final BSGrid bsGrid) {
// first phase: collect all empty tabs for removal
bsGrid.visit(new BSElementVisitor() {
- final Stack<Flag> stack = new Stack<Flag>();
+ final Stack<Flag> stack = new Stack<>();
@Override public void visit(final ActionLayoutData
actionLayoutData) {
- if(_NullSafe.isEmpty(actionLayoutData.getMetadataError()))
keep();
+ if(_NullSafe.isEmpty(actionLayoutData.getMetadataError())
+ && !isAlwaysHidden(actionLayoutData)) {
+ keep();
+ }
}
@Override public void visit(final DomainObjectLayoutData
domainObjectLayoutData) {
-
if(_NullSafe.isEmpty(domainObjectLayoutData.getMetadataError())) keep();
+
if(_NullSafe.isEmpty(domainObjectLayoutData.getMetadataError())) {
+ keep();
+ }
}
@Override public void visit(final PropertyLayoutData
propertyLayoutData) {
-
if(_NullSafe.isEmpty(propertyLayoutData.getMetadataError())) keep();
+ if(_NullSafe.isEmpty(propertyLayoutData.getMetadataError())
+ && !isAlwaysHidden(propertyLayoutData)) {
+ keep();
+ }
}
@Override public void visit(final CollectionLayoutData
collectionLayoutData) {
-
if(_NullSafe.isEmpty(collectionLayoutData.getMetadataError())) keep();
+
if(_NullSafe.isEmpty(collectionLayoutData.getMetadataError())
+ && !isAlwaysHidden(collectionLayoutData)) {
+ keep();
+ }
}
@Override public void enter(final BSTab bsTab) {
@@ -73,6 +85,11 @@ public BSGrid apply(final BSGrid bsGrid) {
emptyTabs.add(bsTab);
}
}
+ private boolean isAlwaysHidden(final HasHidden hasHidden) {
+ if(hasHidden==null || hasHidden.getHidden()==null) return
false;
+ return hasHidden.getHidden().isAlways()
+ || hasHidden.getHidden().isObjectForms();
+ }
private void keep() {
stack.stream().forEach(row->row.keep=true);
}
@@ -105,19 +122,27 @@ public BSGrid apply(final BSGrid bsGrid) {
bsGrid.visit(new BSElementVisitor() {
- final Stack<Flag> stack = new Stack<Flag>();
+ final Stack<Flag> stack = new Stack<>();
@Override public void visit(final ActionLayoutData
actionLayoutData) {
- if(_NullSafe.isEmpty(actionLayoutData.getMetadataError()))
keep();
+ if(_NullSafe.isEmpty(actionLayoutData.getMetadataError()))
{
+ keep();
+ }
}
@Override public void visit(final DomainObjectLayoutData
domainObjectLayoutData) {
-
if(_NullSafe.isEmpty(domainObjectLayoutData.getMetadataError())) keep();
+
if(_NullSafe.isEmpty(domainObjectLayoutData.getMetadataError())) {
+ keep();
+ }
}
@Override public void visit(final PropertyLayoutData
propertyLayoutData) {
-
if(_NullSafe.isEmpty(propertyLayoutData.getMetadataError())) keep();
+
if(_NullSafe.isEmpty(propertyLayoutData.getMetadataError())) {
+ keep();
+ }
}
@Override public void visit(final CollectionLayoutData
collectionLayoutData) {
-
if(_NullSafe.isEmpty(collectionLayoutData.getMetadataError())) keep();
+
if(_NullSafe.isEmpty(collectionLayoutData.getMetadataError())) {
+ keep();
+ }
}
@Override public void enter(final BSRow bsRow) {