This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v4
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/v4 by this push:
new 8b6df7fea89 CAUSEWAY-3905: Support Rendering of Images (Collection of
Values)
8b6df7fea89 is described below
commit 8b6df7fea890d06e8f0d3674264e537f1c0d96ed
Author: a.huber <[email protected]>
AuthorDate: Tue Sep 23 09:48:58 2025 +0200
CAUSEWAY-3905: Support Rendering of Images (Collection of Values)
---
.../valuesemantics/BufferedImageValueSemantics.java | 20 ++++++++++++++++++++
.../ui/components/value/StandaloneValuePanel.java | 2 ++
2 files changed, 22 insertions(+)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
index dfa77b18983..96a25a82117 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
@@ -32,10 +32,13 @@
import org.apache.causeway.applib.value.Blob;
import org.apache.causeway.applib.value.NamedWithMimeType.CommonMimeType;
import org.apache.causeway.applib.value.semantics.OrderRelation;
+import org.apache.causeway.applib.value.semantics.Renderer;
import org.apache.causeway.applib.value.semantics.ValueDecomposition;
import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.commons.internal.image._Images;
+import org.apache.causeway.commons.net.DataUri;
+import org.apache.causeway.commons.net.DataUri.ImageType;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.object.ManagedObjects;
import org.apache.causeway.schema.common.v2.BlobDto;
@@ -125,6 +128,23 @@ private Blob toBlob(final BufferedImage img) {
// /*sonar-ignore-off*/
// }
+ // -- RENDERER
+
+ @Override
+ public Renderer<BufferedImage> getRenderer() {
+ return new Renderer<>() {
+ @Override public String titlePresentation(Context context,
BufferedImage img) {
+ if (img == null) return "no image";
+ return "Image %dx%d".formatted(img.getWidth(),
img.getHeight());
+ }
+ @Override public String htmlPresentation(Context context,
BufferedImage img) {
+ return "<img src=\"%s\"/>".formatted(
+ DataUri.embeddedImage(ImageType.PNG,
_Images.toBytes(img))
+ .toExternalForm());
+ }
+ };
+ }
+
// -- FACET
@Override
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/value/StandaloneValuePanel.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/value/StandaloneValuePanel.java
index 477852efa86..77febf2f2c2 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/value/StandaloneValuePanel.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/value/StandaloneValuePanel.java
@@ -18,6 +18,7 @@
*/
package org.apache.causeway.viewer.wicket.ui.components.value;
+import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.UUID;
@@ -66,6 +67,7 @@ private boolean isProbablySimpleInlineHtml(final
ObjectSpecification valueSpec)
var cls = valueSpec.getCorrespondingClass();
return PredefinedSerializables.isPredefinedSerializable(cls)
+ || BufferedImage.class.equals(cls)
|| UUID.class.equals(cls)
|| URL.class.equals(cls)
|| LocalResourcePath.class.equals(cls);