diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java index f62b59a7..f40d2aa9 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java @@ -43,8 +43,12 @@ import com.formdev.flatlaf.util.UIScale; * @uiDefault Button.focusedBorderColor Color * @uiDefault Button.hoverBorderColor Color optional * @uiDefault Button.pressedBorderColor Color optional + * * @uiDefault Button.selectedBorderColor Color optional * @uiDefault Button.disabledSelectedBorderColor Color optional + * @uiDefault Button.focusedSelectedBorderColor Color optional + * @uiDefault Button.hoverSelectedBorderColor Color optional + * @uiDefault Button.pressedSelectedBorderColor Color optional * * @uiDefault Button.default.borderWidth int or float * @uiDefault Button.default.borderColor Color @@ -70,8 +74,12 @@ public class FlatButtonBorder protected Color endBorderColor = UIManager.getColor( "Button.endBorderColor" ); @Styleable protected Color hoverBorderColor = UIManager.getColor( "Button.hoverBorderColor" ); /** @since 3.5 */ @Styleable protected Color pressedBorderColor = UIManager.getColor( "Button.pressedBorderColor" ); + /** @since 3.5 */ @Styleable protected Color selectedBorderColor = UIManager.getColor( "Button.selectedBorderColor" ); /** @since 3.5 */ @Styleable protected Color disabledSelectedBorderColor = UIManager.getColor( "Button.disabledSelectedBorderColor" ); + /** @since 3.5 */ @Styleable protected Color focusedSelectedBorderColor = UIManager.getColor( "Button.focusedSelectedBorderColor" ); + /** @since 3.5 */ @Styleable protected Color hoverSelectedBorderColor = UIManager.getColor( "Button.hoverSelectedBorderColor" ); + /** @since 3.5 */ @Styleable protected Color pressedSelectedBorderColor = UIManager.getColor( "Button.pressedSelectedBorderColor" ); @Styleable(dot=true) protected float defaultBorderWidth = FlatUIUtils.getUIFloat( "Button.default.borderWidth", 1 ); @Styleable(dot=true) protected Color defaultBorderColor = FlatUIUtils.getUIColor( "Button.default.startBorderColor", "Button.default.borderColor" ); @@ -151,9 +159,9 @@ public class FlatButtonBorder Paint color = FlatButtonUI.buttonStateColor( c, def ? defaultBorderColor : ((selected && selectedBorderColor != null) ? selectedBorderColor : borderColor), (selected && disabledSelectedBorderColor != null) ? disabledSelectedBorderColor : disabledBorderColor, - def ? defaultFocusedBorderColor : focusedBorderColor, - def ? defaultHoverBorderColor : hoverBorderColor, - def ? defaultPressedBorderColor : pressedBorderColor ); + def ? defaultFocusedBorderColor : ((selected && focusedSelectedBorderColor != null) ? focusedSelectedBorderColor : focusedBorderColor), + def ? defaultHoverBorderColor : ((selected && hoverSelectedBorderColor != null) ? hoverSelectedBorderColor : hoverBorderColor), + def ? defaultPressedBorderColor : ((selected && pressedSelectedBorderColor != null) ? pressedSelectedBorderColor : pressedBorderColor) ); // change to gradient paint if start/end colors are specified Color startBg = def ? defaultBorderColor : borderColor; 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 29dda17c..ade21681 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 @@ -995,8 +995,12 @@ public class TestFlatStyleableInfo "focusedBorderColor", Color.class, "hoverBorderColor", Color.class, "pressedBorderColor", Color.class, + "selectedBorderColor", Color.class, "disabledSelectedBorderColor", Color.class, + "focusedSelectedBorderColor", Color.class, + "hoverSelectedBorderColor", Color.class, + "pressedSelectedBorderColor", Color.class, "default.borderWidth", float.class, "default.borderColor", Color.class, diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java index f1beab94..2fd174aa 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java @@ -957,8 +957,12 @@ public class TestFlatStyleableValue testColor( c, ui, "focusedBorderColor", 0x123456 ); testColor( c, ui, "hoverBorderColor", 0x123456 ); testColor( c, ui, "pressedBorderColor", 0x123456 ); + testColor( c, ui, "selectedBorderColor", 0x123456 ); testColor( c, ui, "disabledSelectedBorderColor", 0x123456 ); + testColor( c, ui, "focusedSelectedBorderColor", 0x123456 ); + testColor( c, ui, "hoverSelectedBorderColor", 0x123456 ); + testColor( c, ui, "pressedSelectedBorderColor", 0x123456 ); testFloat( c, ui, "default.borderWidth", 1.23f ); testColor( c, ui, "default.borderColor", 0x123456 ); @@ -1031,8 +1035,12 @@ public class TestFlatStyleableValue testValue( border, "focusedBorderColor", Color.WHITE ); testValue( border, "hoverBorderColor", Color.WHITE ); testValue( border, "pressedBorderColor", Color.WHITE ); + testValue( border, "selectedBorderColor", Color.WHITE ); testValue( border, "disabledSelectedBorderColor", Color.WHITE ); + testValue( border, "focusedSelectedBorderColor", Color.WHITE ); + testValue( border, "hoverSelectedBorderColor", Color.WHITE ); + testValue( border, "pressedSelectedBorderColor", Color.WHITE ); testValue( border, "default.borderWidth", 2f ); testValue( border, "default.borderColor", Color.WHITE ); 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 5aff9582..6ac0c60f 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 @@ -1296,8 +1296,12 @@ public class TestFlatStyling border.applyStyleProperty( "focusedBorderColor", Color.WHITE ); border.applyStyleProperty( "hoverBorderColor", Color.WHITE ); border.applyStyleProperty( "pressedBorderColor", Color.WHITE ); + border.applyStyleProperty( "selectedBorderColor", Color.WHITE ); border.applyStyleProperty( "disabledSelectedBorderColor", Color.WHITE ); + border.applyStyleProperty( "focusedSelectedBorderColor", Color.WHITE ); + border.applyStyleProperty( "hoverSelectedBorderColor", Color.WHITE ); + border.applyStyleProperty( "pressedSelectedBorderColor", Color.WHITE ); border.applyStyleProperty( "default.borderWidth", 2 ); border.applyStyleProperty( "default.borderColor", Color.WHITE ); diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 66f8fc30..0e357726 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -96,12 +96,14 @@ Button.endBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.Colo Button.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] Button.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] Button.focusedForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.focusedSelectedBorderColor #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] Button.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Button.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Button.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] Button.hoverBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Button.hoverForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.hoverSelectedBorderColor #aaaaaa HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] Button.iconTextGap 4 Button.innerFocusWidth 1 Button.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] @@ -110,6 +112,7 @@ Button.minimumWidth 72 Button.pressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] Button.pressedBorderColor #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] Button.pressedForeground #0080ff HSL 210 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.pressedSelectedBorderColor #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] Button.rollover true Button.selectedBackground #ffbbbb HSL 0 100 87 javax.swing.plaf.ColorUIResource [UI] Button.selectedBorderColor #ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties index a7754ec3..fe2d401a 100644 --- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties +++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties @@ -95,8 +95,12 @@ Button.disabledBorderColor = #008 Button.focusedBorderColor = #466d94 Button.hoverBorderColor = #f00 Button.pressedBorderColor = #0ff + Button.selectedBorderColor = #f0f Button.disabledSelectedBorderColor = #ff0 +Button.focusedSelectedBorderColor = #fff +Button.hoverSelectedBorderColor = #aaa +Button.pressedSelectedBorderColor = #888 Button.innerFocusWidth = 1 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 7cc08a50..60549ff4 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 @@ -47,12 +47,14 @@ Button.focusInputMap Button.focusedBackground Button.focusedBorderColor Button.focusedForeground +Button.focusedSelectedBorderColor Button.font Button.foreground Button.highlight Button.hoverBackground Button.hoverBorderColor Button.hoverForeground +Button.hoverSelectedBorderColor Button.iconTextGap Button.innerFocusWidth Button.light @@ -61,6 +63,7 @@ Button.minimumWidth Button.pressedBackground Button.pressedBorderColor Button.pressedForeground +Button.pressedSelectedBorderColor Button.rollover Button.selectedBackground Button.selectedBorderColor