From 529b6da3f8d995b7089cf297aa6b4f7e3b75297a Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 13 Jan 2021 12:31:30 +0100 Subject: [PATCH] Fonts support in CMS Theme. --- .../src/org/argeo/cms/ui/CmsTheme.java | 3 ++ .../org/argeo/cms/ui/util/BundleCmsTheme.java | 44 +++++++++++++++---- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsTheme.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsTheme.java index 4b3d186f7..e5089e35f 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsTheme.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsTheme.java @@ -31,6 +31,9 @@ public interface CmsTheme { /** Relative paths to images such as icons. */ Set getImagesPaths(); + /** Relative paths to fonts. */ + Set getFontsPaths(); + /** Tags to be added to the header section of the HTML page. */ String getHtmlHeaders(); diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/BundleCmsTheme.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/BundleCmsTheme.java index 9b0d50e30..3b2669e02 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/BundleCmsTheme.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/BundleCmsTheme.java @@ -40,6 +40,7 @@ public class BundleCmsTheme extends AbstractCmsTheme { private Set rapCssPaths = new TreeSet<>(); private Set swtCssPaths = new TreeSet<>(); private Set imagesPaths = new TreeSet<>(); + private Set fontsPaths = new TreeSet<>(); private String headerCss; private List fonts = new ArrayList<>(); @@ -91,14 +92,15 @@ public class BundleCmsTheme extends AbstractCmsTheme { webCssPaths = addCss(themeBundle, "/css/"); rapCssPaths = addCss(themeBundle, "/rap/"); swtCssPaths = addCss(themeBundle, "/swt/"); - addResources("*.png"); - addResources("*.gif"); - addResources("*.jpg"); - addResources("*.jpeg"); - addResources("*.svg"); - addResources("*.ico"); - addResources("*.woff"); - addResources("*.woff2"); + addImages("*.png"); + addImages("*.gif"); + addImages("*.jpg"); + addImages("*.jpeg"); + addImages("*.svg"); + addImages("*.ico"); + + addFonts("*.woff"); + addFonts("*.woff2"); // fonts URL fontsUrl = themeBundle.getEntry(basePath + "fonts.txt"); @@ -180,7 +182,7 @@ public class BundleCmsTheme extends AbstractCmsTheme { } } - void addResources(String pattern) { + void addImages(String pattern) { Enumeration themeResources = themeBundle.findEntries(basePath, pattern, true); if (themeResources == null) return; @@ -199,6 +201,25 @@ public class BundleCmsTheme extends AbstractCmsTheme { } + void addFonts(String pattern) { + Enumeration themeResources = themeBundle.findEntries(basePath, pattern, true); + if (themeResources == null) + return; + while (themeResources.hasMoreElements()) { + String resource = themeResources.nextElement().getPath(); + // remove first '/' so that RWT registers it + resource = resource.substring(1); + if (!resource.endsWith("/")) { +// if (resources.containsKey(resource)) +// log.warn("Overriding " + resource + " from " + themeBundle.getSymbolicName()); +// resources.put(resource, themeBRL); + fontsPaths.add(resource); + } + + } + + } + @Override public InputStream getResourceAsStream(String resourceName) throws IOException { URL res = themeBundle.getEntry(resourceName); @@ -256,6 +277,11 @@ public class BundleCmsTheme extends AbstractCmsTheme { return imagesPaths; } + @Override + public Set getFontsPaths() { + return fontsPaths; + } + @Override public InputStream loadPath(String path) throws IOException { URL url = themeBundle.getResource(path); -- 2.30.2