diff --git a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/AbstractWidgetRenderer.java b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/AbstractWidgetRenderer.java index 5b5ea68cb..2b9b3d524 100644 --- a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/AbstractWidgetRenderer.java +++ b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/AbstractWidgetRenderer.java @@ -49,12 +49,11 @@ import org.slf4j.LoggerFactory; * @author Kai Kreuzer - Initial contribution and API * @author Vlad Ivanov - BasicUI changes * @author Laurent Garnier - Refactor icon management to support other iconsets + * @author Laurent Garnier - primary/secondary colors */ @NonNullByDefault public abstract class AbstractWidgetRenderer implements WidgetRenderer { - private final Logger logger = LoggerFactory.getLogger(AbstractWidgetRenderer.class); - private static final String ICON_SOURCE_OH = "oh"; private static final String ICON_SOURCE_IF = "if"; private static final String ICON_SOURCE_ICONIFY = "iconify"; @@ -65,6 +64,11 @@ public abstract class AbstractWidgetRenderer implements WidgetRenderer { public static final String ICON_TYPE = "svg"; + public static final String PRIMARY_COLOR = "#3f51b5"; + public static final String SECONDARY_COLOR = "#ff4081"; + + private final Logger logger = LoggerFactory.getLogger(AbstractWidgetRenderer.class); + private final BundleContext bundleContext; protected final TranslationProvider i18nProvider; protected final ItemUIRegistry itemUIRegistry; @@ -350,6 +354,7 @@ public abstract class AbstractWidgetRenderer implements WidgetRenderer { String snippet = originalSnippet; color = itemUIRegistry.getLabelColor(w); + color = applyPrimaryOrSecondaryColor(color); if (color != null) { style = "style=\"color:" + color + "\""; @@ -358,6 +363,7 @@ public abstract class AbstractWidgetRenderer implements WidgetRenderer { style = ""; color = itemUIRegistry.getValueColor(w); + color = applyPrimaryOrSecondaryColor(color); if (color != null) { style = "style=\"color:" + color + "\""; @@ -375,6 +381,15 @@ public abstract class AbstractWidgetRenderer implements WidgetRenderer { return snippet; } + private @Nullable String applyPrimaryOrSecondaryColor(@Nullable String color) { + if ("primary".equals(color)) { + return PRIMARY_COLOR; + } else if ("secondary".equals(color)) { + return SECONDARY_COLOR; + } + return color; + } + protected @Nullable String getCategory(Widget w) { return itemUIRegistry.getCategory(w); } diff --git a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java index d1db8ed37..56a479d49 100644 --- a/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java +++ b/bundles/org.openhab.ui.basic/src/main/java/org/openhab/ui/basic/internal/render/PageRenderer.java @@ -51,6 +51,7 @@ import org.slf4j.LoggerFactory; * * @author Kai Kreuzer - Initial contribution and API * @author Vlad Ivanov - BasicUI changes + * @author Laurent Garnier - primary/secondary colors */ @Component(service = { PageRenderer.class }) @NonNullByDefault @@ -117,6 +118,8 @@ public class PageRenderer extends AbstractWidgetRenderer { snippet = snippet.replace("%icon_type%", ICON_TYPE); snippet = snippet.replace("%theme%", config.getTheme()); snippet = snippet.replace("%sitemapquery%", String.format("?sitemap=%s", sitemap)); + snippet = snippet.replace("%primarycolor%", PRIMARY_COLOR); + snippet = snippet.replace("%secondarycolor%", SECONDARY_COLOR); String[] parts = snippet.split("%children%"); diff --git a/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html b/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html index 71bbbc199..43d6e2b98 100644 --- a/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html +++ b/bundles/org.openhab.ui.basic/src/main/resources/snippets/main.html @@ -69,7 +69,7 @@ -
+