From 6b5b951fe5aa804a4e0efd6f3b080390d4e88525 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 13 Nov 2023 03:30:44 +0100 Subject: [PATCH] Add correct border for dark theme unit selectors --- .../gui/components/UnitSelector.java | 31 +++++----- .../net/sf/openrocket/gui/util/UITheme.java | 57 +++++++++++++++++++ 2 files changed, 74 insertions(+), 14 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/components/UnitSelector.java b/swing/src/net/sf/openrocket/gui/components/UnitSelector.java index 04b45d2f2..c999b1358 100644 --- a/swing/src/net/sf/openrocket/gui/components/UnitSelector.java +++ b/swing/src/net/sf/openrocket/gui/components/UnitSelector.java @@ -1,7 +1,6 @@ package net.sf.openrocket.gui.components; -import java.awt.Color; import java.awt.Dimension; import java.awt.ItemSelectable; import java.awt.event.ActionEvent; @@ -18,11 +17,10 @@ import javax.swing.Action; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.border.Border; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.LineBorder; import net.sf.openrocket.gui.adaptors.DoubleModel; +import net.sf.openrocket.gui.util.GUIUtil; +import net.sf.openrocket.gui.util.UITheme; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.StateChangeListener; @@ -47,13 +45,17 @@ public class UnitSelector extends StyledLabel implements StateChangeListener, Mo private final boolean showValue; - private final Border normalBorder; - private final Border withinBorder; + private static Border normalBorder; + private static Border withinBorder; private final List itemListeners = new ArrayList(); + static { + initColors(); + } + /** * Common private constructor that sets the values and sets up the borders. * Either model or group must be null. @@ -85,14 +87,6 @@ public class UnitSelector extends StyledLabel implements StateChangeListener, Mo addMouseListener(this); - // Define borders to use: - - normalBorder = new CompoundBorder( - new LineBorder(new Color(0f, 0f, 0f, 0.08f), 1), new EmptyBorder(1, 1, 1, - 1)); - withinBorder = new CompoundBorder(new LineBorder(new Color(0f, 0f, 0f, 0.6f)), - new EmptyBorder(1, 1, 1, 1)); - // Add model listener if showing value if (showValue) this.model.addChangeListener(this); @@ -117,6 +111,15 @@ public class UnitSelector extends StyledLabel implements StateChangeListener, Mo } + private static void initColors() { + updateColors(); + UITheme.Theme.addUIThemeChangeListener(UnitSelector::updateColors); + } + + private static void updateColors() { + normalBorder = GUIUtil.getUITheme().getUnitSelectorBorder(); + withinBorder = GUIUtil.getUITheme().getUnitSelectorFocusBorder(); + } /** diff --git a/swing/src/net/sf/openrocket/gui/util/UITheme.java b/swing/src/net/sf/openrocket/gui/util/UITheme.java index 4492b03e3..c4c9ee84c 100644 --- a/swing/src/net/sf/openrocket/gui/util/UITheme.java +++ b/swing/src/net/sf/openrocket/gui/util/UITheme.java @@ -14,6 +14,9 @@ import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.UIManager; import javax.swing.border.Border; +import javax.swing.border.CompoundBorder; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; import java.awt.Color; import java.awt.Font; import java.io.IOException; @@ -82,6 +85,8 @@ public class UITheme { Icon getCDOverrideSubcomponentIcon(); Border getBorder(); + Border getUnitSelectorBorder(); + Border getUnitSelectorFocusBorder(); void formatScriptTextArea(RSyntaxTextArea textArea); @@ -381,6 +386,20 @@ public class UITheme { return null; } + @Override + public Border getUnitSelectorBorder() { + return new CompoundBorder( + new LineBorder(new Color(0f, 0f, 0f, 0.08f), 1), + new EmptyBorder(1, 1, 1, 1)); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return new CompoundBorder( + new LineBorder(new Color(0f, 0f, 0f, 0.6f)), + new EmptyBorder(1, 1, 1, 1)); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { try { @@ -729,6 +748,20 @@ public class UITheme { return BorderFactory.createLineBorder(getBorderColor()); } + @Override + public Border getUnitSelectorBorder() { + return new CompoundBorder( + new LineBorder(new Color(1f, 1f, 1f, 0.08f), 1), + new EmptyBorder(1, 1, 1, 1)); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return new CompoundBorder( + new LineBorder(new Color(1f, 1f, 1f, 0.6f)), + new EmptyBorder(1, 1, 1, 1)); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { try { @@ -1073,6 +1106,20 @@ public class UITheme { return BorderFactory.createLineBorder(getBorderColor()); } + @Override + public Border getUnitSelectorBorder() { + return new CompoundBorder( + new LineBorder(new Color(.9f, 0.9f, 0.9f, 0.15f), 1), + new EmptyBorder(1, 1, 1, 1)); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return new CompoundBorder( + new LineBorder(new Color(0.9f, 0.9f, 0.9f, 0.6f)), + new EmptyBorder(1, 1, 1, 1)); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { try { @@ -1439,6 +1486,16 @@ public class UITheme { return getCurrentTheme().getBorder(); } + @Override + public Border getUnitSelectorBorder() { + return getCurrentTheme().getUnitSelectorBorder(); + } + + @Override + public Border getUnitSelectorFocusBorder() { + return getCurrentTheme().getUnitSelectorFocusBorder(); + } + @Override public void formatScriptTextArea(RSyntaxTextArea textArea) { getCurrentTheme().formatScriptTextArea(textArea);