From 2164bd363b8482a8a9479a17ecc8634315e76552 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 11 Dec 2021 11:17:53 +0100 Subject: [PATCH] Styling: MenuItem: support styling acceleratorFont Theme Editor: - support font keys in auto-completion - ignore Menu.acceleratorFont, CheckBoxMenuItem.acceleratorFont and RadioButtonMenuItem.acceleratorFont because they are never used (keep UI values for backward compatibility) --- .../com/formdev/flatlaf/ui/FlatMenuItemRenderer.java | 2 +- .../com/formdev/flatlaf/ui/TestFlatStyleableInfo.java | 4 +++- .../java/com/formdev/flatlaf/ui/TestFlatStyling.java | 9 +++------ .../flatlaf/testing/uidefaults/UIDefaultsKeysDump.java | 9 ++++++++- .../flatlaf/themeeditor/FlatCompletionProvider.java | 4 +--- .../com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt | 3 --- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java index 010330a1..a995be72 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java @@ -78,7 +78,7 @@ public class FlatMenuItemRenderer protected final JMenuItem menuItem; protected Icon checkIcon; protected Icon arrowIcon; - protected final Font acceleratorFont; + @Styleable protected Font acceleratorFont; protected final String acceleratorDelimiter; /** @since 2 */ @Styleable protected boolean verticallyAlignText = FlatUIUtils.getUIBoolean( "MenuItem.verticallyAlignText", true ); diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java index a70f51a4..e663fba6 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java @@ -20,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static com.formdev.flatlaf.ui.TestUtils.assertMapEquals; import java.awt.Color; import java.awt.Dimension; +import java.awt.Font; import java.awt.Insets; import java.util.LinkedHashMap; import java.util.Map; @@ -335,7 +336,8 @@ public class TestFlatStyleableInfo "selectionForeground", Color.class, "disabledForeground", Color.class, "acceleratorForeground", Color.class, - "acceleratorSelectionForeground", Color.class + "acceleratorSelectionForeground", Color.class, + "acceleratorFont", Font.class ); menuItemRenderer( expected ); diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java index 45f25a22..b63a234d 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java @@ -483,6 +483,7 @@ public class TestFlatStyling applyStyle.accept( "disabledForeground: #fff" ); applyStyle.accept( "acceleratorForeground: #fff" ); applyStyle.accept( "acceleratorSelectionForeground: #fff" ); + applyStyle.accept( "acceleratorFont: italic 12 monospaced" ); menuItemRenderer( applyStyle ); @@ -770,6 +771,8 @@ public class TestFlatStyling ui.applyStyle( "foreground: #fff" ); ui.applyStyle( "border: 2,2,2,2,#f00" ); ui.applyStyle( "font: italic 12 monospaced" ); + + // JSlider properties ui.applyStyle( "minimum: 0" ); ui.applyStyle( "maximum: 50" ); ui.applyStyle( "value: 20" ); @@ -781,12 +784,6 @@ public class TestFlatStyling ui.applyStyle( "paintTicks: true" ); ui.applyStyle( "paintTrack: true" ); ui.applyStyle( "snapToTicks: true" ); - - // JSlider properties - ui.applyStyle( "paintLabels: true" ); - ui.applyStyle( "paintTicks: true" ); - ui.applyStyle( "paintTrack: true" ); - ui.applyStyle( "snapToTicks: true" ); } @Test diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java index 5c3ead8f..335a90c9 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java @@ -87,8 +87,15 @@ public class UIDefaultsKeysDump UIDefaults defaults = UIManager.getLookAndFeel().getDefaults(); for( Object key : defaults.keySet() ) { - if( key instanceof String && !((String)key).startsWith( "FlatLaf.internal." ) ) + if( key instanceof String && !ignoreKey( (String) key ) ) keys.add( (String) key ); } } + + private static boolean ignoreKey( String key ) { + return key.startsWith( "FlatLaf.internal." ) || + key.equals( "Menu.acceleratorFont" ) || + key.equals( "CheckBoxMenuItem.acceleratorFont" ) || + key.equals( "RadioButtonMenuItem.acceleratorFont" ); + } } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java index ae22afca..8d2f1b06 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java @@ -193,9 +193,7 @@ class FlatCompletionProvider } private boolean isIgnored( String key ) { - return key.endsWith( ".font" ) || - key.endsWith( "Font" ) || - key.endsWith( "InputMap" ); + return key.endsWith( "InputMap" ); } private void setCompletions( Set keys ) { diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt index be008dcc..c9e7c778 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt @@ -139,7 +139,6 @@ CheckBox.margin CheckBox.rollover CheckBox.textIconGap CheckBox.textShiftOffset -CheckBoxMenuItem.acceleratorFont CheckBoxMenuItem.acceleratorForeground CheckBoxMenuItem.acceleratorSelectionForeground CheckBoxMenuItem.arrowIcon @@ -430,7 +429,6 @@ List.selectionInactiveForeground List.showCellFocusIndicator List.timeFactor ListUI -Menu.acceleratorFont Menu.acceleratorForeground Menu.acceleratorSelectionForeground Menu.arrowIcon @@ -614,7 +612,6 @@ RadioButton.rollover RadioButton.shadow RadioButton.textIconGap RadioButton.textShiftOffset -RadioButtonMenuItem.acceleratorFont RadioButtonMenuItem.acceleratorForeground RadioButtonMenuItem.acceleratorSelectionForeground RadioButtonMenuItem.arrowIcon