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 d921ad69c2c CAUSEWAY-3889: polishing API
d921ad69c2c is described below

commit d921ad69c2ceee17c85cdf766d8faff9ceb34e46
Author: Andi Huber <[email protected]>
AuthorDate: Tue Aug 19 19:16:59 2025 +0200

    CAUSEWAY-3889: polishing API
    
    - for embedded images we replace the default CSS class 'objectImage' w/
    'objectImageEmbedded', which allows to render them differently e.g.
    don't constrain image sizes, as these should be driven by embedded data
    
    - moving embedded image DataUri factory to DataUri
---
 .../org/apache/causeway/applib/value/Markup.java    | 12 ------------
 .../causeway/applib/value/NamedWithMimeType.java    | 19 -------------------
 .../org/apache/causeway/commons/net/DataUri.java    | 21 +++++++++++++++++++++
 .../object/icontitle/ObjectIconAndTitlePanel.java   |  7 ++++---
 .../bootstrap/css/bootstrap-overrides-all-v2.css    |  2 +-
 5 files changed, 26 insertions(+), 35 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/value/Markup.java 
b/api/applib/src/main/java/org/apache/causeway/applib/value/Markup.java
index 27c2b97ed61..1df0d836b25 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/value/Markup.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/Markup.java
@@ -21,7 +21,6 @@
 import java.io.Serializable;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 import jakarta.inject.Named;
@@ -32,12 +31,10 @@
 
 import org.apache.causeway.applib.CausewayModuleApplib;
 import org.apache.causeway.applib.annotation.Value;
-import org.apache.causeway.applib.value.NamedWithMimeType.ImageType;
 import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.base._Text;
 import org.apache.causeway.commons.io.TextUtils;
 import org.apache.causeway.commons.net.DataUri;
-import org.apache.causeway.commons.net.DataUri.Encoding;
 
 /**
  * Intended to be used as a read-only property, to render plain HTML.
@@ -61,15 +58,6 @@ public static Markup embeddedImage(final @Nullable DataUri 
dataUri) {
                 : new Markup(null);
     }
 
-    //TODO[causeway-applib-CAUSEWAY-3889] perhaps remove!
-    // instead lets have image specific factory methods for DataUri
-    @Deprecated
-    public static Markup embeddedImage(final ImageType imageType, byte[] 
imageData) {
-        Objects.requireNonNull(imageType);
-        Objects.requireNonNull(imageData);
-        return embeddedImage(new DataUri(imageType.mimeType().baseType(), 
null, Encoding.BASE64, imageData));
-    }
-
     // -- CONSTRUCTION
 
     public Markup() {
diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/value/NamedWithMimeType.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/value/NamedWithMimeType.java
index dfa16903e46..30429b7982e 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/value/NamedWithMimeType.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/value/NamedWithMimeType.java
@@ -31,7 +31,6 @@
 import org.apache.causeway.commons.internal.base._Strings;
 
 import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import lombok.experimental.Accessors;
 
 /**
@@ -64,24 +63,6 @@ default int compareTo(final NamedWithMimeType o) {
                     : null);
     }
 
-    //TODO[causeway-applib-CAUSEWAY-3889] perhaps remove!
-    // we need something similar for constructing DataUri instances for 
embedded images
-    @Deprecated
-    @RequiredArgsConstructor
-    @Getter @Accessors(fluent=true)
-    public enum ImageType {
-        BMP(CommonMimeType.BMP),
-        GIF(CommonMimeType.GIF),
-        ICO(CommonMimeType.ICO),
-        JPEG(CommonMimeType.JPEG),
-        PNG(CommonMimeType.PNG),
-        SVG(CommonMimeType.SVG),
-        TIFF(CommonMimeType.TIFF),
-        WEBP(CommonMimeType.WEBP);
-        @Getter @Accessors(fluent=true)
-        final CommonMimeType mimeType;
-    }
-
     /**
      * Subset of MimeTypes most commonly used.
      *
diff --git a/commons/src/main/java/org/apache/causeway/commons/net/DataUri.java 
b/commons/src/main/java/org/apache/causeway/commons/net/DataUri.java
index 164550043a9..7bc496088d5 100644
--- a/commons/src/main/java/org/apache/causeway/commons/net/DataUri.java
+++ b/commons/src/main/java/org/apache/causeway/commons/net/DataUri.java
@@ -25,6 +25,7 @@
 import java.util.Arrays;
 import java.util.Base64;
 import java.util.List;
+import java.util.Locale;
 import java.util.Objects;
 import java.util.stream.IntStream;
 
@@ -52,6 +53,20 @@ public enum Encoding {
         BASE64
     }
 
+    public enum ImageType {
+        BMP,
+        GIF,
+        ICO,
+        JPEG,
+        PNG,
+        SVG,
+        TIFF,
+        WEBP;
+        public String mediaType() {
+            return "image/" + name().toLowerCase(Locale.ROOT);
+        }
+    }
+
     // -- FACTORIES
 
     @SneakyThrows
@@ -84,6 +99,12 @@ public static DataUri parse(String dataURI) {
         return new DataUri(mediaType, parameters, encoding, 
decodeData(encoding, dataPart));
     }
 
+    public static DataUri embeddedImage(final ImageType imageType, byte[] 
imageData) {
+        Objects.requireNonNull(imageType);
+        Objects.requireNonNull(imageData);
+        return new DataUri(imageType.mediaType(), null, Encoding.BASE64, 
imageData);
+    }
+
     // -- CONSTRUCTION
 
     // canonical constructor
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
index 26e4a355b84..80fc51d0860 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
@@ -123,9 +123,10 @@ private AbstractLink createLinkWithIconAndTitle() {
                     WktComponents.permanentlyHide(link, 
ID_OBJECT_FONT_AWESOME_RIGHT);
                 },
                 iconEmbedded->{
-                    //TODO[causeway-viewer-wicket-ui-CAUSEWAY-3889] for 
embedded images we me might want to have a different CSS class
-                    //e.g. don't constrain image sizes, as these should be 
driven by embedded data
-                    Wkt.imageAddEmbedded(link, ID_OBJECT_ICON, 
iconEmbedded.dataUri());
+                    // for embedded images we replace the default CSS class 
'objectImage' w/ 'objectImageEmbedded'
+                    // which allows to render them differently e.g. don't 
constrain image sizes, as these should be driven by embedded data
+                    var img = Wkt.imageAddEmbedded(link, ID_OBJECT_ICON, 
iconEmbedded.dataUri());
+                    Wkt.attributeReplace(img, "class", "objectImageEmbedded");
                     WktComponents.permanentlyHide(link, 
ID_OBJECT_FONT_AWESOME_LEFT);
                     WktComponents.permanentlyHide(link, 
ID_OBJECT_FONT_AWESOME_RIGHT);
                 },
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
index bfff5b6d02c..9e88d6d5edc 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
@@ -173,7 +173,7 @@ footer > .navbar {
 
 /* from ActionPromptHeaderPanel */
 
-.objectIconAndTitlePanel img {
+.objectIconAndTitlePanel img.objectIcon {
     width: 24px;
     height: 24px;
 }

Reply via email to