From d9ff3024f4e84ee2bbcc70f4b2ba0f98617d4166 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sat, 23 Apr 2022 07:38:44 -0400 Subject: [PATCH] make editor scroll bar into a generic class for themes --- app/src/processing/app/syntax/PdeTextArea.java | 11 +++++++++++ .../ThemeScrollBarUI.java} | 18 ++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) rename app/src/processing/app/{syntax/PdeScrollBarUI.java => ui/ThemeScrollBarUI.java} (87%) diff --git a/app/src/processing/app/syntax/PdeTextArea.java b/app/src/processing/app/syntax/PdeTextArea.java index 6ed496122..3e5564430 100644 --- a/app/src/processing/app/syntax/PdeTextArea.java +++ b/app/src/processing/app/syntax/PdeTextArea.java @@ -28,6 +28,7 @@ import java.util.Map; import processing.app.ui.Editor; import processing.app.ui.Theme; +import processing.app.ui.ThemeScrollBarUI; /** @@ -67,6 +68,16 @@ public class PdeTextArea extends JEditTextArea { } + static class PdeScrollBarUI extends ThemeScrollBarUI { + PdeScrollBarUI() { + super("editor.scrollbar.color", + "editor.scrollbar.thumb.pressed.color", + "editor.scrollbar.thumb.rollover.color", + "editor.scrollbar.thumb.enabled.color"); + } + } + + @Override protected TextAreaPainter createPainter(final TextAreaDefaults defaults) { return new PdeTextAreaPainter(this, defaults); diff --git a/app/src/processing/app/syntax/PdeScrollBarUI.java b/app/src/processing/app/ui/ThemeScrollBarUI.java similarity index 87% rename from app/src/processing/app/syntax/PdeScrollBarUI.java rename to app/src/processing/app/ui/ThemeScrollBarUI.java index a018472ba..f3acbd6cc 100644 --- a/app/src/processing/app/syntax/PdeScrollBarUI.java +++ b/app/src/processing/app/ui/ThemeScrollBarUI.java @@ -21,7 +21,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package processing.app.syntax; +package processing.app.ui; import processing.app.ui.Theme; @@ -34,15 +34,29 @@ import java.awt.*; * Custom scroll bar style for the editor. * Originally based on https://stackoverflow.com/a/53662678 */ -public class PdeScrollBarUI extends BasicScrollBarUI { +public class ThemeScrollBarUI extends BasicScrollBarUI { private final Dimension none = new Dimension(); + private String backgroundAttr; + private String pressedAttr; + private String rolloverAttr; + private String enabledAttr; + private Color backgroundColor; private Color pressedColor; private Color rolloverColor; private Color enabledColor; + public ThemeScrollBarUI(String backgroundAttr, String pressedAttr, + String rolloverAttr, String enabledAttr) { + this.backgroundAttr = backgroundAttr; + this.pressedAttr = pressedAttr; + this.rolloverAttr = rolloverAttr; + this.enabledAttr = enabledAttr; + } + + public void updateTheme() { backgroundColor = Theme.getColor("editor.scrollbar.color"); pressedColor = Theme.getColor("editor.scrollbar.thumb.pressed.color");