ToggleButton: compute selected background color based on current component background (issue #32)

This commit is contained in:
Karl Tauber
2020-04-22 09:48:58 +02:00
parent 23f0504b30
commit dd06b554da
9 changed files with 51 additions and 42 deletions

View File

@@ -547,7 +547,7 @@ class UIDefaultsLoader
* Syntax: lighten([color,]amount[,options]) or darken([color,]amount[,options])
* - color: a color (e.g. #f00) or a color function
* - amount: percentage 0-100%
* - options: [relative] [autoInverse] [lazy]
* - options: [relative] [autoInverse] [lazy] [derived]
*/
private static Object parseColorLightenOrDarken( boolean lighten, List<String> params,
Function<String, String> resolver, boolean reportError )
@@ -559,12 +559,14 @@ class UIDefaultsLoader
boolean relative = false;
boolean autoInverse = false;
boolean lazy = false;
boolean derived = false;
if( params.size() > nextParam ) {
String options = params.get( nextParam++ );
relative = options.contains( "relative" );
autoInverse = options.contains( "autoInverse" );
lazy = options.contains( "lazy" );
derived = options.contains( "derived" );
}
ColorFunctions.ColorFunction function = lighten
@@ -572,7 +574,12 @@ class UIDefaultsLoader
: new ColorFunctions.Darken( amount, relative, autoInverse );
if( isDerived )
return new DerivedColor( function );
return new DerivedColor( null, function );
if( derived ) {
ColorUIResource color = (ColorUIResource) parseColorOrFunction( resolver.apply( colorStr ), resolver, reportError );
return new DerivedColor( ColorFunctions.applyFunctions( color, function ), function );
}
if( lazy ) {
return (LazyValue) t -> {

View File

@@ -32,8 +32,8 @@ public class DerivedColor
{
private final ColorFunction[] functions;
public DerivedColor( ColorFunction... functions ) {
super( Color.red );
public DerivedColor( Color defaultColor, ColorFunction... functions ) {
super( (defaultColor != null) ? defaultColor : Color.red );
this.functions = functions;
}

View File

@@ -91,8 +91,8 @@ Button.default.focusedBorderColor=#537699
Button.default.focusColor=#43688c
Button.default.boldText=true
Button.toolbar.hoverBackground=#4c5052
Button.toolbar.pressedBackground=#555a5d
Button.toolbar.hoverBackground=lighten($Button.background,1%,derived autoInverse)
Button.toolbar.pressedBackground=lighten($Button.background,4%,derived autoInverse)
#---- CheckBox ----
@@ -253,11 +253,11 @@ TableHeader.bottomSeparatorColor=$TableHeader.separatorColor
#---- ToggleButton ----
ToggleButton.selectedBackground=#64696C
ToggleButton.selectedBackground=lighten($ToggleButton.background,10%,derived autoInverse)
ToggleButton.selectedForeground=@foreground
ToggleButton.disabledSelectedBackground=#525658
ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,3%,derived autoInverse)
ToggleButton.toolbar.selectedBackground=#5c6164
ToggleButton.toolbar.selectedBackground=lighten($ToggleButton.background,7%,derived autoInverse)
#---- ToolTip ----

View File

@@ -93,8 +93,8 @@ Button.default.focusedBorderColor=$Button.focusedBorderColor
Button.default.focusColor=$Component.focusColor
Button.default.borderWidth=2
Button.toolbar.hoverBackground=#dfdfdf
Button.toolbar.pressedBackground=#d8d8d8
Button.toolbar.hoverBackground=darken($Button.background,12%,derived autoInverse)
Button.toolbar.pressedBackground=darken($Button.background,15%,derived autoInverse)
#---- CheckBox ----
@@ -260,11 +260,11 @@ TableHeader.bottomSeparatorColor=$TableHeader.separatorColor
#---- ToggleButton ----
ToggleButton.selectedBackground=#cfcfcf
ToggleButton.selectedBackground=darken($ToggleButton.background,20%,derived autoInverse)
ToggleButton.selectedForeground=@foreground
ToggleButton.disabledSelectedBackground=#dfdfdf
ToggleButton.disabledSelectedBackground=darken($ToggleButton.background,13%,derived autoInverse)
ToggleButton.toolbar.selectedBackground=#cfcfcf
ToggleButton.toolbar.selectedBackground=$ToggleButton.selectedBackground
#---- ToolTip ----