From 84f7e244f2a2015a868da95a878ad26d56be7daa Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Mon, 5 Jul 2021 22:36:57 +0200 Subject: [PATCH] Styling: - support ComboBox.padding - fixed updating of Spinner.padding --- .../com/formdev/flatlaf/ui/FlatComboBoxUI.java | 14 +++++++++++++- .../java/com/formdev/flatlaf/ui/FlatSpinnerUI.java | 2 +- .../com/formdev/flatlaf/ui/TestFlatStyling.java | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java index 9064a227..d184a752 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java @@ -447,10 +447,15 @@ public class FlatComboBoxUI * @since TODO */ protected void applyStyle( Object style ) { + Insets oldPadding = padding; int oldEditorColumns = editorColumns; oldStyleValues = FlatStyleSupport.parseAndApply( oldStyleValues, style, this::applyStyleProperty ); + if( !padding.equals( oldPadding ) ) { + paddingBorder.padding = padding; + updateEditorPadding(); + } if( arrowButton instanceof FlatComboBoxButton ) ((FlatComboBoxButton)arrowButton).updateStyle(); if( popup instanceof FlatComboPopup ) @@ -463,6 +468,13 @@ public class FlatComboBoxUI * @since TODO */ protected Object applyStyleProperty( String key, Object value ) { + // BasicComboBoxUI + if( key.equals( "padding" ) ) { + Object oldValue = padding; + padding = (Insets) value; + return oldValue; + } + if( borderShared == null ) borderShared = new AtomicBoolean( true ); return FlatStyleSupport.applyToAnnotatedObjectOrBorder( this, key, value, comboBox, borderShared ); @@ -834,7 +846,7 @@ public class FlatComboBoxUI private static class CellPaddingBorder extends AbstractBorder { - private final Insets padding; + private Insets padding; private JComponent rendererComponent; private Border rendererBorder; diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java index c37691fc..5cce41c7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java @@ -192,6 +192,7 @@ public class FlatSpinnerUI */ protected void applyStyle( Object style ) { oldStyleValues = FlatStyleSupport.parseAndApply( oldStyleValues, style, this::applyStyleProperty ); + updateEditorPadding(); updateArrowButtonsStyle(); } @@ -442,7 +443,6 @@ public class FlatSpinnerUI public void layoutContainer( Container parent ) { Dimension size = parent.getSize(); Insets insets = parent.getInsets(); - Insets padding = scale( FlatSpinnerUI.this.padding ); Rectangle r = FlatUIUtils.subtractInsets( new Rectangle( size ), insets ); if( nextButton == null && previousButton == null ) { 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 2ed75493..4402ae7e 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 @@ -149,6 +149,8 @@ public class TestFlatStyling JComboBox c = new JComboBox<>(); FlatComboBoxUI ui = (FlatComboBoxUI) c.getUI(); + ui.applyStyle( "padding: 1,2,3,4" ); + ui.applyStyle( "minimumWidth: 100" ); ui.applyStyle( "editorColumns: 10" ); ui.applyStyle( "buttonStyle: auto" );