You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/07/06 17:07:20 UTC

[causeway] branch master updated: CAUSEWAY-3523: ship with prism coy css override

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 7e108d766b CAUSEWAY-3523: ship with prism coy css override
7e108d766b is described below

commit 7e108d766b0127a65fe4bcbec585e0fa5ef2a894
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jul 6 19:07:15 2023 +0200

    CAUSEWAY-3523: ship with prism coy css override
---
 .../causeway/viewer/commons/prism/Prism.java       | 36 ++++++++++++++++------
 .../resources/webjars/prismoverride/prism-coy.css  | 24 +++++++++++++++
 .../scalars/markup/MarkupComponent_reloadJs.java   |  5 +--
 .../scalars/markup/_HighlightBehaviorPrism.java    | 15 +++++----
 .../viewer/wicket/ui/util/PrismResourcesWkt.java   | 12 +++++---
 5 files changed, 70 insertions(+), 22 deletions(-)

diff --git a/viewers/commons/prism/src/main/java/org/apache/causeway/viewer/commons/prism/Prism.java b/viewers/commons/prism/src/main/java/org/apache/causeway/viewer/commons/prism/Prism.java
index 8a9f038991..9d8110f3a6 100644
--- a/viewers/commons/prism/src/main/java/org/apache/causeway/viewer/commons/prism/Prism.java
+++ b/viewers/commons/prism/src/main/java/org/apache/causeway/viewer/commons/prism/Prism.java
@@ -18,23 +18,41 @@
  */
 package org.apache.causeway.viewer.commons.prism;
 
+import java.util.List;
+import java.util.Optional;
+
 import lombok.RequiredArgsConstructor;
 
 @RequiredArgsConstructor
 public enum Prism {
-    DEFAULT(""),
-    COY("-coy"),
-    DARK("-dark"),
-    FUNKY("-funky"),
-    OKAIDIA("-okaidia"),
-    SOLARIZEDLIGHT("-solarizedlight"),
-    TOMORROW("-tomorrow"),
-    TWILIGHT("-twilight"),
+    DEFAULT("", false),
+    COY("-coy", true),
+    DARK("-dark", false),
+    FUNKY("-funky", false),
+    OKAIDIA("-okaidia", false),
+    SOLARIZEDLIGHT("-solarizedlight", false),
+    TOMORROW("-tomorrow", false),
+    TWILIGHT("-twilight", false),
     ;
     final String themeSuffix;
-    public String cssFile() {
+    final boolean override;
+
+    public String cssPrimaryFile() {
         return "prism/themes/prism" + themeSuffix + ".min.css";
     }
+
+    public Optional<String> cssOverrideFile() {
+        return override
+                ? Optional.of("prismoverride/prism" + themeSuffix + ".css")
+                : Optional.empty();
+    }
+
+    public List<String> cssFiles() {
+        return cssOverrideFile()
+                .map(cssOverride->List.of(cssPrimaryFile(), cssOverride))
+                .orElse(List.of(cssPrimaryFile()));
+    }
+
     public String jsFile() {
         return "prism/prism" + ".js";
     }
diff --git a/viewers/commons/prism/src/main/resources/META-INF/resources/webjars/prismoverride/prism-coy.css b/viewers/commons/prism/src/main/resources/META-INF/resources/webjars/prismoverride/prism-coy.css
new file mode 100644
index 0000000000..b7d9d7280e
--- /dev/null
+++ b/viewers/commons/prism/src/main/resources/META-INF/resources/webjars/prismoverride/prism-coy.css
@@ -0,0 +1,24 @@
+/*
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+*/
+
+/* customized Prism theme COY */
+.listingblock pre[class*="language-"]::after,
+.listingblock pre[class*="language-"]::before {
+	box-shadow: none;
+}
\ No newline at end of file
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
index e1ad62508f..39376c325b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
@@ -24,6 +24,7 @@ import java.util.UUID;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 
 import lombok.val;
@@ -34,7 +35,7 @@ import lombok.val;
  */
 public class MarkupComponent_reloadJs {
 
-    public static CharSequence decorate(final CharSequence htmlContent, final Iterable<ResourceReference> jsRefs) {
+    public static CharSequence decorate(final CharSequence htmlContent, final Iterable<JavaScriptResourceReference> jsRefs) {
         val targetId = UUID.randomUUID().toString();
 
         val sb = new StringBuilder()
@@ -47,7 +48,7 @@ public class MarkupComponent_reloadJs {
         return sb.toString();
     }
 
-    public static CharSequence decorate(final CharSequence htmlContent, final ResourceReference jsRef) {
+    public static CharSequence decorate(final CharSequence htmlContent, final JavaScriptResourceReference jsRef) {
         return decorate(htmlContent, List.of(jsRef));
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/_HighlightBehaviorPrism.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/_HighlightBehaviorPrism.java
index b5c84d64f3..4d6bc5bd33 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/_HighlightBehaviorPrism.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/markup/_HighlightBehaviorPrism.java
@@ -23,7 +23,8 @@ import java.util.List;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 import org.apache.causeway.viewer.commons.prism.Prism;
 import org.apache.causeway.viewer.wicket.ui.util.PrismResourcesWkt;
@@ -36,16 +37,18 @@ class _HighlightBehaviorPrism implements _HighlightBehavior {
 
     private final Prism theme;
 
-    @Getter(lazy = true) private final ResourceReference cssResourceReference =
-            PrismResourcesWkt.cssResource(theme);
+    @Getter(lazy = true) private final List<CssResourceReference> cssResourceReferences =
+            PrismResourcesWkt.cssResources(theme);
 
-    @Getter(lazy = true) private final List<ResourceReference> jsResourceReferences =
+    @Getter(lazy = true) private final List<JavaScriptResourceReference> jsResourceReferences =
             PrismResourcesWkt.jsResources(theme);
 
     @Override
     public void renderHead(final IHeaderResponse response) {
-        response.render(CssHeaderItem.forReference(getCssResourceReference()));
-        for(ResourceReference jsRef : getJsResourceReferences()) {
+        for(CssResourceReference cssRef : getCssResourceReferences()) {
+            response.render(CssHeaderItem.forReference(cssRef));
+        }
+        for(JavaScriptResourceReference jsRef : getJsResourceReferences()) {
             response.render(JavaScriptHeaderItem.forReference(jsRef));
         }
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/PrismResourcesWkt.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/PrismResourcesWkt.java
index a93f5faaa2..8e414cf65a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/PrismResourcesWkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/PrismResourcesWkt.java
@@ -23,7 +23,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import org.apache.wicket.request.resource.CssResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 import org.apache.causeway.viewer.commons.prism.Prism;
 import org.apache.causeway.viewer.commons.prism.PrismLanguage;
@@ -38,15 +38,17 @@ public final class PrismResourcesWkt{
     /**
      * Returns the main Prism CSS resource for selected theme
      */
-    public CssResourceReference cssResource(final Prism theme) {
-        return new WebjarsCssResourceReference(theme.cssFile());
+    public List<CssResourceReference> cssResources(final Prism theme) {
+        return theme.cssFiles().stream()
+                .map(WebjarsCssResourceReference::new)
+                .collect(Collectors.toList());
     }
 
     /**
      * Returns the main Prism JS resources for selected theme + most common languages
      */
-    public List<ResourceReference> jsResources(final Prism theme) {
-        final List<ResourceReference> resources = PrismLanguage.mostCommon().stream()
+    public List<JavaScriptResourceReference> jsResources(final Prism theme) {
+        final List<JavaScriptResourceReference> resources = PrismLanguage.mostCommon().stream()
                 .map(PrismLanguage::jsFile)
                 .map(WebjarsJavaScriptResourceReference::new)
                 .collect(Collectors.toCollection(ArrayList::new));