From aca5b7b75e6a9c3d68acb1221b1dc6ba7f61b450 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Wed, 16 Feb 2022 09:57:22 +0000 Subject: [PATCH 1/3] Add live theme switching support --- pom.xml | 12 ++++++------ .../AbstractSolarizedThemeDescriptor.java | 5 +++++ .../solarizedtheme/SolarizedDarkTheme.java | 8 +++++++- .../solarizedtheme/SolarizedLightTheme.java | 6 ++++++ .../solarizedtheme/SolarizedRootAction.java | 2 +- .../solarizedtheme/SolarizedSystemTheme.java | 17 +++++++++++------ src/main/webapp/solarized-base.css | 2 +- src/main/webapp/solarized-dark.css | 12 +++++++++++- src/main/webapp/solarized-definitions.css | 2 +- src/main/webapp/solarized-light.css | 12 +++++++++++- src/main/webapp/solarized-system.css | 2 -- 11 files changed, 60 insertions(+), 20 deletions(-) delete mode 100644 src/main/webapp/solarized-system.css diff --git a/pom.xml b/pom.xml index 5a74dbb..536200b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,10 +1,10 @@ - + 4.0.0 org.jenkins-ci.plugins plugin - 4.10 + 4.34 io.jenkins.plugins @@ -14,7 +14,7 @@ 0.2 -SNAPSHOT - 2.248 + 2.336-rc32081.db_eed62c0c0e 8 true @@ -24,8 +24,8 @@ io.jenkins.tools.bom - bom-2.235.x - 13 + bom-2.319.x + 1155.v77b_fd92a_26fc import pom @@ -43,7 +43,7 @@ io.jenkins.plugins theme-manager - 0.5 + 0.7-rc94.26a_5398f092d diff --git a/src/main/java/io/jenkins/plugins/solarizedtheme/AbstractSolarizedThemeDescriptor.java b/src/main/java/io/jenkins/plugins/solarizedtheme/AbstractSolarizedThemeDescriptor.java index f81463c..21daae6 100644 --- a/src/main/java/io/jenkins/plugins/solarizedtheme/AbstractSolarizedThemeDescriptor.java +++ b/src/main/java/io/jenkins/plugins/solarizedtheme/AbstractSolarizedThemeDescriptor.java @@ -10,4 +10,9 @@ public abstract class AbstractSolarizedThemeDescriptor extends ThemeManagerFacto public String getThemeId() { return ID; } + + @Override + public boolean isNamespaced() { + return true; + } } diff --git a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedDarkTheme.java b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedDarkTheme.java index 03077c7..4538847 100644 --- a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedDarkTheme.java +++ b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedDarkTheme.java @@ -18,9 +18,15 @@ public SolarizedDarkTheme() { @Extension @Symbol("solarizedDark") public static class DescriptorImpl extends AbstractSolarizedThemeDescriptor { + + @Override + public String getThemeKey() { + return "solarized-dark"; + } + @Override public ThemeManagerFactory getInstance() { - return new SolarizedLightTheme(); + return new SolarizedDarkTheme(); } @Override diff --git a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedLightTheme.java b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedLightTheme.java index becebd7..970a205 100644 --- a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedLightTheme.java +++ b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedLightTheme.java @@ -18,6 +18,12 @@ public SolarizedLightTheme() { @Extension @Symbol("solarizedLight") public static class DescriptorImpl extends AbstractSolarizedThemeDescriptor { + + @Override + public String getThemeKey() { + return "solarized"; + } + @Override public ThemeManagerFactory getInstance() { return new SolarizedLightTheme(); diff --git a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedRootAction.java b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedRootAction.java index e9d3a97..616138a 100644 --- a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedRootAction.java +++ b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedRootAction.java @@ -36,7 +36,7 @@ public void doDynamic(StaplerRequest req, StaplerResponse rsp) throws IOExceptio if (cssFile.startsWith("/")) { cssFile = cssFile.substring(1); } - if (!Arrays.asList(AbstractSolarizedTheme.BASE_CSS, AbstractSolarizedTheme.DEFINITIONS_CSS, SolarizedSystemTheme.CSS, SolarizedLightTheme.CSS, SolarizedDarkTheme.CSS).contains(cssFile)) { + if (!Arrays.asList(AbstractSolarizedTheme.BASE_CSS, AbstractSolarizedTheme.DEFINITIONS_CSS, SolarizedLightTheme.CSS, SolarizedDarkTheme.CSS).contains(cssFile)) { rsp.sendError(404); return; } diff --git a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedSystemTheme.java b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedSystemTheme.java index 558799b..c54af4f 100644 --- a/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedSystemTheme.java +++ b/src/main/java/io/jenkins/plugins/solarizedtheme/SolarizedSystemTheme.java @@ -2,30 +2,35 @@ import edu.umd.cs.findbugs.annotations.NonNull; import hudson.Extension; +import io.jenkins.plugins.thememanager.Theme; import io.jenkins.plugins.thememanager.ThemeManagerFactory; import org.jenkinsci.Symbol; import org.kohsuke.stapler.DataBoundConstructor; public class SolarizedSystemTheme extends AbstractSolarizedTheme { - public static final String CSS = "solarized-system.css"; - @DataBoundConstructor public SolarizedSystemTheme() { // Stapler } + @Override + public Theme getTheme() { + return Theme.builder().build(); + } + @Extension @Symbol("solarizedSystem") public static class DescriptorImpl extends AbstractSolarizedThemeDescriptor { + @Override - public ThemeManagerFactory getInstance() { - return new SolarizedSystemTheme(); + public String getThemeKey() { + return "solarized-system"; } @Override - public String getThemeCssSuffix() { - return CSS; + public ThemeManagerFactory getInstance() { + return new SolarizedSystemTheme(); } @NonNull diff --git a/src/main/webapp/solarized-base.css b/src/main/webapp/solarized-base.css index 9e9d8f8..59f8f9d 100644 --- a/src/main/webapp/solarized-base.css +++ b/src/main/webapp/solarized-base.css @@ -19,7 +19,7 @@ cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63 green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60 */ -:root { +[data-theme=solarized], .app-theme-picker__picker[data-theme=solarized], [data-theme=solarized-dark], .app-theme-picker__picker[data-theme=solarized-dark], [data-theme=solarized-system], .app-theme-picker__picker[data-theme=solarized-system] { --solarized-base03: #002b36; --solarized-base02: #073642; --solarized-base01: #586e75; diff --git a/src/main/webapp/solarized-dark.css b/src/main/webapp/solarized-dark.css index e08d7ab..8ae9f6b 100644 --- a/src/main/webapp/solarized-dark.css +++ b/src/main/webapp/solarized-dark.css @@ -1,7 +1,17 @@ -:root { +[data-theme=solarized-dark], .app-theme-picker__picker[data-theme=solarized-dark] { --solarized-emphasized: var(--solarized-base1); --solarized-primary: var(--solarized-base0); --solarized-secondary: var(--solarized-base01); --solarized-bg-highlights: var(--solarized-base02); --solarized-bg: var(--solarized-base03); } + +@media (prefers-color-scheme: dark) { + [data-theme=solarized-system], .app-theme-picker__picker[data-theme=solarized-system] { + --solarized-emphasized: var(--solarized-base1); + --solarized-primary: var(--solarized-base0); + --solarized-secondary: var(--solarized-base01); + --solarized-bg-highlights: var(--solarized-base02); + --solarized-bg: var(--solarized-base03); + } +} diff --git a/src/main/webapp/solarized-definitions.css b/src/main/webapp/solarized-definitions.css index 3506b32..1956112 100644 --- a/src/main/webapp/solarized-definitions.css +++ b/src/main/webapp/solarized-definitions.css @@ -1,4 +1,4 @@ -:root { +[data-theme=solarized], .app-theme-picker__picker[data-theme=solarized], [data-theme=solarized-dark], .app-theme-picker__picker[data-theme=solarized-dark], [data-theme=solarized-system], .app-theme-picker__picker[data-theme=solarized-system] { --add-item-btn-decorator-bg-color: var(--solarized-bg-highlights); /* background color of the area around the "OK" button on "New Item" dialog */ --add-item-btn-decorator-border-color: var(--solarized-bg-highlights); /* border color of the area around the "OK" button on "New Item" dialog */ --alert-danger-bg-color: var(--solarized-red); diff --git a/src/main/webapp/solarized-light.css b/src/main/webapp/solarized-light.css index 99f4677..6b9d631 100644 --- a/src/main/webapp/solarized-light.css +++ b/src/main/webapp/solarized-light.css @@ -1,7 +1,17 @@ -:root { +[data-theme=solarized], .app-theme-picker__picker[data-theme=solarized] { --solarized-emphasized: var(--solarized-base01); --solarized-primary: var(--solarized-base00); --solarized-secondary: var(--solarized-base1); --solarized-bg-highlights: var(--solarized-base2); --solarized-bg: var(--solarized-base3); } + +@media (prefers-color-scheme: light) { + [data-theme=solarized-system], .app-theme-picker__picker[data-theme=solarized-system] { + --solarized-emphasized: var(--solarized-base01); + --solarized-primary: var(--solarized-base00); + --solarized-secondary: var(--solarized-base1); + --solarized-bg-highlights: var(--solarized-base2); + --solarized-bg: var(--solarized-base3); + } +} \ No newline at end of file diff --git a/src/main/webapp/solarized-system.css b/src/main/webapp/solarized-system.css deleted file mode 100644 index 4c1540e..0000000 --- a/src/main/webapp/solarized-system.css +++ /dev/null @@ -1,2 +0,0 @@ -@import url('solarized-dark.css') (prefers-color-scheme: dark); -@import url('solarized-light.css') not (prefers-color-scheme: dark); From 283ff05fafe4f8a2573aebd1681bcbc3061799a7 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Wed, 23 Feb 2022 20:28:18 +0000 Subject: [PATCH 2/3] Explicitly set header color so preview works --- src/main/webapp/solarized-definitions.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/solarized-definitions.css b/src/main/webapp/solarized-definitions.css index 1956112..2975c6a 100644 --- a/src/main/webapp/solarized-definitions.css +++ b/src/main/webapp/solarized-definitions.css @@ -71,7 +71,7 @@ /* --font-size-monospace */ /* not a color */ /* --font-size-sm */ /* not a color */ /* --font-size-xs */ /* not a color */ - /* --header-bg-classic */ + --header-bg-classic: #000; --header-bg-v2: var(--solarized-secondary); /* --header-item-border-radius */ /* --header-link-bg-active-v2 */ From 3dc8017da70d367f7d4c065ed6bd557ab54bc9b9 Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Thu, 24 Feb 2022 08:40:40 +0000 Subject: [PATCH 3/3] Apply suggestions from code review --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 536200b..f6652f6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci.plugins plugin - 4.34 + 4.37 io.jenkins.plugins @@ -14,7 +14,7 @@ 0.2 -SNAPSHOT - 2.336-rc32081.db_eed62c0c0e + 2.336 8 true @@ -24,7 +24,7 @@ io.jenkins.tools.bom - bom-2.319.x + bom-2.332.x 1155.v77b_fd92a_26fc import pom @@ -43,7 +43,7 @@ io.jenkins.plugins theme-manager - 0.7-rc94.26a_5398f092d + 1.0