[fixes ] Use changelistener for foreground change + don't change on non OSX-devices

This commit is contained in:
Sibo Van Gool 2021-08-10 19:35:34 +02:00
parent 1358260593
commit 2f6a8c8db9
2 changed files with 50 additions and 20 deletions
swing/src/net/sf/openrocket/gui/widgets

@ -5,38 +5,49 @@ import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Graphics;
public class SelectColorButton extends JButton {
public SelectColorButton() {
addChangeListenerSelectColor();
}
public SelectColorButton(Icon icon) {
super(icon);
addChangeListenerSelectColor();
}
public SelectColorButton(String text) {
super(text);
addChangeListenerSelectColor();
}
public SelectColorButton(Action a) {
super(a);
addChangeListenerSelectColor();
}
public SelectColorButton(String text, Icon icon) {
super(text, icon);
addChangeListenerSelectColor();
}
@Override
public void paint(Graphics g) {
if (getModel().isArmed()) {
setForeground(UIManager.getColor("Button.selectForeground"));
}
else {
setForeground(UIManager.getColor("Button.foreground"));
}
super.paint(g);
private void addChangeListenerSelectColor() {
addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
if (UIManager.getColor("Button.selectForeground") == null
|| UIManager.getColor("Button.foreground") == null)
return;
if (getModel().isArmed()) {
setForeground(UIManager.getColor("Button.selectForeground"));
}
else {
setForeground(UIManager.getColor("Button.foreground"));
}
}
});
}
}

@ -4,7 +4,12 @@ import javax.swing.JToggleButton;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
/**
* This class is a replacement for the standard JToggleButton. Its purpose is to be able
@ -15,43 +20,57 @@ import java.awt.Graphics;
public class SelectColorToggleButton extends JToggleButton {
public SelectColorToggleButton(Action a) {
super(a);
addChangeListenerSelectColor();
}
public SelectColorToggleButton(String text) {
super(text);
addChangeListenerSelectColor();
}
public SelectColorToggleButton() {
addChangeListenerSelectColor();
}
public SelectColorToggleButton(Icon icon) {
super(icon);
addChangeListenerSelectColor();
}
public SelectColorToggleButton(Icon icon, boolean selected) {
super(icon, selected);
addChangeListenerSelectColor();
}
public SelectColorToggleButton(String text, boolean selected) {
super(text, selected);
addChangeListenerSelectColor();
}
public SelectColorToggleButton(String text, Icon icon) {
super(text, icon);
addChangeListenerSelectColor();
}
public SelectColorToggleButton(String text, Icon icon, boolean selected) {
super(text, icon, selected);
addChangeListenerSelectColor();
}
@Override
public void paint(Graphics g) {
if (isSelected()) {
setForeground(UIManager.getColor("ToggleButton.selectForeground"));
}
else {
setForeground(UIManager.getColor("ToggleButton.foreground"));
}
super.paint(g);
private void addChangeListenerSelectColor() {
addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
if (UIManager.getColor("ToggleButton.selectForeground") == null
|| UIManager.getColor("ToggleButton.foreground") == null)
return;
if (isSelected()) {
setForeground(UIManager.getColor("ToggleButton.selectForeground"));
}
else {
setForeground(UIManager.getColor("ToggleButton.foreground"));
}
}
});
}
}