From a5d321c8d8665a84299e49edf1c85bb4fdee5795 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 21 Sep 2022 10:50:19 +0200 Subject: [PATCH] Make icon sizes configurable --- .../org/argeo/cms/osgi/BundleCmsTheme.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/org.argeo.cms/src/org/argeo/cms/osgi/BundleCmsTheme.java b/org.argeo.cms/src/org/argeo/cms/osgi/BundleCmsTheme.java index de7eec8c2..3443d73a6 100644 --- a/org.argeo.cms/src/org/argeo/cms/osgi/BundleCmsTheme.java +++ b/org.argeo.cms/src/org/argeo/cms/osgi/BundleCmsTheme.java @@ -31,11 +31,17 @@ import org.osgi.framework.BundleContext; * / ** /*.{png,gif,jpeg,...}.
*/ public class BundleCmsTheme implements CmsTheme { - public final static String DEFAULT_CMS_THEME_BUNDLE = "org.argeo.theme.argeo2"; +// public final static String DEFAULT_CMS_THEME_BUNDLE = "org.argeo.theme.argeo2"; - public final static String CMS_THEME_PROPERTY = "argeo.cms.theme"; +// public final static String CMS_THEME_PROPERTY = "argeo.cms.theme"; + @Deprecated public final static String CMS_THEME_BUNDLE_PROPERTY = "argeo.cms.theme.bundle"; + /** Declared theme ID, to be used by OSGi services to reference it as parent. */ + public final static String THEME_ID_PROPERTY = "themeId"; + public final static String SMALL_ICON_SIZE_PROPERTY = "smallIconSize"; + public final static String BIG_ICON_SIZE_PROPERTY = "bigIconSize"; + private final static String HEADER_CSS = "header.css"; private final static String FONTS_TXT = "fonts.txt"; private final static String BODY_HTML = "body.html"; @@ -45,6 +51,8 @@ public class BundleCmsTheme implements CmsTheme { private CmsTheme parentTheme; private String themeId; + private String declaredThemeId;; + private Set webCssPaths = new TreeSet<>(); private Set rapCssPaths = new TreeSet<>(); private Set swtCssPaths = new TreeSet<>(); @@ -71,6 +79,12 @@ public class BundleCmsTheme implements CmsTheme { } public void init(BundleContext bundleContext, Map properties) { + declaredThemeId = properties.get(THEME_ID_PROPERTY); + if (properties.containsKey(SMALL_ICON_SIZE_PROPERTY)) + smallIconSize = Integer.valueOf(properties.get(SMALL_ICON_SIZE_PROPERTY)); + if (properties.containsKey(BIG_ICON_SIZE_PROPERTY)) + smallIconSize = Integer.valueOf(properties.get(BIG_ICON_SIZE_PROPERTY)); + initResources(bundleContext, null); } @@ -103,6 +117,10 @@ public class BundleCmsTheme implements CmsTheme { // swtCssPath = "/swt/"; // this.themeId = RWT.DEFAULT_THEME_ID; this.themeId = themeBundle.getSymbolicName(); + if (declaredThemeId != null && !declaredThemeId.equals(themeId)) + throw new IllegalArgumentException( + "Declared theme id " + declaredThemeId + " is different from " + themeId); + webCssPaths = addCss(themeBundle, "/css/"); rapCssPaths = addCss(themeBundle, "/rap/"); swtCssPaths = addCss(themeBundle, "/swt/"); @@ -373,4 +391,12 @@ public class BundleCmsTheme implements CmsTheme { this.parentTheme = parentTheme; } + public void setSmallIconSize(Integer smallIconSize) { + this.smallIconSize = smallIconSize; + } + + public void setBigIconSize(Integer bigIconSize) { + this.bigIconSize = bigIconSize; + } + } -- 2.30.2