CheckBox and RadioButton:

- added `CheckBox.icon.hoverCheckmarkColor`
- added `CheckBox.icon.selectedHoverBorderColor`
- added `CheckBox.icon.pressedBorderColor`
- added `CheckBox.icon.selectedPressedBorderColor`
- added `CheckBox.icon.pressedCheckmarkColor`
- renamed `CheckBox.icon.selectedFocusedBorderColor` to `CheckBox.icon.focusedSelectedBorderColor`
- renamed `CheckBox.icon.selectedFocusedBackground` to `CheckBox.icon.focusedSelectedBackground`
- renamed `CheckBox.icon.selectedFocusedCheckmarkColor` to `CheckBox.icon.focusedCheckmarkColor`
- renamed `CheckBox.icon.selectedHoverBackground` to `CheckBox.icon.hoverSelectedBackground`
- renamed `CheckBox.icon.selectedPressedBackground` to `CheckBox.icon.pressedSelectedBackground`
- renamed `CheckBox.icon[filled].selectedFocusedBorderColor` to `CheckBox.icon[filled].focusedSelectedBorderColor`
- renamed `CheckBox.icon[filled].selectedFocusedBackground` to `CheckBox.icon[filled].focusedSelectedBackground`
- renamed `CheckBox.icon[filled].selectedFocusedCheckmarkColor` to `CheckBox.icon[filled].focusedCheckmarkColor`
- renamed `CheckBox.icon[filled].selectedHoverBackground` to `CheckBox.icon[filled].hoverSelectedBackground`
- renamed `CheckBox.icon[filled].selectedPressedBackground` to `CheckBox.icon[filled].pressedSelectedBackground`

(Note: this are incompatible changes!)
This commit is contained in:
Karl Tauber
2021-10-31 17:30:43 +01:00
parent 5f6013edd4
commit 1d39d34d7c
13 changed files with 147 additions and 85 deletions

View File

@@ -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" );

View File

@@ -46,6 +46,7 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
* @uiDefault Component.focusColor Color
* @uiDefault CheckBox.icon.focusWidth int optional; defaults to Component.focusWidth
* @uiDefault CheckBox.icon.borderWidth int or float optional; defaults to Component.borderWidth
* @uiDefault CheckBox.arc int
*
* @uiDefault CheckBox.icon.focusColor Color optional; defaults to Component.focusColor
* @uiDefault CheckBox.icon.borderColor Color
@@ -53,20 +54,28 @@ 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.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
*/
@@ -97,18 +106,23 @@ public class FlatCheckBoxIcon
// 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 static Color getUIColor( String key, String style ) {
if( style != null ) {
@@ -186,8 +200,8 @@ public class FlatCheckBoxIcon
paintBackground( c, g );
// paint checkmark
if( selected || indeterminate ) {
g.setColor( getCheckmarkColor( c, selected, isFocused ) );
if( selected ) {
g.setColor( getCheckmarkColor( c ) );
if( indeterminate )
paintIndeterminate( c, g );
else
@@ -244,25 +258,26 @@ public class FlatCheckBoxIcon
return FlatButtonUI.buttonStateColor( c,
selected ? selectedBorderColor : borderColor,
disabledBorderColor,
selected && selectedFocusedBorderColor != null ? selectedFocusedBorderColor : focusedBorderColor,
hoverBorderColor,
null );
(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 && 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 );
}
}

View File

@@ -158,9 +158,9 @@ 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 ----

View File

@@ -161,13 +161,13 @@ CheckBox.icon[filled].selectedBorderColor = shade($CheckBox.icon[filled].selecte
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 ----

View File

@@ -489,18 +489,23 @@ public class TestFlatStyleableInfo
// 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
);
}
@@ -1060,18 +1065,23 @@ public class TestFlatStyleableInfo
// 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
);
}

View File

@@ -628,18 +628,23 @@ public class TestFlatStyling
// 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
@@ -1283,18 +1288,23 @@ public class TestFlatStyling
// 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