diff --git a/plugin/package.json b/plugin/package.json
index 9c42ada0c..958571c82 100644
--- a/plugin/package.json
+++ b/plugin/package.json
@@ -8,7 +8,7 @@
"scripts": {
"dev": "webpack --config webpack.dev.js",
"prod": "webpack --config webpack.prod.js",
- "start": "yarn dev -- --watch",
+ "start": "yarn dev --watch",
"lint:js": "eslint src/main/js --ext js",
"mvnbuild": "yarn prod",
"mvntest": "yarn lint:js"
diff --git a/plugin/pom.xml b/plugin/pom.xml
index 4c79749ee..e3d9cf973 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -191,17 +191,6 @@
-
- io.jenkins.plugins
- theme-manager
- true
-
-
- io.jenkins.blueocean
- blueocean-web
-
-
-
org.jenkins-ci.plugins
scm-api
diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java
index 88b787089..eea31e59e 100644
--- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java
+++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java
@@ -37,21 +37,16 @@
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.jenkinsci.plugins.workflow.cps.persistence.PersistIn;
-import org.jenkinsci.plugins.workflow.cps.replay.ReplayAction;
-import org.jenkinsci.plugins.workflow.cps.view.ThemeUtil;
import org.jenkinsci.plugins.workflow.flow.DurabilityHintProvider;
import org.jenkinsci.plugins.workflow.flow.FlowDefinition;
import org.jenkinsci.plugins.workflow.flow.FlowDefinitionDescriptor;
import org.jenkinsci.plugins.workflow.flow.FlowDurabilityHint;
import org.jenkinsci.plugins.workflow.flow.FlowExecutionOwner;
import org.jenkinsci.plugins.workflow.flow.GlobalDefaultFlowDurabilityLevel;
-import org.kohsuke.accmod.Restricted;
-import org.kohsuke.accmod.restrictions.DoNotUse;
import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.DataBoundConstructor;
import java.io.IOException;
-import java.util.Arrays;
import java.util.List;
import net.sf.json.JSON;
@@ -184,10 +179,4 @@ public JSON doCheckScriptCompile(@AncestorInPath Item job, @QueryParameter Strin
}
}
-
- /** @see ReplayAction#getTheme */
- @Restricted(DoNotUse.class)
- /* accessible to Jelly */ public String getTheme() {
- return ThemeUtil.getTheme();
- }
}
diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java
index ce718728a..a92696abe 100644
--- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java
+++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java
@@ -70,7 +70,6 @@
import org.acegisecurity.AccessDeniedException;
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
import org.jenkinsci.plugins.workflow.cps.CpsFlowExecution;
-import org.jenkinsci.plugins.workflow.cps.view.ThemeUtil;
import org.jenkinsci.plugins.workflow.flow.FlowExecution;
import org.jenkinsci.plugins.workflow.flow.FlowExecutionOwner;
import org.kohsuke.accmod.Restricted;
@@ -200,12 +199,6 @@ private ReplayAction(Run run) {
return run;
}
- /** @see CpsFlowDefinition#getTheme */
- @Restricted(DoNotUse.class)
- /* accessible to Jelly */ public String getTheme() {
- return ThemeUtil.getTheme();
- }
-
@Restricted(DoNotUse.class)
@RequirePOST
public void doRun(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException {
diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/view/ThemeUtil.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/view/ThemeUtil.java
deleted file mode 100644
index eaf91e77c..000000000
--- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/view/ThemeUtil.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.jenkinsci.plugins.workflow.cps.view;
-
-import io.jenkins.plugins.thememanager.Theme;
-import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
-import org.kohsuke.accmod.Restricted;
-import org.kohsuke.accmod.restrictions.NoExternalUse;
-
-@Restricted(NoExternalUse.class)
-public final class ThemeUtil {
-
- private ThemeUtil() {
- // Suppress default constructor for noninstantiability
- throw new AssertionError();
- }
-
- public static String getTheme() {
- try {
- Theme theme = ThemeManagerPageDecorator.get().findTheme();
- return theme.getProperty("ace-editor", "theme").orElse("tomorrow");
- } catch (LinkageError e) {
- // Optional plugin not installed
- return "tomorrow";
- }
- }
-}
diff --git a/plugin/src/main/js/workflow-editor.js b/plugin/src/main/js/workflow-editor.js
index 7a8f5842f..81da7098c 100644
--- a/plugin/src/main/js/workflow-editor.js
+++ b/plugin/src/main/js/workflow-editor.js
@@ -16,6 +16,11 @@ import "./snippets/workflow";
var editorIdCounter = 0;
+function setTheme(editor) {
+ const theme = window.getThemeManagerProperty('ace-editor', 'theme') || 'tomorrow'
+ editor.setTheme("ace/theme/" + theme);
+}
+
$(function() {
$('.workflow-editor-wrapper').each(function() {
initEditor($(this));
@@ -44,10 +49,17 @@ $(function() {
var snippetContent = ace.require('ace/snippets/groovy').snippetText;
var snippets = snippetManager.parseSnippetFile(snippetContent);
snippetManager.register(snippets, 'groovy');
-
editor.session.setMode("ace/mode/groovy");
- var theme = aceContainer.attr("theme") === "tomorrow_night" ? "tomorrow_night" : "tomorrow";
- editor.setTheme("ace/theme/" + theme);
+ if (window.getThemeManagerProperty) {
+ setTheme(editor);
+
+ if (window.isSystemRespectingTheme) {
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
+ setTheme(editor)
+ });
+ }
+
+ }
editor.setAutoScrollEditorIntoView(true);
editor.setOption("minLines", 20);
// enable autocompletion and snippets
diff --git a/plugin/src/main/resources/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition/config.jelly b/plugin/src/main/resources/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition/config.jelly
index 6be9df79c..c075a1fd2 100644
--- a/plugin/src/main/resources/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition/config.jelly
+++ b/plugin/src/main/resources/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition/config.jelly
@@ -26,7 +26,7 @@
-
+
diff --git a/plugin/src/main/resources/org/jenkinsci/plugins/workflow/editor/workflow-editor.jelly b/plugin/src/main/resources/org/jenkinsci/plugins/workflow/editor/workflow-editor.jelly
index 62f424ff6..ff266c184 100644
--- a/plugin/src/main/resources/org/jenkinsci/plugins/workflow/editor/workflow-editor.jelly
+++ b/plugin/src/main/resources/org/jenkinsci/plugins/workflow/editor/workflow-editor.jelly
@@ -5,9 +5,6 @@
The script.
-
- The ACE editor theme.
-
@@ -17,7 +14,7 @@