GP-4316 - Updated how empty border buttons paint their focused state

This commit is contained in:
dragonmacher 2024-04-16 17:37:50 -04:00
parent 190f1eaa1e
commit 208b8238ca
4 changed files with 25 additions and 5 deletions

View file

@ -31,6 +31,7 @@ color.fg.filterfield = color.palette.black
color.border.bevel.highlight = color.palette.lightgray color.border.bevel.highlight = color.palette.lightgray
color.border.bevel.shadow = color.palette.gray color.border.bevel.shadow = color.palette.gray
color.border.provider.disconnected = color.palette.orange color.border.provider.disconnected = color.palette.orange
color.border.button.focused = [color]system.color.bg.selected.view
color.fg.button = color.palette.black color.fg.button = color.palette.black
color.bg.filechooser = color.bg color.bg.filechooser = color.bg
@ -178,3 +179,9 @@ color.bg.highlight = #703401 // orangish
color.bg.filechooser.shortcut = [color]system.color.bg.view color.bg.filechooser.shortcut = [color]system.color.bg.view
[CDE/Motif]
// the tab pane focus color represents the standard motif focus color
color.border.button.focused = [color]laf.color.TabbedPane.focus

View file

@ -224,14 +224,14 @@ public class ThemeColorTableModel extends GDynamicColumnTableModel<ColorValue, O
private class ThemeColorRenderer extends AbstractGColumnRenderer<ResolvedColor> { private class ThemeColorRenderer extends AbstractGColumnRenderer<ResolvedColor> {
public ThemeColorRenderer() { @Override
setFont(Gui.getFont("font.monospaced")); protected Font getDefaultFont() {
return fixedWidthFont;
} }
@Override @Override
public Component getTableCellRendererComponent(GTableCellRenderingData data) { public Component getTableCellRendererComponent(GTableCellRenderingData data) {
JLabel label = (JLabel) super.getTableCellRendererComponent(data); JLabel label = (JLabel) super.getTableCellRendererComponent(data);
setFont(Gui.getFont("font.monospaced"));
ResolvedColor resolved = (ResolvedColor) data.getValue(); ResolvedColor resolved = (ResolvedColor) data.getValue();
String text = getValueText(resolved); String text = getValueText(resolved);

View file

@ -39,7 +39,7 @@ import utilities.util.reflection.ReflectionUtilities;
* colors, and highlights the drop target in a drag-n-drop operation. * colors, and highlights the drop target in a drag-n-drop operation.
* <p> * <p>
* The preferred method to change the font used by this renderer is {@link #setBaseFontId(String)}. * The preferred method to change the font used by this renderer is {@link #setBaseFontId(String)}.
* If you would like this renderer to use a monospaced font, then, as an alternative to creating a * If you would like this renderer to use a monospaced font, then, as an alternative to creating a
* font ID, you can instead override {@link #getDefaultFont()} to return this * font ID, you can instead override {@link #getDefaultFont()} to return this
* class's {@link #fixedWidthFont}. Also, the fixed width font of this class is based on the * class's {@link #fixedWidthFont}. Also, the fixed width font of this class is based on the
* default font set when calling {@link #setBaseFontId(String)}, so it stays up-to-date with theme * default font set when calling {@link #setBaseFontId(String)}, so it stays up-to-date with theme

View file

@ -15,6 +15,7 @@
*/ */
package docking.widgets; package docking.widgets;
import java.awt.Color;
import java.awt.event.*; import java.awt.event.*;
import javax.swing.*; import javax.swing.*;
@ -23,6 +24,7 @@ import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import generic.theme.GColor;
import ghidra.docking.util.LookAndFeelUtils; import ghidra.docking.util.LookAndFeelUtils;
import resources.ResourceManager; import resources.ResourceManager;
@ -55,6 +57,13 @@ public class EmptyBorderButton extends JButton {
public static final Border LOWERED_BUTTON_BORDER = BorderFactory.createCompoundBorder( public static final Border LOWERED_BUTTON_BORDER = BorderFactory.createCompoundBorder(
BorderFactory.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(1, 1, 1, 1)); BorderFactory.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(1, 1, 1, 1));
/**
* A border to signal when the button has focus.
*/
private static final Color FOCUS_COLOR = new GColor("color.border.button.focused");
public static final Border FOCUSED_BUTTON_BORDER = BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(2, 2, 2, 2), BorderFactory.createLineBorder(FOCUS_COLOR));
/** /**
* Construct a new EmptyBorderButton. * Construct a new EmptyBorderButton.
* *
@ -169,13 +178,17 @@ public class EmptyBorderButton extends JButton {
setBorder(getRaisedBorder()); setBorder(getRaisedBorder());
} }
else if (isFocusOwner()) { else if (isFocusOwner()) {
setBorder(getRaisedBorder()); setBorder(getFocusedBorder());
} }
else { else {
setBorder(NO_BUTTON_BORDER); setBorder(NO_BUTTON_BORDER);
} }
} }
protected Border getFocusedBorder() {
return FOCUSED_BUTTON_BORDER;
}
protected Border getRaisedBorder() { protected Border getRaisedBorder() {
return RAISED_BUTTON_BORDER; return RAISED_BUTTON_BORDER;
} }