Skip to content

Commit

Permalink
TableHeader: support top/bottom/left positioned sort arrow when using…
Browse files Browse the repository at this point in the history
… Glazed Lists (issue #113)
  • Loading branch information
DevCharly committed Jun 16, 2020
1 parent 212c553 commit 211030b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 20 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -6,6 +6,8 @@ FlatLaf Change Log
- Button and ToggleButton: Support disabled background color (use UI values
`Button.disabledBackground` and `ToggleButton.disabledBackground`). (issue
#112)
- TableHeader: Support top/bottom/left positioned sort arrow when using
[Glazed Lists](https://github.com/glazedlists/glazedlists). (issue #113)


## 0.36
Expand Down
Expand Up @@ -86,26 +86,12 @@ protected void installDefaults() {
case "top": sortIconPosition = SwingConstants.TOP; break;
case "bottom": sortIconPosition = SwingConstants.BOTTOM; break;
}

// use own renderer if necessary
if( sortIconPosition != SwingConstants.RIGHT ) {
TableCellRenderer defaultRenderer = header.getDefaultRenderer();
if( defaultRenderer instanceof UIResource )
header.setDefaultRenderer( new FlatTableCellHeaderRenderer( defaultRenderer ) );
}
}

@Override
protected void uninstallDefaults() {
super.uninstallDefaults();

// restore default renderer
TableCellRenderer defaultRenderer = header.getDefaultRenderer();
if( defaultRenderer instanceof FlatTableCellHeaderRenderer ) {
((FlatTableCellHeaderRenderer)defaultRenderer).reset();
header.setDefaultRenderer( ((FlatTableCellHeaderRenderer)defaultRenderer).delegate );
}

separatorColor = null;
bottomSeparatorColor = null;
}
Expand All @@ -125,8 +111,22 @@ public void paint( Graphics g, JComponent c ) {
if( paintBorders )
paintColumnBorders( g, c );

// temporary use own default renderer if necessary
FlatTableCellHeaderRenderer sortIconRenderer = null;
if( sortIconPosition != SwingConstants.RIGHT ) {
sortIconRenderer = new FlatTableCellHeaderRenderer( header.getDefaultRenderer() );
header.setDefaultRenderer( sortIconRenderer );
}

// paint header
super.paint( g, c );

// restore default renderer
if( sortIconRenderer != null ) {
sortIconRenderer.reset();
header.setDefaultRenderer( sortIconRenderer.delegate );
}

if( paintBorders )
paintDraggedColumnBorders( g, c );
}
Expand Down Expand Up @@ -257,6 +257,7 @@ private class FlatTableCellHeaderRenderer
{
private final TableCellRenderer delegate;

private JLabel l;
private int oldHorizontalTextPosition = -1;
private Border origBorder;
private Icon sortIcon;
Expand All @@ -273,7 +274,7 @@ public Component getTableCellRendererComponent( JTable table, Object value, bool
if( !(c instanceof JLabel) )
return c;

JLabel l = (JLabel) c;
l = (JLabel) c;

if( sortIconPosition == SwingConstants.LEFT ) {
if( oldHorizontalTextPosition < 0 )
Expand All @@ -291,11 +292,8 @@ public Component getTableCellRendererComponent( JTable table, Object value, bool
}

void reset() {
if( sortIconPosition == SwingConstants.LEFT && oldHorizontalTextPosition >= 0 ) {
Component c = getTableCellRendererComponent( header.getTable(), "", false, false, -1, 0 );
if( c instanceof JLabel && ((JLabel)c).getHorizontalTextPosition() == SwingConstants.RIGHT )
((JLabel)c).setHorizontalTextPosition( oldHorizontalTextPosition );
}
if( l != null && sortIconPosition == SwingConstants.LEFT && oldHorizontalTextPosition >= 0 )
l.setHorizontalTextPosition( oldHorizontalTextPosition );
}

@Override
Expand Down

0 comments on commit 211030b

Please sign in to comment.