Skip to content

Commit e224eab

Browse files
committed
Dragged header cells rendering (simple L&Fs support added).
1 parent 90c04e6 commit e224eab

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

src/org/quinto/swing/table/view/JBroTableHeaderUI.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import javax.swing.RowSorter;
2727
import javax.swing.SwingUtilities;
2828
import javax.swing.UIManager;
29+
import javax.swing.border.Border;
2930
import javax.swing.event.MouseInputListener;
3031
import javax.swing.plaf.ComponentUI;
3132
import javax.swing.plaf.basic.BasicTableHeaderUI;
@@ -48,6 +49,7 @@ public class JBroTableHeaderUI extends BasicTableHeaderUI {
4849
private List< Integer > rowHeights;
4950
private boolean updating;
5051
private ComponentUI headerDelegate;
52+
private ReverseBorder lastBorder;
5153

5254
public JBroTableHeaderUI( JBroTable table ) {
5355
this.table = table;
@@ -88,7 +90,7 @@ private Object getField( String fieldName, ComponentUI ui ) {
8890
boolean accessible = field.isAccessible();
8991
if ( !accessible )
9092
field.setAccessible( true );
91-
Object ret = ( Object )field.get( ui );
93+
Object ret = field.get( ui );
9294
if ( !accessible )
9395
field.setAccessible( false );
9496
return ret;
@@ -401,6 +403,14 @@ private void paintCell( Graphics g, Rectangle cellRect, JBroTableColumn group )
401403
table.setCurrentLevel( group.getY() );
402404
Component comp = renderer.getTableCellRendererComponent( table, group.getHeaderValue(), rollover, rollover, group.getY(), getTableColumnModel().getColumnRelativeIndex( group ) );
403405
table.setCurrentLevel( null );
406+
if ( !parentUIdeterminesRolloverColumnItself && comp instanceof JComponent && group == getHeader().getDraggedGroup() ) {
407+
Border border = ( ( JComponent )comp ).getBorder();
408+
if ( border != null ) {
409+
if ( lastBorder == null || lastBorder.getDelegate() != border )
410+
lastBorder = new ReverseBorder( border );
411+
( ( JComponent )comp ).setBorder( lastBorder );
412+
}
413+
}
404414
paintCell( g, comp, cellRect );
405415
}
406416

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.quinto.swing.table.view;
2+
3+
import java.awt.Component;
4+
import java.awt.Graphics;
5+
import java.awt.Graphics2D;
6+
import java.awt.Insets;
7+
import javax.swing.border.Border;
8+
9+
public class ReverseBorder implements Border {
10+
private final Border delegate;
11+
12+
public ReverseBorder( Border delegate ) {
13+
this.delegate = delegate;
14+
}
15+
16+
@Override
17+
public void paintBorder( Component c, Graphics g, int x, int y, int w, int h ) {
18+
if ( g instanceof Graphics2D ) {
19+
Graphics2D gg = ( Graphics2D )g;
20+
gg.scale( -1.0, -1.0 );
21+
gg.translate( 1 - w, 1 - h );
22+
}
23+
delegate.paintBorder( c, g, x, y, w, h );
24+
}
25+
26+
@Override
27+
public Insets getBorderInsets( Component c ) {
28+
return delegate.getBorderInsets( c );
29+
}
30+
31+
@Override
32+
public boolean isBorderOpaque() {
33+
return delegate.isBorderOpaque();
34+
}
35+
36+
public Border getDelegate() {
37+
return delegate;
38+
}
39+
}

0 commit comments

Comments
 (0)