diff --git a/CHANGELOG.md b/CHANGELOG.md index 49b2cbd3..798684d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,8 +34,14 @@ FlatLaf Change Log - if moving focus into the toolbar, focus recently focused toolbar button - ComboBox, Spinner, TextField and subclasses: Support specifying width of border (see UI value `Component.borderWidth`). -- CheckBox and RadioButton: Support specifying width of icon border (see UI - value `CheckBox.icon.borderWidth`). +- CheckBox and RadioButton: + - Made selected icon better recognizable in **FlatLaf Light** (use blue + border), **Dark** and **Darcula** (use lighter border) themes. **IntelliJ** + theme is not changed. + - Support specifying width of icon border (see UI value + `CheckBox.icon.borderWidth`). + - Reworked icon UI defaults and added missing ones. **Note**: There are minor + incompatible changes in FlatLaf properties files. - Slider: Support specifying width of thumb border (see UI value `Slider.thumbBorderWidth`). - Added more color functions to class `ColorFunctions` for easy use in diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index ce600309..277831b3 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -504,7 +504,7 @@ public class IntelliJTheme // for filled checkbox/radiobutton used in light themes defaults.remove( "CheckBox.icon[filled].focusWidth" ); defaults.put( "CheckBox.icon[filled].hoverBorderColor", defaults.get( "CheckBox.icon[filled].focusedBorderColor" ) ); - defaults.put( "CheckBox.icon[filled].selectedFocusedBackground", defaults.get( "CheckBox.icon[filled].selectedBackground" ) ); + defaults.put( "CheckBox.icon[filled].focusedSelectedBackground", defaults.get( "CheckBox.icon[filled].selectedBackground" ) ); if( dark ) { // IDEA Darcula checkBoxFocused.svg, checkBoxSelectedFocused.svg, @@ -513,9 +513,9 @@ public class IntelliJTheme // --> add alpha to focused border colors String[] focusedBorderColorKeys = new String[] { "CheckBox.icon.focusedBorderColor", - "CheckBox.icon.selectedFocusedBorderColor", + "CheckBox.icon.focusedSelectedBorderColor", "CheckBox.icon[filled].focusedBorderColor", - "CheckBox.icon[filled].selectedFocusedBorderColor", + "CheckBox.icon[filled].focusedSelectedBorderColor", }; for( String key : focusedBorderColorKeys ) { Color color = defaults.getColor( key ); @@ -624,7 +624,7 @@ public class IntelliJTheme checkboxKeyMapping.put( "Checkbox.Background.Selected", "CheckBox.icon.selectedBackground" ); checkboxKeyMapping.put( "Checkbox.Border.Selected", "CheckBox.icon.selectedBorderColor" ); checkboxKeyMapping.put( "Checkbox.Foreground.Selected", "CheckBox.icon.checkmarkColor" ); - checkboxKeyMapping.put( "Checkbox.Focus.Thin.Selected", "CheckBox.icon.selectedFocusedBorderColor" ); + checkboxKeyMapping.put( "Checkbox.Focus.Thin.Selected", "CheckBox.icon.focusedSelectedBorderColor" ); checkboxDuplicateColors.put( "Checkbox.Background.Default.Dark", "Checkbox.Background.Selected.Dark" ); checkboxDuplicateColors.put( "Checkbox.Border.Default.Dark", "Checkbox.Border.Selected.Dark" ); 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 7c467a53..f371679c 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 @@ -44,8 +44,11 @@ import com.formdev.flatlaf.ui.FlatUIUtils; * @uiDefault Component.focusWidth int * @uiDefault Component.borderWidth int * @uiDefault Component.focusColor Color - * @uiDefault CheckBox.icon.focusWidth int optional; defaults to Component.focusWidth + * @uiDefault CheckBox.icon.focusWidth int or float optional; defaults to Component.focusWidth * @uiDefault CheckBox.icon.borderWidth int or float optional; defaults to Component.borderWidth + * @uiDefault CheckBox.icon.selectedBorderWidth int or float optional; defaults to CheckBox.icon.borderWidth + * @uiDefault CheckBox.icon.disabledSelectedBorderWidth int or float optional; defaults to CheckBox.icon.selectedBorderWidth + * @uiDefault CheckBox.arc int * * @uiDefault CheckBox.icon.focusColor Color optional; defaults to Component.focusColor * @uiDefault CheckBox.icon.borderColor Color @@ -53,33 +56,42 @@ import com.formdev.flatlaf.ui.FlatUIUtils; * @uiDefault CheckBox.icon.selectedBorderColor Color * @uiDefault CheckBox.icon.selectedBackground Color * @uiDefault CheckBox.icon.checkmarkColor Color + * * @uiDefault CheckBox.icon.disabledBorderColor Color * @uiDefault CheckBox.icon.disabledBackground Color + * @uiDefault CheckBox.icon.disabledSelectedBorderColor Color optional; CheckBox.icon.disabledBorderColor is used if not specified + * @uiDefault CheckBox.icon.disabledSelectedBackground Color optional; CheckBox.icon.disabledBackground is used if not specified * @uiDefault CheckBox.icon.disabledCheckmarkColor Color + * * @uiDefault CheckBox.icon.focusedBorderColor Color optional * @uiDefault CheckBox.icon.focusedBackground Color optional - * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional; CheckBox.icon.focusedBorderColor is used if not specified - * @uiDefault CheckBox.icon.selectedFocusedBackground Color optional; CheckBox.icon.focusedBackground is used if not specified - * @uiDefault CheckBox.icon.selectedFocusedCheckmarkColor Color optional; CheckBox.icon.checkmarkColor is used if not specified + * @uiDefault CheckBox.icon.focusedSelectedBorderColor Color optional; CheckBox.icon.focusedBorderColor is used if not specified + * @uiDefault CheckBox.icon.focusedSelectedBackground Color optional; CheckBox.icon.focusedBackground is used if not specified + * @uiDefault CheckBox.icon.focusedCheckmarkColor Color optional; CheckBox.icon.checkmarkColor is used if not specified + * * @uiDefault CheckBox.icon.hoverBorderColor Color optional * @uiDefault CheckBox.icon.hoverBackground Color optional - * @uiDefault CheckBox.icon.selectedHoverBackground Color optional; CheckBox.icon.hoverBackground is used if not specified + * @uiDefault CheckBox.icon.hoverSelectedBorderColor Color optional; CheckBox.icon.hoverBorderColor is used if not specified + * @uiDefault CheckBox.icon.hoverSelectedBackground Color optional; CheckBox.icon.hoverBackground is used if not specified + * @uiDefault CheckBox.icon.hoverCheckmarkColor Color optional; CheckBox.icon.checkmarkColor is used if not specified + * + * @uiDefault CheckBox.icon.pressedBorderColor Color optional * @uiDefault CheckBox.icon.pressedBackground Color optional - * @uiDefault CheckBox.icon.selectedPressedBackground Color optional; CheckBox.icon.pressedBackground is used if not specified - * @uiDefault CheckBox.arc int + * @uiDefault CheckBox.icon.pressedSelectedBorderColor Color optional; CheckBox.icon.pressedBorderColor is used if not specified + * @uiDefault CheckBox.icon.pressedSelectedBackground Color optional; CheckBox.icon.pressedBackground is used if not specified + * @uiDefault CheckBox.icon.pressedCheckmarkColor Color optional; CheckBox.icon.checkmarkColor is used if not specified * * @author Karl Tauber */ public class FlatCheckBoxIcon extends FlatAbstractIcon { - protected final String style = UIManager.getString( "CheckBox.icon.style" ); - @Styleable public int focusWidth = getUIInt( "CheckBox.icon.focusWidth", - UIManager.getInt( "Component.focusWidth" ), style ); - @Styleable protected Color focusColor = FlatUIUtils.getUIColor( "CheckBox.icon.focusColor", - UIManager.getColor( "Component.focusColor" ) ); - /** @since 2 */ @Styleable protected float borderWidth = getUIFloat( "CheckBox.icon.borderWidth", - FlatUIUtils.getUIFloat( "Component.borderWidth", 1 ), style ); + protected final String style = UIManager.getString( getPropertyPrefix() + "icon.style" ); + @Styleable protected float focusWidth = getUIFloat( "CheckBox.icon.focusWidth", UIManager.getInt( "Component.focusWidth" ), style ); + @Styleable protected Color focusColor = FlatUIUtils.getUIColor( "CheckBox.icon.focusColor", UIManager.getColor( "Component.focusColor" ) ); + /** @since 2 */ @Styleable protected float borderWidth = getUIFloat( "CheckBox.icon.borderWidth", FlatUIUtils.getUIFloat( "Component.borderWidth", 1 ), style ); + /** @since 2 */ @Styleable protected float selectedBorderWidth = getUIFloat( "CheckBox.icon.selectedBorderWidth", Float.MIN_VALUE, style ); + /** @since 2 */ @Styleable protected float disabledSelectedBorderWidth = getUIFloat( "CheckBox.icon.disabledSelectedBorderWidth", Float.MIN_VALUE, style ); @Styleable protected int arc = FlatUIUtils.getUIInt( "CheckBox.arc", 2 ); // enabled @@ -92,23 +104,34 @@ public class FlatCheckBoxIcon // disabled @Styleable protected Color disabledBorderColor = getUIColor( "CheckBox.icon.disabledBorderColor", style ); @Styleable protected Color disabledBackground = getUIColor( "CheckBox.icon.disabledBackground", style ); + /** @since 2 */ @Styleable protected Color disabledSelectedBorderColor = getUIColor( "CheckBox.icon.disabledSelectedBorderColor", style ); + /** @since 2 */ @Styleable protected Color disabledSelectedBackground = getUIColor( "CheckBox.icon.disabledSelectedBackground", style ); @Styleable protected Color disabledCheckmarkColor = getUIColor( "CheckBox.icon.disabledCheckmarkColor", style ); // focused @Styleable protected Color focusedBorderColor = getUIColor( "CheckBox.icon.focusedBorderColor", style ); @Styleable protected Color focusedBackground = getUIColor( "CheckBox.icon.focusedBackground", style ); - @Styleable protected Color selectedFocusedBorderColor = getUIColor( "CheckBox.icon.selectedFocusedBorderColor", style ); - @Styleable protected Color selectedFocusedBackground = getUIColor( "CheckBox.icon.selectedFocusedBackground", style ); - @Styleable protected Color selectedFocusedCheckmarkColor = getUIColor( "CheckBox.icon.selectedFocusedCheckmarkColor", style ); + /** @since 2 */ @Styleable protected Color focusedSelectedBorderColor = getUIColor( "CheckBox.icon.focusedSelectedBorderColor", style ); + /** @since 2 */ @Styleable protected Color focusedSelectedBackground = getUIColor( "CheckBox.icon.focusedSelectedBackground", style ); + /** @since 2 */ @Styleable protected Color focusedCheckmarkColor = getUIColor( "CheckBox.icon.focusedCheckmarkColor", style ); // hover @Styleable protected Color hoverBorderColor = getUIColor( "CheckBox.icon.hoverBorderColor", style ); @Styleable protected Color hoverBackground = getUIColor( "CheckBox.icon.hoverBackground", style ); - @Styleable protected Color selectedHoverBackground = getUIColor( "CheckBox.icon.selectedHoverBackground", style ); + /** @since 2 */ @Styleable protected Color hoverSelectedBorderColor = getUIColor( "CheckBox.icon.hoverSelectedBorderColor", style ); + /** @since 2 */ @Styleable protected Color hoverSelectedBackground = getUIColor( "CheckBox.icon.hoverSelectedBackground", style ); + /** @since 2 */ @Styleable protected Color hoverCheckmarkColor = getUIColor( "CheckBox.icon.hoverCheckmarkColor", style ); // pressed + /** @since 2 */ @Styleable protected Color pressedBorderColor = getUIColor( "CheckBox.icon.pressedBorderColor", style ); @Styleable protected Color pressedBackground = getUIColor( "CheckBox.icon.pressedBackground", style ); - @Styleable protected Color selectedPressedBackground = getUIColor( "CheckBox.icon.selectedPressedBackground", style ); + /** @since 2 */ @Styleable protected Color pressedSelectedBorderColor = getUIColor( "CheckBox.icon.pressedSelectedBorderColor", style ); + /** @since 2 */ @Styleable protected Color pressedSelectedBackground = getUIColor( "CheckBox.icon.pressedSelectedBackground", style ); + /** @since 2 */ @Styleable protected Color pressedCheckmarkColor = getUIColor( "CheckBox.icon.pressedCheckmarkColor", style ); + + protected String getPropertyPrefix() { + return "CheckBox."; + } protected static Color getUIColor( String key, String style ) { if( style != null ) { @@ -119,15 +142,6 @@ public class FlatCheckBoxIcon return UIManager.getColor( key ); } - protected static int getUIInt( String key, int defaultValue, String style ) { - if( style != null ) { - int value = FlatUIUtils.getUIInt( styleKey( key, style ), Integer.MIN_VALUE ); - if( value != Integer.MIN_VALUE ) - return value; - } - return FlatUIUtils.getUIInt( key, defaultValue ); - } - /** @since 2 */ protected static float getUIFloat( String key, float defaultValue, String style ) { if( style != null ) { @@ -163,6 +177,11 @@ public class FlatCheckBoxIcon boolean indeterminate = isIndeterminate( c ); boolean selected = indeterminate || isSelected( c ); boolean isFocused = FlatUIUtils.isPermanentFocusOwner( c ); + float bw = selected + ? (disabledSelectedBorderWidth != Float.MIN_VALUE && !c.isEnabled() + ? disabledSelectedBorderWidth + : (selectedBorderWidth != Float.MIN_VALUE ? selectedBorderWidth : borderWidth)) + : borderWidth; // paint focused border if( isFocused && focusWidth > 0 && FlatButtonUI.isFocusPainted( c ) ) { @@ -172,7 +191,7 @@ public class FlatCheckBoxIcon // paint border g.setColor( getBorderColor( c, selected ) ); - paintBorder( c, g ); + paintBorder( c, g, bw ); // paint background Color bg = FlatUIUtils.deriveColor( getBackground( c, selected ), @@ -180,14 +199,14 @@ public class FlatCheckBoxIcon if( bg.getAlpha() < 255 ) { // fill background with default color before filling with non-opaque background g.setColor( selected ? selectedBackground : background ); - paintBackground( c, g ); + paintBackground( c, g, bw ); } g.setColor( bg ); - paintBackground( c, g ); + paintBackground( c, g, bw ); // paint checkmark - if( selected || indeterminate ) { - g.setColor( getCheckmarkColor( c, selected, isFocused ) ); + if( selected ) { + g.setColor( getCheckmarkColor( c ) ); if( indeterminate ) paintIndeterminate( c, g ); else @@ -197,20 +216,23 @@ public class FlatCheckBoxIcon protected void paintFocusBorder( Component c, Graphics2D g ) { // the outer focus border is painted outside of the icon - int wh = ICON_SIZE - 1 + (focusWidth * 2); - int arcwh = arc + (focusWidth * 2); - g.fillRoundRect( -focusWidth + 1, -focusWidth, wh, wh, arcwh, arcwh ); + float wh = ICON_SIZE - 1 + (focusWidth * 2); + float arcwh = arc + (focusWidth * 2); + g.fill( new RoundRectangle2D.Float( -focusWidth + 1, -focusWidth, wh, wh, arcwh, arcwh ) ); } - protected void paintBorder( Component c, Graphics2D g ) { + protected void paintBorder( Component c, Graphics2D g, float borderWidth ) { + if( borderWidth == 0 ) + return; + int arcwh = arc; g.fillRoundRect( 1, 0, 14, 14, arcwh, arcwh ); } - protected void paintBackground( Component c, Graphics2D g ) { + protected void paintBackground( Component c, Graphics2D g, float borderWidth ) { float xy = borderWidth; float wh = 14 - (borderWidth * 2); - int arcwh = arc - 1; + float arcwh = arc - borderWidth; g.fill( new RoundRectangle2D.Float( 1 + xy, xy, wh, wh, arcwh, arcwh ) ); } @@ -236,6 +258,11 @@ public class FlatCheckBoxIcon return c instanceof AbstractButton && ((AbstractButton)c).isSelected(); } + /** @since 2 */ + public float getFocusWidth() { + return focusWidth; + } + protected Color getFocusColor( Component c ) { return focusColor; } @@ -243,26 +270,27 @@ public class FlatCheckBoxIcon protected Color getBorderColor( Component c, boolean selected ) { return FlatButtonUI.buttonStateColor( c, selected ? selectedBorderColor : borderColor, - disabledBorderColor, - selected && selectedFocusedBorderColor != null ? selectedFocusedBorderColor : focusedBorderColor, - hoverBorderColor, - null ); + (selected && disabledSelectedBorderColor != null) ? disabledSelectedBorderColor : disabledBorderColor, + (selected && focusedSelectedBorderColor != null) ? focusedSelectedBorderColor : focusedBorderColor, + (selected && hoverSelectedBorderColor != null) ? hoverSelectedBorderColor : hoverBorderColor, + (selected && pressedSelectedBorderColor != null) ? pressedSelectedBorderColor : pressedBorderColor ); } protected Color getBackground( Component c, boolean selected ) { return FlatButtonUI.buttonStateColor( c, selected ? selectedBackground : background, - disabledBackground, - (selected && selectedFocusedBackground != null) ? selectedFocusedBackground : focusedBackground, - (selected && selectedHoverBackground != null) ? selectedHoverBackground : hoverBackground, - (selected && selectedPressedBackground != null) ? selectedPressedBackground : pressedBackground ); + (selected && disabledSelectedBackground != null) ? disabledSelectedBackground : disabledBackground, + (selected && focusedSelectedBackground != null) ? focusedSelectedBackground : focusedBackground, + (selected && hoverSelectedBackground != null) ? hoverSelectedBackground : hoverBackground, + (selected && pressedSelectedBackground != null) ? pressedSelectedBackground : pressedBackground ); } - protected Color getCheckmarkColor( Component c, boolean selected, boolean isFocused ) { - return c.isEnabled() - ? ((selected && isFocused && selectedFocusedCheckmarkColor != null) - ? selectedFocusedCheckmarkColor - : checkmarkColor) - : disabledCheckmarkColor; + protected Color getCheckmarkColor( Component c ) { + return FlatButtonUI.buttonStateColor( c, + checkmarkColor, + disabledCheckmarkColor, + focusedCheckmarkColor, + hoverCheckmarkColor, + pressedCheckmarkColor ); } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java index 14ad53df..87df538c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java @@ -29,6 +29,7 @@ import com.formdev.flatlaf.ui.FlatStylingSupport.Styleable; * is painted outside of the icon bounds. Make sure that the radiobutton * has margins, which are equal or greater than focusWidth. * + * @uiDefault RadioButton.icon.style String optional; "outlined"/null (default) or "filled" * @uiDefault RadioButton.icon.centerDiameter int or float * * @author Karl Tauber @@ -39,19 +40,27 @@ public class FlatRadioButtonIcon @Styleable protected float centerDiameter = getUIFloat( "RadioButton.icon.centerDiameter", 8, style ); @Override - protected void paintFocusBorder( Component c, Graphics2D g ) { - // the outer focus border is painted outside of the icon - int wh = ICON_SIZE + (focusWidth * 2); - g.fillOval( -focusWidth, -focusWidth, wh, wh ); + protected String getPropertyPrefix() { + return "RadioButton."; } @Override - protected void paintBorder( Component c, Graphics2D g ) { + protected void paintFocusBorder( Component c, Graphics2D g ) { + // the outer focus border is painted outside of the icon + float wh = ICON_SIZE + (focusWidth * 2); + g.fill( new Ellipse2D.Float( -focusWidth, -focusWidth, wh, wh ) ); + } + + @Override + protected void paintBorder( Component c, Graphics2D g, float borderWidth ) { + if( borderWidth == 0 ) + return; + g.fillOval( 0, 0, 15, 15 ); } @Override - protected void paintBackground( Component c, Graphics2D g ) { + protected void paintBackground( Component c, Graphics2D g, float borderWidth ) { float xy = borderWidth; float wh = 15 - (borderWidth * 2); g.fill( new Ellipse2D.Float( xy, xy, wh, wh ) ); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java index 409a2e97..60c4fa83 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.Objects; import javax.swing.AbstractButton; import javax.swing.CellRendererPane; +import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.LookAndFeel; import javax.swing.UIManager; @@ -279,8 +280,12 @@ public class FlatRadioButtonUI private int getIconFocusWidth( JComponent c ) { AbstractButton b = (AbstractButton) c; - return (b.getIcon() == null && getDefaultIcon() instanceof FlatCheckBoxIcon) - ? UIScale.scale( ((FlatCheckBoxIcon)getDefaultIcon()).focusWidth ) + Icon icon = b.getIcon(); + if( icon == null ) + icon = getDefaultIcon(); + + return (icon instanceof FlatCheckBoxIcon) + ? Math.round( UIScale.scale( ((FlatCheckBoxIcon)icon).getFocusWidth() ) ) : 0; } diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties index fe3c3949..b2b669aa 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties @@ -46,6 +46,7 @@ Button.default.boldText = true #---- CheckBox ---- +CheckBox.icon.focusWidth = null CheckBox.icon.focusedBackground = null 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 19bd9622..82c080a7 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -128,10 +128,12 @@ Button.toolbar.selectedBackground = lighten($Button.background,7%,derived) #---- CheckBox ---- +CheckBox.icon.focusWidth = 1 + # enabled CheckBox.icon.borderColor = tint($Component.borderColor,5%) CheckBox.icon.background = tint(@background,5%) -CheckBox.icon.selectedBorderColor = $CheckBox.icon.borderColor +CheckBox.icon.selectedBorderColor = tint($CheckBox.icon.borderColor,20%) CheckBox.icon.selectedBackground = $CheckBox.icon.background CheckBox.icon.checkmarkColor = shade(@foreground,10%) @@ -149,18 +151,19 @@ CheckBox.icon.hoverBorderColor = $CheckBox.icon.focusedBorderColor CheckBox.icon.hoverBackground = lighten($CheckBox.icon.background,3%,derived) # pressed +CheckBox.icon.pressedBorderColor = $CheckBox.icon.focusedBorderColor CheckBox.icon.pressedBackground = lighten($CheckBox.icon.background,6%,derived) -# used if CheckBox.icon.style = filled +# used if CheckBox.icon.style or RadioButton.icon.style = filled # enabled CheckBox.icon[filled].selectedBorderColor = $CheckBox.icon.checkmarkColor CheckBox.icon[filled].selectedBackground = $CheckBox.icon.checkmarkColor CheckBox.icon[filled].checkmarkColor = $CheckBox.icon.background # hover -CheckBox.icon[filled].selectedHoverBackground = darken($CheckBox.icon[filled].selectedBackground,3%,derived) +CheckBox.icon[filled].hoverSelectedBackground = darken($CheckBox.icon[filled].selectedBackground,3%,derived) # pressed -CheckBox.icon[filled].selectedPressedBackground = darken($CheckBox.icon[filled].selectedBackground,6%,derived) +CheckBox.icon[filled].pressedSelectedBackground = darken($CheckBox.icon[filled].selectedBackground,6%,derived) #---- CheckBoxMenuItem ---- 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 21d3f218..d0c256be 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties @@ -54,6 +54,7 @@ Button.default.borderWidth = 1 #---- CheckBox ---- CheckBox.icon.style = filled +CheckBox.icon.focusWidth = null CheckBox.icon.focusedBackground = null @@ -63,3 +64,8 @@ Component.focusWidth = 2 Component.innerFocusWidth = 0 Component.innerOutlineWidth = 0 Component.arrowType = triangle + + +#---- RadioButton ---- + +RadioButton.icon.style = filled 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 aed961da..a0ab8a28 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -131,17 +131,19 @@ Button.toolbar.selectedBackground = $Button.selectedBackground #---- CheckBox ---- +CheckBox.icon.focusWidth = 1 + # enabled CheckBox.icon.borderColor = shade($Component.borderColor,10%) CheckBox.icon.background = @buttonBackground -CheckBox.icon.selectedBorderColor = $CheckBox.icon.borderColor +CheckBox.icon.selectedBorderColor = $CheckBox.icon.checkmarkColor CheckBox.icon.selectedBackground = $CheckBox.icon.background CheckBox.icon.checkmarkColor = @accentCheckmarkColor # disabled CheckBox.icon.disabledBorderColor = tint($CheckBox.icon.borderColor,20%) CheckBox.icon.disabledBackground = @disabledBackground -CheckBox.icon.disabledCheckmarkColor = shade(@background,30%) +CheckBox.icon.disabledCheckmarkColor = lighten(changeSaturation($CheckBox.icon.checkmarkColor,0%),5%) # focused CheckBox.icon.focusedBorderColor = shade($Component.focusedBorderColor,10%) @@ -152,22 +154,23 @@ CheckBox.icon.hoverBorderColor = $CheckBox.icon.focusedBorderColor CheckBox.icon.hoverBackground = darken($CheckBox.icon.background,3%,derived) # pressed +CheckBox.icon.pressedBorderColor = $CheckBox.icon.focusedBorderColor CheckBox.icon.pressedBackground = darken($CheckBox.icon.background,10%,derived) -# used if CheckBox.icon.style = filled +# used if CheckBox.icon.style or RadioButton.icon.style = filled # enabled CheckBox.icon[filled].selectedBorderColor = shade($CheckBox.icon[filled].selectedBackground,5%) CheckBox.icon[filled].selectedBackground = @accentCheckmarkColor CheckBox.icon[filled].checkmarkColor = @buttonBackground # focused -CheckBox.icon[filled].selectedFocusedBorderColor = tint($CheckBox.icon[filled].selectedBackground,50%) -CheckBox.icon[filled].selectedFocusedBackground = $CheckBox.icon[filled].selectedBackground -CheckBox.icon[filled].selectedFocusedCheckmarkColor = $CheckBox.icon.focusedBackground +CheckBox.icon[filled].focusedSelectedBorderColor = tint($CheckBox.icon[filled].selectedBackground,50%) +CheckBox.icon[filled].focusedSelectedBackground = $CheckBox.icon[filled].selectedBackground +CheckBox.icon[filled].focusedCheckmarkColor = $CheckBox.icon.focusedBackground # hover -CheckBox.icon[filled].selectedHoverBackground = darken($CheckBox.icon[filled].selectedBackground,5%,derived) +CheckBox.icon[filled].hoverSelectedBackground = darken($CheckBox.icon[filled].selectedBackground,5%,derived) # pressed -CheckBox.icon[filled].selectedPressedBackground = darken($CheckBox.icon[filled].selectedBackground,10%,derived) +CheckBox.icon[filled].pressedSelectedBackground = darken($CheckBox.icon[filled].selectedBackground,10%,derived) #---- CheckBoxMenuItem ---- 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 868d7ddb..c85f6003 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 @@ -469,9 +469,11 @@ public class TestFlatStyleableInfo //---- icon ---- - "icon.focusWidth", int.class, + "icon.focusWidth", float.class, "icon.focusColor", Color.class, "icon.borderWidth", float.class, + "icon.selectedBorderWidth", float.class, + "icon.disabledSelectedBorderWidth", float.class, "icon.arc", int.class, // enabled @@ -484,23 +486,30 @@ public class TestFlatStyleableInfo // disabled "icon.disabledBorderColor", Color.class, "icon.disabledBackground", Color.class, + "icon.disabledSelectedBorderColor", Color.class, + "icon.disabledSelectedBackground", Color.class, "icon.disabledCheckmarkColor", Color.class, // focused "icon.focusedBorderColor", Color.class, "icon.focusedBackground", Color.class, - "icon.selectedFocusedBorderColor", Color.class, - "icon.selectedFocusedBackground", Color.class, - "icon.selectedFocusedCheckmarkColor", Color.class, + "icon.focusedSelectedBorderColor", Color.class, + "icon.focusedSelectedBackground", Color.class, + "icon.focusedCheckmarkColor", Color.class, // hover "icon.hoverBorderColor", Color.class, "icon.hoverBackground", Color.class, - "icon.selectedHoverBackground", Color.class, + "icon.hoverSelectedBorderColor", Color.class, + "icon.hoverSelectedBackground", Color.class, + "icon.hoverCheckmarkColor", Color.class, // pressed + "icon.pressedBorderColor", Color.class, "icon.pressedBackground", Color.class, - "icon.selectedPressedBackground", Color.class + "icon.pressedSelectedBorderColor", Color.class, + "icon.pressedSelectedBackground", Color.class, + "icon.pressedCheckmarkColor", Color.class ); } @@ -1040,9 +1049,11 @@ public class TestFlatStyleableInfo private void flatCheckBoxIcon( Map> expected ) { expectedMap( expected, - "focusWidth", int.class, + "focusWidth", float.class, "focusColor", Color.class, "borderWidth", float.class, + "selectedBorderWidth", float.class, + "disabledSelectedBorderWidth", float.class, "arc", int.class, // enabled @@ -1055,23 +1066,30 @@ public class TestFlatStyleableInfo // disabled "disabledBorderColor", Color.class, "disabledBackground", Color.class, + "disabledSelectedBorderColor", Color.class, + "disabledSelectedBackground", Color.class, "disabledCheckmarkColor", Color.class, // focused "focusedBorderColor", Color.class, "focusedBackground", Color.class, - "selectedFocusedBorderColor", Color.class, - "selectedFocusedBackground", Color.class, - "selectedFocusedCheckmarkColor", Color.class, + "focusedSelectedBorderColor", Color.class, + "focusedSelectedBackground", Color.class, + "focusedCheckmarkColor", Color.class, // hover "hoverBorderColor", Color.class, "hoverBackground", Color.class, - "selectedHoverBackground", Color.class, + "hoverSelectedBorderColor", Color.class, + "hoverSelectedBackground", Color.class, + "hoverCheckmarkColor", Color.class, // pressed + "pressedBorderColor", Color.class, "pressedBackground", Color.class, - "selectedPressedBackground", Color.class + "pressedSelectedBorderColor", Color.class, + "pressedSelectedBackground", Color.class, + "pressedCheckmarkColor", Color.class ); } 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 f8b585bf..4aa654ab 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 @@ -608,9 +608,11 @@ public class TestFlatStyling //---- icon ---- - ui.applyStyle( b, "icon.focusWidth: 2" ); + ui.applyStyle( b, "icon.focusWidth: 1.5" ); ui.applyStyle( b, "icon.focusColor: #fff" ); - ui.applyStyle( b, "icon.borderWidth: 1" ); + ui.applyStyle( b, "icon.borderWidth: 1.5" ); + ui.applyStyle( b, "icon.selectedBorderWidth: 1.5" ); + ui.applyStyle( b, "icon.disabledSelectedBorderWidth: 1.5" ); ui.applyStyle( b, "icon.arc: 5" ); // enabled @@ -623,23 +625,30 @@ public class TestFlatStyling // disabled ui.applyStyle( b, "icon.disabledBorderColor: #fff" ); ui.applyStyle( b, "icon.disabledBackground: #fff" ); + ui.applyStyle( b, "icon.disabledSelectedBorderColor: #fff" ); + ui.applyStyle( b, "icon.disabledSelectedBackground: #fff" ); ui.applyStyle( b, "icon.disabledCheckmarkColor: #fff" ); // focused ui.applyStyle( b, "icon.focusedBorderColor: #fff" ); ui.applyStyle( b, "icon.focusedBackground: #fff" ); - ui.applyStyle( b, "icon.selectedFocusedBorderColor: #fff" ); - ui.applyStyle( b, "icon.selectedFocusedBackground: #fff" ); - ui.applyStyle( b, "icon.selectedFocusedCheckmarkColor: #fff" ); + ui.applyStyle( b, "icon.focusedSelectedBorderColor: #fff" ); + ui.applyStyle( b, "icon.focusedSelectedBackground: #fff" ); + ui.applyStyle( b, "icon.focusedCheckmarkColor: #fff" ); // hover ui.applyStyle( b, "icon.hoverBorderColor: #fff" ); ui.applyStyle( b, "icon.hoverBackground: #fff" ); - ui.applyStyle( b, "icon.selectedHoverBackground: #fff" ); + ui.applyStyle( b, "icon.hoverSelectedBorderColor: #fff" ); + ui.applyStyle( b, "icon.hoverSelectedBackground: #fff" ); + ui.applyStyle( b, "icon.hoverCheckmarkColor: #fff" ); // pressed + ui.applyStyle( b, "icon.pressedBorderColor: #fff" ); ui.applyStyle( b, "icon.pressedBackground: #fff" ); - ui.applyStyle( b, "icon.selectedPressedBackground: #fff" ); + ui.applyStyle( b, "icon.pressedSelectedBorderColor: #fff" ); + ui.applyStyle( b, "icon.pressedSelectedBackground: #fff" ); + ui.applyStyle( b, "icon.pressedCheckmarkColor: #fff" ); } @Test @@ -1263,9 +1272,11 @@ public class TestFlatStyling } private void flatCheckBoxIcon( FlatCheckBoxIcon icon ) { - icon.applyStyleProperty( "focusWidth", 2 ); + icon.applyStyleProperty( "focusWidth", 1.5f ); icon.applyStyleProperty( "focusColor", Color.WHITE ); icon.applyStyleProperty( "borderWidth", 1.5f ); + icon.applyStyleProperty( "selectedBorderWidth", 1.5f ); + icon.applyStyleProperty( "disabledSelectedBorderWidth", 1.5f ); icon.applyStyleProperty( "arc", 5 ); // enabled @@ -1278,23 +1289,30 @@ public class TestFlatStyling // disabled icon.applyStyleProperty( "disabledBorderColor", Color.WHITE ); icon.applyStyleProperty( "disabledBackground", Color.WHITE ); + icon.applyStyleProperty( "disabledSelectedBorderColor", Color.WHITE ); + icon.applyStyleProperty( "disabledSelectedBackground", Color.WHITE ); icon.applyStyleProperty( "disabledCheckmarkColor", Color.WHITE ); // focused icon.applyStyleProperty( "focusedBorderColor", Color.WHITE ); icon.applyStyleProperty( "focusedBackground", Color.WHITE ); - icon.applyStyleProperty( "selectedFocusedBorderColor", Color.WHITE ); - icon.applyStyleProperty( "selectedFocusedBackground", Color.WHITE ); - icon.applyStyleProperty( "selectedFocusedCheckmarkColor", Color.WHITE ); + icon.applyStyleProperty( "focusedSelectedBorderColor", Color.WHITE ); + icon.applyStyleProperty( "focusedSelectedBackground", Color.WHITE ); + icon.applyStyleProperty( "focusedCheckmarkColor", Color.WHITE ); // hover icon.applyStyleProperty( "hoverBorderColor", Color.WHITE ); icon.applyStyleProperty( "hoverBackground", Color.WHITE ); - icon.applyStyleProperty( "selectedHoverBackground", Color.WHITE ); + icon.applyStyleProperty( "hoverSelectedBorderColor", Color.WHITE ); + icon.applyStyleProperty( "hoverSelectedBackground", Color.WHITE ); + icon.applyStyleProperty( "hoverCheckmarkColor", Color.WHITE ); // pressed + icon.applyStyleProperty( "pressedBorderColor", Color.WHITE ); icon.applyStyleProperty( "pressedBackground", Color.WHITE ); - icon.applyStyleProperty( "selectedPressedBackground", Color.WHITE ); + icon.applyStyleProperty( "pressedSelectedBorderColor", Color.WHITE ); + icon.applyStyleProperty( "pressedSelectedBackground", Color.WHITE ); + icon.applyStyleProperty( "pressedCheckmarkColor", Color.WHITE ); } @Test diff --git a/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties b/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties index 05d01807..f26977df 100644 --- a/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties +++ b/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties @@ -58,17 +58,17 @@ CheckBox.icon.disabledBackground = CheckBox.icon.background CheckBox.icon.focusedBackground = CheckBox.icon.background CheckBox.icon.hoverBackground = CheckBox.icon.background CheckBox.icon.pressedBackground = CheckBox.icon.background -CheckBox.icon.selectedFocusedBackground = CheckBox.icon.selectedBackground -CheckBox.icon.selectedHoverBackground = CheckBox.icon.selectedBackground -CheckBox.icon.selectedPressedBackground = CheckBox.icon.selectedBackground +CheckBox.icon.focusedSelectedBackground = CheckBox.icon.selectedBackground +CheckBox.icon.hoverSelectedBackground = CheckBox.icon.selectedBackground +CheckBox.icon.pressedSelectedBackground = CheckBox.icon.selectedBackground CheckBox.icon[filled].disabledBackground = CheckBox.icon[filled].background CheckBox.icon[filled].focusedBackground = CheckBox.icon[filled].background CheckBox.icon[filled].hoverBackground = CheckBox.icon[filled].background CheckBox.icon[filled].pressedBackground = CheckBox.icon[filled].background -CheckBox.icon[filled].selectedFocusedBackground = CheckBox.icon[filled].selectedBackground -CheckBox.icon[filled].selectedHoverBackground = CheckBox.icon[filled].selectedBackground -CheckBox.icon[filled].selectedPressedBackground = CheckBox.icon[filled].selectedBackground +CheckBox.icon[filled].focusedSelectedBackground = CheckBox.icon[filled].selectedBackground +CheckBox.icon[filled].hoverSelectedBackground = CheckBox.icon[filled].selectedBackground +CheckBox.icon[filled].pressedSelectedBackground = CheckBox.icon[filled].selectedBackground #---- CheckBoxMenuItem ---- diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt index cbb0c791..8291260a 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt @@ -18,6 +18,7 @@ #---- CheckBox ---- +- CheckBox.icon.focusWidth 1 - CheckBox.icon.focusedBackground #446e9e4d 30% HSLA 212 40 44 30 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index f1845746..ebe78cbd 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -128,20 +128,22 @@ CheckBox.icon.checkmarkColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.Colo CheckBox.icon.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledBorderColor #545657 HSL 200 2 34 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledCheckmarkColor #686868 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusWidth 1 CheckBox.icon.focusedBackground #446e9e4d 30% HSLA 212 40 44 30 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.focusedBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.hoverBackground #4d5153 HSL 200 4 31 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) CheckBox.icon.hoverBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.pressedBackground #55585b HSL 210 3 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) +CheckBox.icon.pressedBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBackground #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedBorderColor #696b6d HSL 210 2 42 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.selectedBorderColor #87898a HSL 200 1 54 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.icon[filled].checkmarkColor #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].hoverSelectedBackground #a0a0a0 HSL 0 0 63 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +CheckBox.icon[filled].pressedSelectedBackground #999999 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] darken(6% autoInverse) CheckBox.icon[filled].selectedBackground #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon[filled].selectedBorderColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedHoverBackground #a0a0a0 HSL 0 0 63 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -CheckBox.icon[filled].selectedPressedBackground #999999 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] darken(6% autoInverse) CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] CheckBox.rollover true CheckBox.textIconGap 4 diff --git a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt index 80784f67..f579ab89 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt @@ -45,11 +45,12 @@ #---- CheckBox ---- +- CheckBox.icon.focusWidth 1 - CheckBox.icon.focusedBackground #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] + CheckBox.icon.style filled -- CheckBox.icon[filled].selectedFocusedCheckmarkColor #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] +- CheckBox.icon[filled].focusedCheckmarkColor #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] #---- ComboBox ---- @@ -99,6 +100,11 @@ + PasswordField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI] +#---- RadioButton ---- + ++ RadioButton.icon.style filled + + #---- ScrollPane ---- - ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index cd9780c8..ffe60224 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -128,24 +128,26 @@ CheckBox.icon.borderColor #afafaf HSL 0 0 69 javax.swing.plaf.Colo CheckBox.icon.checkmarkColor #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledBorderColor #bfbfbf HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledCheckmarkColor #a9a9a9 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledCheckmarkColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusWidth 1 CheckBox.icon.focusedBackground #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.focusedBorderColor #7b9ebf HSL 209 35 62 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.hoverBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) CheckBox.icon.hoverBorderColor #7b9ebf HSL 209 35 62 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +CheckBox.icon.pressedBorderColor #7b9ebf HSL 209 35 62 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedBorderColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.selectedBorderColor #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.icon[filled].checkmarkColor #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].focusedCheckmarkColor #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].focusedSelectedBackground #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].focusedSelectedBorderColor #a7cef3 HSL 209 76 80 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].hoverSelectedBackground #3891e4 HSL 209 76 56 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) +CheckBox.icon[filled].pressedSelectedBackground #2184e1 HSL 209 76 51 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) CheckBox.icon[filled].selectedBackground #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon[filled].selectedBorderColor #4a95db HSL 209 67 57 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedFocusedBackground #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedFocusedBorderColor #a7cef3 HSL 209 76 80 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedFocusedCheckmarkColor #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedHoverBackground #3891e4 HSL 209 76 56 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) -CheckBox.icon[filled].selectedPressedBackground #2184e1 HSL 209 76 51 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] CheckBox.rollover true CheckBox.textIconGap 4 diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 7a465092..6110addd 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -133,14 +133,24 @@ CheckBox.icon.checkmarkColor #ffffff HSL 0 0 100 javax.swing.plaf.Colo CheckBox.icon.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledBorderColor #bdbdbd HSL 0 0 74 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledCheckmarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledSelectedBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledSelectedBorderColor #dbdbdb HSL 0 0 86 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledSelectedBorderWidth 2 CheckBox.icon.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.focusedBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedSelectedBorderColor #accff7 HSL 212 82 82 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.hoverBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.pressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverCheckmarkColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverSelectedBackground #ff88ff HSL 300 100 77 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverSelectedBorderColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedBackground #ffe99e HSL 46 100 81 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedBorderColor #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedCheckmarkColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedSelectedBackground #88ffff HSL 180 100 77 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedSelectedBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBackground #4d89c9 HSL 211 53 55 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBorderColor #4982cc HSL 214 56 54 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedFocusedBorderColor #accff7 HSL 212 82 82 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [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 6f01e70d..9e47fa47 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 @@ -110,6 +110,8 @@ Button.toolbar.selectedBackground = #ddd #---- CheckBox ---- +CheckBox.icon.disabledSelectedBorderWidth = 2 + # enabled CheckBox.icon.borderColor = #878787 CheckBox.icon.background = #fff @@ -120,19 +122,28 @@ CheckBox.icon.checkmarkColor = #fff # disabled CheckBox.icon.disabledBorderColor = #BDBDBD CheckBox.icon.disabledBackground = #F2F2F2 +CheckBox.icon.disabledSelectedBorderColor = #dbdbdb +CheckBox.icon.disabledSelectedBackground = #F2F2F2 CheckBox.icon.disabledCheckmarkColor = #ABABAB # focused CheckBox.icon.focusedBorderColor = #7B9FC7 CheckBox.icon.focusedBackground = #0ff -CheckBox.icon.selectedFocusedBorderColor = #ACCFF7 +CheckBox.icon.focusedSelectedBorderColor = #ACCFF7 # hover CheckBox.icon.hoverBorderColor = #f00 CheckBox.icon.hoverBackground = #ff0 +CheckBox.icon.hoverSelectedBorderColor = #00f +CheckBox.icon.hoverSelectedBackground = #f8f +CheckBox.icon.hoverCheckmarkColor = #0f0 # pressed -CheckBox.icon.pressedBackground = #FFC800 +CheckBox.icon.pressedBorderColor = #FFC800 +CheckBox.icon.pressedBackground = #ffe99e +CheckBox.icon.pressedSelectedBorderColor = #f00 +CheckBox.icon.pressedSelectedBackground = #8ff +CheckBox.icon.pressedCheckmarkColor = #00f #---- CheckBoxMenuItem ---- 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 5370d6c7..9d35f08c 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 @@ -81,40 +81,60 @@ CheckBox.icon.checkmarkColor CheckBox.icon.disabledBackground CheckBox.icon.disabledBorderColor CheckBox.icon.disabledCheckmarkColor +CheckBox.icon.disabledSelectedBackground +CheckBox.icon.disabledSelectedBorderColor +CheckBox.icon.disabledSelectedBorderWidth CheckBox.icon.focusColor CheckBox.icon.focusWidth CheckBox.icon.focusedBackground CheckBox.icon.focusedBorderColor +CheckBox.icon.focusedCheckmarkColor +CheckBox.icon.focusedSelectedBackground +CheckBox.icon.focusedSelectedBorderColor CheckBox.icon.hoverBackground CheckBox.icon.hoverBorderColor +CheckBox.icon.hoverCheckmarkColor +CheckBox.icon.hoverSelectedBackground +CheckBox.icon.hoverSelectedBorderColor CheckBox.icon.pressedBackground +CheckBox.icon.pressedBorderColor +CheckBox.icon.pressedCheckmarkColor +CheckBox.icon.pressedSelectedBackground +CheckBox.icon.pressedSelectedBorderColor CheckBox.icon.selectedBackground CheckBox.icon.selectedBorderColor -CheckBox.icon.selectedFocusedBackground -CheckBox.icon.selectedFocusedBorderColor -CheckBox.icon.selectedFocusedCheckmarkColor -CheckBox.icon.selectedHoverBackground -CheckBox.icon.selectedPressedBackground +CheckBox.icon.selectedBorderWidth CheckBox.icon.style CheckBox.iconTextGap CheckBox.icon[filled].background CheckBox.icon[filled].borderColor +CheckBox.icon[filled].borderWidth CheckBox.icon[filled].checkmarkColor CheckBox.icon[filled].disabledBackground CheckBox.icon[filled].disabledBorderColor CheckBox.icon[filled].disabledCheckmarkColor +CheckBox.icon[filled].disabledSelectedBackground +CheckBox.icon[filled].disabledSelectedBorderColor +CheckBox.icon[filled].disabledSelectedBorderWidth +CheckBox.icon[filled].focusWidth CheckBox.icon[filled].focusedBackground CheckBox.icon[filled].focusedBorderColor +CheckBox.icon[filled].focusedCheckmarkColor +CheckBox.icon[filled].focusedSelectedBackground +CheckBox.icon[filled].focusedSelectedBorderColor CheckBox.icon[filled].hoverBackground CheckBox.icon[filled].hoverBorderColor +CheckBox.icon[filled].hoverCheckmarkColor +CheckBox.icon[filled].hoverSelectedBackground +CheckBox.icon[filled].hoverSelectedBorderColor CheckBox.icon[filled].pressedBackground +CheckBox.icon[filled].pressedBorderColor +CheckBox.icon[filled].pressedCheckmarkColor +CheckBox.icon[filled].pressedSelectedBackground +CheckBox.icon[filled].pressedSelectedBorderColor CheckBox.icon[filled].selectedBackground CheckBox.icon[filled].selectedBorderColor -CheckBox.icon[filled].selectedFocusedBackground -CheckBox.icon[filled].selectedFocusedBorderColor -CheckBox.icon[filled].selectedFocusedCheckmarkColor -CheckBox.icon[filled].selectedHoverBackground -CheckBox.icon[filled].selectedPressedBackground +CheckBox.icon[filled].selectedBorderWidth CheckBox.margin CheckBox.rollover CheckBox.textIconGap @@ -581,6 +601,7 @@ RadioButton.foreground RadioButton.highlight RadioButton.icon RadioButton.icon.centerDiameter +RadioButton.icon.style RadioButton.iconTextGap RadioButton.icon[filled].centerDiameter RadioButton.light