From a145673dd1a9207701dabf371cede6bb1486735a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 15 Nov 2019 23:41:26 +0100 Subject: [PATCH] use chevron arrows for table header ascending/descending sort icons (#7) --- .../flatlaf/icons/FlatAscendingSortIcon.java | 14 +++++++++++++- .../flatlaf/icons/FlatDescendingSortIcon.java | 14 +++++++++++++- .../formdev/flatlaf/icons/FlatMenuArrowIcon.java | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAscendingSortIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAscendingSortIcon.java index 77231c04..4cdaf81e 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAscendingSortIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAscendingSortIcon.java @@ -16,15 +16,18 @@ package com.formdev.flatlaf.icons; +import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Graphics2D; +import java.awt.geom.Path2D; import javax.swing.UIManager; import com.formdev.flatlaf.ui.FlatUIUtils; /** * "ascendingSort" icon for {@link javax.swing.table.JTableHeader}. * + * @uiDefault Component.arrowType String triangle (default) or chevron * @uiDefault Table.sortIconColor Color * * @author Karl Tauber @@ -32,6 +35,7 @@ import com.formdev.flatlaf.ui.FlatUIUtils; public class FlatAscendingSortIcon extends FlatAbstractIcon { + protected final boolean chevron = "chevron".equals( UIManager.getString( "Component.arrowType" ) ); protected final Color sortIconColor = UIManager.getColor( "Table.sortIconColor" ); public FlatAscendingSortIcon() { @@ -41,6 +45,14 @@ public class FlatAscendingSortIcon @Override protected void paintIcon( Component c, Graphics2D g ) { g.setColor( sortIconColor ); - g.fill( FlatUIUtils.createPath( 0.5,5, 9.5,5, 5,0 ) ); + if( chevron ) { + // chevron arrow + Path2D path = FlatUIUtils.createPath( false, 1,5, 5,1, 9,5 ); + g.setStroke( new BasicStroke( 1f ) ); + g.draw( path ); + } else { + // triangle arrow + g.fill( FlatUIUtils.createPath( 0.5,5, 5,0, 9.5,5 ) ); + } } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatDescendingSortIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatDescendingSortIcon.java index ebfcdf78..02109889 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatDescendingSortIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatDescendingSortIcon.java @@ -16,15 +16,18 @@ package com.formdev.flatlaf.icons; +import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Graphics2D; +import java.awt.geom.Path2D; import javax.swing.UIManager; import com.formdev.flatlaf.ui.FlatUIUtils; /** * "descendingSort" icon for {@link javax.swing.table.JTableHeader}. * + * @uiDefault Component.arrowType String triangle (default) or chevron * @uiDefault Table.sortIconColor Color * * @author Karl Tauber @@ -32,6 +35,7 @@ import com.formdev.flatlaf.ui.FlatUIUtils; public class FlatDescendingSortIcon extends FlatAbstractIcon { + protected final boolean chevron = "chevron".equals( UIManager.getString( "Component.arrowType" ) ); protected final Color sortIconColor = UIManager.getColor( "Table.sortIconColor" ); public FlatDescendingSortIcon() { @@ -41,6 +45,14 @@ public class FlatDescendingSortIcon @Override protected void paintIcon( Component c, Graphics2D g ) { g.setColor( sortIconColor ); - g.fill( FlatUIUtils.createPath( 0.5,0, 9.5,0, 5,5 ) ); + if( chevron ) { + // chevron arrow + Path2D path = FlatUIUtils.createPath( false, 1,1, 5,5, 9,1 ); + g.setStroke( new BasicStroke( 1f ) ); + g.draw( path ); + } else { + // triangle arrow + g.fill( FlatUIUtils.createPath( 0.5,0, 5,5, 9.5,0 ) ); + } } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java index b42a19fe..0e6b41f8 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java @@ -60,7 +60,7 @@ public class FlatMenuArrowIcon g.draw( path ); } else { // triangle arrow - g.fill( FlatUIUtils.createPath( 0,0.5, 0,9.5, 5,5 ) ); + g.fill( FlatUIUtils.createPath( 0,0.5, 5,5, 0,9.5 ) ); } }