mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 22:40:53 +03:00
ScrollBar: use derived colors for track and thumb (issue #103)
This commit is contained in:
@@ -610,15 +610,17 @@ class UIDefaultsLoader
|
||||
}
|
||||
|
||||
// parse base color
|
||||
ColorUIResource baseColor = (ColorUIResource) parseColorOrFunction( resolver.apply( colorStr ), resolver, reportError );
|
||||
String resolvedColorStr = resolver.apply( colorStr );
|
||||
ColorUIResource baseColor = (ColorUIResource) parseColorOrFunction( resolvedColorStr, resolver, reportError );
|
||||
|
||||
// apply this function to base color
|
||||
Color newColor = ColorFunctions.applyFunctions( baseColor, function );
|
||||
|
||||
if( derived ) {
|
||||
ColorFunction[] functions;
|
||||
if( baseColor instanceof DerivedColor ) {
|
||||
if( baseColor instanceof DerivedColor && resolvedColorStr == colorStr ) {
|
||||
// if the base color is also derived, join the color functions
|
||||
// but only if base color function is specified directly in this function
|
||||
ColorFunction[] baseFunctions = ((DerivedColor)baseColor).getFunctions();
|
||||
functions = new ColorFunction[baseFunctions.length + 1];
|
||||
System.arraycopy( baseFunctions, 0, functions, 0, baseFunctions.length );
|
||||
|
||||
@@ -113,6 +113,10 @@ public class FlatArrowButton
|
||||
this.yOffset = yOffset;
|
||||
}
|
||||
|
||||
protected Color deriveHoverBackground( Color hoverBackground ) {
|
||||
return hoverBackground;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
return scale( super.getPreferredSize() );
|
||||
@@ -134,7 +138,7 @@ public class FlatArrowButton
|
||||
|
||||
// paint hover background
|
||||
if( enabled && isHover() && hoverBackground != null ) {
|
||||
g.setColor( hoverBackground );
|
||||
g.setColor( deriveHoverBackground( hoverBackground ) );
|
||||
g.fillRect( 0, 0, width, height );
|
||||
}
|
||||
|
||||
|
||||
@@ -191,6 +191,11 @@ public class FlatScrollBarUI
|
||||
FlatArrowButton button = new FlatArrowButton( orientation,
|
||||
arrowType, buttonArrowColor, buttonDisabledArrowColor, null, hoverTrackColor )
|
||||
{
|
||||
@Override
|
||||
protected Color deriveHoverBackground( Color hoverBackground ) {
|
||||
return getTrackColor( scrollbar, true ) ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
if( isShowButtons() ) {
|
||||
@@ -231,7 +236,7 @@ public class FlatScrollBarUI
|
||||
|
||||
@Override
|
||||
protected void paintTrack( Graphics g, JComponent c, Rectangle trackBounds ) {
|
||||
g.setColor( hoverTrack ? hoverTrackColor : trackColor );
|
||||
g.setColor( getTrackColor( c, hoverTrack ) );
|
||||
paintTrackOrThumb( g, c, trackBounds, trackInsets, trackArc );
|
||||
}
|
||||
|
||||
@@ -240,7 +245,7 @@ public class FlatScrollBarUI
|
||||
if( thumbBounds.isEmpty() || !scrollbar.isEnabled() )
|
||||
return;
|
||||
|
||||
g.setColor( hoverThumb ? hoverThumbColor : thumbColor );
|
||||
g.setColor( getThumbColor( c, hoverThumb ) );
|
||||
paintTrackOrThumb( g, c, thumbBounds, thumbInsets, thumbArc );
|
||||
}
|
||||
|
||||
@@ -272,6 +277,17 @@ public class FlatScrollBarUI
|
||||
// do not paint
|
||||
}
|
||||
|
||||
protected Color getTrackColor( JComponent c, boolean hover ) {
|
||||
Color trackColor = FlatUIUtils.deriveColor( this.trackColor, c.getBackground() );
|
||||
return hover ? FlatUIUtils.deriveColor( hoverTrackColor, trackColor ) : trackColor;
|
||||
}
|
||||
|
||||
protected Color getThumbColor( JComponent c, boolean hover ) {
|
||||
Color trackColor = FlatUIUtils.deriveColor( this.trackColor, c.getBackground() );
|
||||
Color thumbColor = FlatUIUtils.deriveColor( this.thumbColor, trackColor );
|
||||
return hover ? FlatUIUtils.deriveColor( hoverThumbColor, thumbColor ) : thumbColor;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Dimension getMinimumThumbSize() {
|
||||
return UIScale.scale( super.getMinimumThumbSize() );
|
||||
|
||||
@@ -41,7 +41,7 @@ public class DerivedColor
|
||||
}
|
||||
|
||||
public Color derive( Color baseColor ) {
|
||||
if( hasBaseOfDefaultColor && baseOfDefaultColorRGB == baseColor.getRGB() )
|
||||
if( (hasBaseOfDefaultColor && baseOfDefaultColorRGB == baseColor.getRGB()) || baseColor == this )
|
||||
return this; // return default color
|
||||
|
||||
Color result = ColorFunctions.applyFunctions( baseColor, functions );
|
||||
|
||||
@@ -217,10 +217,10 @@ ProgressBar.selectionBackground=@foreground
|
||||
|
||||
#---- ScrollBar ----
|
||||
|
||||
ScrollBar.track=#3F4244
|
||||
ScrollBar.thumb=lighten($ScrollBar.track,10%)
|
||||
ScrollBar.hoverTrackColor=lighten($ScrollBar.track,4%)
|
||||
ScrollBar.hoverThumbColor=lighten($ScrollBar.thumb,10%)
|
||||
ScrollBar.track=lighten(@background,1%,derived noAutoInverse)
|
||||
ScrollBar.thumb=lighten($ScrollBar.track,10%,derived noAutoInverse)
|
||||
ScrollBar.hoverTrackColor=lighten($ScrollBar.track,4%,derived noAutoInverse)
|
||||
ScrollBar.hoverThumbColor=lighten($ScrollBar.thumb,10%,derived noAutoInverse)
|
||||
|
||||
|
||||
#---- Separator ----
|
||||
|
||||
@@ -224,10 +224,10 @@ ProgressBar.selectionBackground=@foreground
|
||||
|
||||
#---- ScrollBar ----
|
||||
|
||||
ScrollBar.track=#F5F5F5
|
||||
ScrollBar.thumb=darken($ScrollBar.track,10%)
|
||||
ScrollBar.hoverTrackColor=darken($ScrollBar.track,3%)
|
||||
ScrollBar.hoverThumbColor=darken($ScrollBar.thumb,10%)
|
||||
ScrollBar.track=lighten(@background,1%,derived noAutoInverse)
|
||||
ScrollBar.thumb=darken($ScrollBar.track,10%,derived noAutoInverse)
|
||||
ScrollBar.hoverTrackColor=darken($ScrollBar.track,3%,derived noAutoInverse)
|
||||
ScrollBar.hoverThumbColor=darken($ScrollBar.thumb,10%,derived noAutoInverse)
|
||||
|
||||
|
||||
#---- Separator ----
|
||||
|
||||
@@ -348,13 +348,20 @@ public class FlatTestFrame
|
||||
boolean explicit = explicitColorsCheckBox.isSelected();
|
||||
ColorUIResource restoreColor = new ColorUIResource( Color.white );
|
||||
|
||||
LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
|
||||
boolean dark = (lookAndFeel instanceof FlatLaf && ((FlatLaf)lookAndFeel).isDark());
|
||||
Color magenta = dark ? Color.magenta.darker() : Color.magenta;
|
||||
Color orange = dark ? Color.orange.darker() : Color.orange;
|
||||
Color blue = dark ? Color.blue.darker() : Color.blue;
|
||||
Color green = dark ? Color.green.darker() : Color.green;
|
||||
|
||||
updateComponentsRecur( content, (c, type) -> {
|
||||
if( type == "view" || type == "tab" ) {
|
||||
c.setForeground( explicit ? Color.magenta : restoreColor );
|
||||
c.setBackground( explicit ? Color.orange : restoreColor );
|
||||
c.setForeground( explicit ? magenta : restoreColor );
|
||||
c.setBackground( explicit ? orange : restoreColor );
|
||||
} else {
|
||||
c.setForeground( explicit ? Color.blue : restoreColor );
|
||||
c.setBackground( explicit ? Color.green : restoreColor );
|
||||
c.setForeground( explicit ? blue : restoreColor );
|
||||
c.setBackground( explicit ? green : restoreColor );
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
@@ -760,20 +760,20 @@ ScrollBar.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.buttonDisabledArrowColor #585858 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.hoverThumbColor #717678 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.hoverThumbColor #6e767a com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%)
|
||||
ScrollBar.hoverThumbWithTrack false
|
||||
ScrollBar.hoverTrackColor #494c4f javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.hoverTrackColor #484c4f com.formdev.flatlaf.util.DerivedColor [UI] lighten(4%)
|
||||
ScrollBar.maximumThumbSize 4096,4096 javax.swing.plaf.DimensionUIResource [UI]
|
||||
ScrollBar.minimumThumbSize 8,8 javax.swing.plaf.DimensionUIResource [UI]
|
||||
ScrollBar.showButtons false
|
||||
ScrollBar.squareButtons false
|
||||
ScrollBar.thumb #585c5e javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.thumb #565c5f com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%)
|
||||
ScrollBar.thumbArc 0
|
||||
ScrollBar.thumbDarkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.thumbHighlight #242424 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||
ScrollBar.thumbShadow #646464 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.track #3f4244 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.track #3e4244 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%)
|
||||
ScrollBar.trackArc 0
|
||||
ScrollBar.trackHighlight #7e7e7e javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.trackInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||
@@ -783,7 +783,7 @@ ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI
|
||||
|
||||
#---- ScrollPane ----
|
||||
|
||||
ScrollPane.background #3f4244 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollPane.background #3e4244 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%)
|
||||
ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]
|
||||
ScrollPane.fillUpperCorner true
|
||||
ScrollPane.font [active] $defaultFont [UI]
|
||||
@@ -1220,7 +1220,7 @@ laf.scaleFactor [active] 1.0
|
||||
|
||||
menu #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
||||
menuText #bbbbbb javax.swing.plaf.ColorUIResource [UI]
|
||||
scrollbar #3f4244 javax.swing.plaf.ColorUIResource [UI]
|
||||
scrollbar #3e4244 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%)
|
||||
|
||||
|
||||
#---- swingx/TaskPane ----
|
||||
|
||||
@@ -762,20 +762,20 @@ ScrollBar.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.hoverThumbColor #c3c3c3 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.hoverThumbColor #c3c3c3 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%)
|
||||
ScrollBar.hoverThumbWithTrack false
|
||||
ScrollBar.hoverTrackColor #ededed javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.hoverTrackColor #ededed com.formdev.flatlaf.util.DerivedColor [UI] darken(3%)
|
||||
ScrollBar.maximumThumbSize 4096,4096 javax.swing.plaf.DimensionUIResource [UI]
|
||||
ScrollBar.minimumThumbSize 8,8 javax.swing.plaf.DimensionUIResource [UI]
|
||||
ScrollBar.showButtons false
|
||||
ScrollBar.squareButtons false
|
||||
ScrollBar.thumb #dcdcdc javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.thumb #dcdcdc com.formdev.flatlaf.util.DerivedColor [UI] darken(10%)
|
||||
ScrollBar.thumbArc 0
|
||||
ScrollBar.thumbDarkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.thumbHighlight #ffffff javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||
ScrollBar.thumbShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.track #f5f5f5 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.track #f5f5f5 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%)
|
||||
ScrollBar.trackArc 0
|
||||
ScrollBar.trackHighlight #9e9e9e javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollBar.trackInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||
@@ -785,7 +785,7 @@ ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI
|
||||
|
||||
#---- ScrollPane ----
|
||||
|
||||
ScrollPane.background #f5f5f5 javax.swing.plaf.ColorUIResource [UI]
|
||||
ScrollPane.background #f5f5f5 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%)
|
||||
ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]
|
||||
ScrollPane.fillUpperCorner true
|
||||
ScrollPane.font [active] $defaultFont [UI]
|
||||
@@ -1222,7 +1222,7 @@ laf.scaleFactor [active] 1.0
|
||||
|
||||
menu #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
||||
menuText #000000 javax.swing.plaf.ColorUIResource [UI]
|
||||
scrollbar #f5f5f5 javax.swing.plaf.ColorUIResource [UI]
|
||||
scrollbar #f5f5f5 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%)
|
||||
|
||||
|
||||
#---- swingx/TaskPane ----
|
||||
|
||||
Reference in New Issue
Block a user