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;
}