diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java index 6cf470e1..2634fde0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java @@ -24,6 +24,7 @@ import java.awt.Graphics2D; import java.awt.geom.Path2D; import javax.swing.AbstractButton; import javax.swing.UIManager; +import com.formdev.flatlaf.ui.FlatButtonUI; /** * Icon for {@link javax.swing.JCheckBox}. @@ -34,10 +35,16 @@ import javax.swing.UIManager; * @uiDefault CheckBox.icon.disabledBorderColor Color * @uiDefault CheckBox.icon.selectedBorderColor Color * @uiDefault CheckBox.icon.focusedBorderColor Color - * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color + * @uiDefault CheckBox.icon.hoverBorderColor Color optional + * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional * @uiDefault CheckBox.icon.background Color * @uiDefault CheckBox.icon.disabledBackground Color + * @uiDefault CheckBox.icon.focusedBackground Color optional + * @uiDefault CheckBox.icon.hoverBackground Color optional + * @uiDefault CheckBox.icon.pressedBackground Color optional * @uiDefault CheckBox.icon.selectedBackground Color + * @uiDefault CheckBox.icon.selectedHoverBackground Color optional + * @uiDefault CheckBox.icon.selectedPressedBackground Color optional * @uiDefault CheckBox.icon.checkmarkColor Color * @uiDefault CheckBox.icon.disabledCheckmarkColor Color * @@ -53,10 +60,16 @@ public class FlatCheckBoxIcon protected final Color disabledBorderColor = UIManager.getColor( "CheckBox.icon.disabledBorderColor" ); protected final Color selectedBorderColor = UIManager.getColor( "CheckBox.icon.selectedBorderColor" ); protected final Color focusedBorderColor = UIManager.getColor( "CheckBox.icon.focusedBorderColor" ); + protected final Color hoverBorderColor = UIManager.getColor( "CheckBox.icon.hoverBorderColor" ); protected final Color selectedFocusedBorderColor = UIManager.getColor( "CheckBox.icon.selectedFocusedBorderColor" ); protected final Color background = UIManager.getColor( "CheckBox.icon.background" ); protected final Color disabledBackground = UIManager.getColor( "CheckBox.icon.disabledBackground" ); + protected final Color focusedBackground = UIManager.getColor( "CheckBox.icon.focusedBackground" ); + protected final Color hoverBackground = UIManager.getColor( "CheckBox.icon.hoverBackground" ); + protected final Color pressedBackground = UIManager.getColor( "CheckBox.icon.pressedBackground" ); protected final Color selectedBackground = UIManager.getColor( "CheckBox.icon.selectedBackground" ); + protected final Color selectedHoverBackground = UIManager.getColor( "CheckBox.icon.selectedHoverBackground" ); + protected final Color selectedPressedBackground = UIManager.getColor( "CheckBox.icon.selectedPressedBackground" ); protected final Color checkmarkColor = UIManager.getColor( "CheckBox.icon.checkmarkColor" ); protected final Color disabledCheckmarkColor = UIManager.getColor( "CheckBox.icon.disabledCheckmarkColor" ); @@ -68,33 +81,35 @@ public class FlatCheckBoxIcon @Override protected void paintIcon( Component c, Graphics2D g2 ) { - boolean enabled = c.isEnabled(); - boolean focused = c.hasFocus(); - boolean selected = (c instanceof AbstractButton) && ((AbstractButton)c).isSelected(); + boolean selected = (c instanceof AbstractButton) ? ((AbstractButton)c).isSelected() : false; // paint focused border - if( focused ) { + if( c.hasFocus() ) { g2.setColor( focusColor ); paintFocusBorder( g2 ); } // paint border - g2.setColor( enabled - ? (selected - ? (focused ? selectedFocusedBorderColor : selectedBorderColor) - : (focused ? focusedBorderColor : borderColor)) - : disabledBorderColor ); + g2.setColor( FlatButtonUI.buttonStateColor( c, + selected ? selectedBorderColor : borderColor, + disabledBorderColor, + selected && selectedFocusedBorderColor != null ? selectedFocusedBorderColor : focusedBorderColor, + hoverBorderColor, + null ) ); paintBorder( g2 ); // paint background - g2.setColor( enabled - ? (selected ? selectedBackground : background) - : disabledBackground ); + g2.setColor( FlatButtonUI.buttonStateColor( c, + selected ? selectedBackground : background, + disabledBackground, + focusedBackground, + selected && selectedHoverBackground != null ? selectedHoverBackground : hoverBackground, + selected && selectedPressedBackground != null ? selectedPressedBackground : pressedBackground ) ); paintBackground( g2 ); // paint checkmark if( selected ) { - g2.setColor( enabled ? checkmarkColor : disabledCheckmarkColor ); + g2.setColor( c.isEnabled() ? checkmarkColor : disabledCheckmarkColor ); paintCheckmark( g2 ); } } diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index d78374b8..f2c7c29a 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -67,7 +67,7 @@ Button.pressedBackground=5c6164 Button.borderColor=5e6060 Button.disabledBorderColor=5e6060 Button.focusedBorderColor=466d94 -Button.hoverBorderColor=466d94 +Button.hoverBorderColor=@@Button.focusedBorderColor Button.default.background=365880 Button.default.foreground=bbbbbb @@ -88,9 +88,12 @@ CheckBox.icon.borderColor=6B6B6B CheckBox.icon.disabledBorderColor=545556 CheckBox.icon.selectedBorderColor=6B6B6B CheckBox.icon.focusedBorderColor=466D94 +CheckBox.icon.hoverBorderColor=@@CheckBox.icon.focusedBorderColor CheckBox.icon.selectedFocusedBorderColor=466D94 CheckBox.icon.background=43494A CheckBox.icon.disabledBackground=@background +CheckBox.icon.hoverBackground=4c5052 +CheckBox.icon.pressedBackground=@@Button.pressedBackground CheckBox.icon.selectedBackground=43494A CheckBox.icon.checkmarkColor=A7A7A7 CheckBox.icon.disabledCheckmarkColor=606060 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties index b913ed3f..10b930af 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties @@ -26,9 +26,13 @@ Button.focusedBackground=null #---- CheckBox ---- CheckBox.icon.selectedBorderColor=4982CC +CheckBox.icon.selectedFocusedBorderColor=ACCFF7 CheckBox.icon.selectedBackground=4D89C9 CheckBox.icon.checkmarkColor=FFFFFF +CheckBox.icon.selectedHoverBackground=5E94CE +CheckBox.icon.selectedPressedBackground=72A1D4 + #---- Component ---- diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index 64f4964b..56a558bb 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -68,7 +68,7 @@ Button.pressedBackground=dfdfdf Button.borderColor=bfbfbf Button.disabledBorderColor=cfcfcf Button.focusedBorderColor=87afda -Button.hoverBorderColor=87afda +Button.hoverBorderColor=@@Button.focusedBorderColor Button.default.background=4A86C7 Button.default.foreground=f0f0f0 @@ -89,9 +89,12 @@ CheckBox.icon.borderColor=878787 CheckBox.icon.disabledBorderColor=BDBDBD CheckBox.icon.selectedBorderColor=878787 CheckBox.icon.focusedBorderColor=7B9FC7 -CheckBox.icon.selectedFocusedBorderColor=ACCFF7 +CheckBox.icon.hoverBorderColor=@@CheckBox.icon.focusedBorderColor CheckBox.icon.background=FFFFFF CheckBox.icon.disabledBackground=@background +CheckBox.icon.focusedBackground=@@Button.focusedBackground +CheckBox.icon.hoverBackground=@@Button.hoverBackground +CheckBox.icon.pressedBackground=@@Button.pressedBackground CheckBox.icon.selectedBackground=FFFFFF CheckBox.icon.checkmarkColor=4D89C9 CheckBox.icon.disabledCheckmarkColor=ABABAB diff --git a/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties b/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties index 324aeaa9..45eea3ca 100644 --- a/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties +++ b/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties @@ -73,9 +73,13 @@ CheckBox.icon.borderColor=878787 CheckBox.icon.disabledBorderColor=BDBDBD CheckBox.icon.selectedBorderColor=4982CC CheckBox.icon.focusedBorderColor=7B9FC7 +CheckBox.icon.hoverBorderColor=ff0000 CheckBox.icon.selectedFocusedBorderColor=ACCFF7 CheckBox.icon.background=FFFFFF CheckBox.icon.disabledBackground=F2F2F2 +CheckBox.icon.focusedBackground=00ffff +CheckBox.icon.hoverBackground=ffff00 +CheckBox.icon.pressedBackground=FFC800 CheckBox.icon.selectedBackground=4D89C9 CheckBox.icon.checkmarkColor=FFFFFF CheckBox.icon.disabledCheckmarkColor=ABABAB