Add correct border for dark theme unit selectors

This commit is contained in:
SiboVG 2023-11-13 03:30:44 +01:00
parent 8906eef681
commit 6b5b951fe5
2 changed files with 74 additions and 14 deletions

View File

@ -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<ItemListener> itemListeners = new ArrayList<ItemListener>();
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();
}
/**

View File

@ -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);