Skip to content

Commit 5d708b8

Browse files
committed
Row sorter support.
1 parent 82a39f3 commit 5d708b8

File tree

7 files changed

+27
-10
lines changed

7 files changed

+27
-10
lines changed

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

+15
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class JBroTable extends JTable {
3333
private static final Pattern TAG_PATTERN = Pattern.compile( "<[^<>]++>" );
3434
private Integer headerHeight;
3535
private HeaderHeightWatcher headerHeightWatcher;
36+
private Integer currentLevel;
3637

3738
public JBroTable() {
3839
this( null );
@@ -523,6 +524,20 @@ public void columnSelectionChanged( ListSelectionEvent e ) {
523524
}
524525
super.columnSelectionChanged( e );
525526
}
527+
528+
void setCurrentLevel( Integer currentLevel ) {
529+
this.currentLevel = currentLevel;
530+
}
531+
532+
@Override
533+
public TableColumnModel getColumnModel() {
534+
return currentLevel == null ? super.getColumnModel() : getTableHeader().getColumnModel( currentLevel );
535+
}
536+
537+
@Override
538+
public JBroTableHeader getTableHeader() {
539+
return ( JBroTableHeader )super.getTableHeader();
540+
}
526541

527542
private class HeaderHeightWatcher implements TableColumnModelListener {
528543
@Override

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,9 @@ private void paintCell( Graphics g, Rectangle cellRect, JBroTableColumn group )
379379
TableCellRenderer renderer = getRenderer( group );
380380
boolean parentUIdeterminesRolloverColumnItself = hasParentUI( renderer );
381381
boolean rollover = parentUIdeterminesRolloverColumnItself ? group == getHeader().getDraggedGroup() : group == selectedColumn;
382-
Component component = renderer.getTableCellRendererComponent( header.getTable(), group.getHeaderValue(), rollover, rollover, group.getY(), getTableColumnModel().getColumnRelativeIndex( group ) );
382+
table.setCurrentLevel( group.getY() );
383+
Component component = renderer.getTableCellRendererComponent( table, group.getHeaderValue(), rollover, rollover, group.getY(), getTableColumnModel().getColumnRelativeIndex( group ) );
384+
table.setCurrentLevel( null );
383385
paintCell( g, component, cellRect );
384386
}
385387

test/org/quinto/swing/table/view/JBroTableColumnModelShowcase.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import javax.swing.JFrame;
1515
import javax.swing.JScrollPane;
1616
import javax.swing.JTable;
17-
import javax.swing.SwingUtilities;
1817
import javax.swing.UIManager;
1918
import javax.swing.UnsupportedLookAndFeelException;
2019
import javax.swing.plaf.metal.DefaultMetalTheme;
@@ -125,11 +124,11 @@ else if ( laf == 4 ) {
125124
for ( int i = 0; i < rows.length; i++ ) {
126125
rows[ i ] = new ModelRow( fields.length );
127126
for ( int j = 0; j < fields.length; j++ )
128-
rows[ i ].setValue( j, String.valueOf( ( char )( 'A' + j ) ) + i );
127+
rows[ i ].setValue( j, i == j ? "sort me" : String.valueOf( ( char )( 'A' + j ) ) + i );
129128
}
130129
data.setRows( rows );
131130
table = new JBroTable( data );
132-
// table.setAutoCreateRowSorter( true );
131+
table.setAutoCreateRowSorter( true );
133132
System.out.println( table.getColumnModel() );
134133
for ( TableColumn tc : Collections.list( table.getColumnModel().getColumns() ) )
135134
System.out.println( tc.getHeaderValue() );

test/org/quinto/swing/table/view/JBroTableColumnModelTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ public void setUp() {
6363
for ( int i = 0; i < rows.length; i++ ) {
6464
rows[ i ] = new ModelRow( fields.length );
6565
for ( int j = 0; j < fields.length; j++ )
66-
rows[ i ].setValue( j, fields[ j ].getCaption() + i );
66+
rows[ i ].setValue( j, i == j ? "sort me" : fields[ j ].getCaption() + i );
6767
}
6868
data.setRows( rows );
6969
table = new JBroTable( data );
70-
// table.setAutoCreateRowSorter( true );
70+
table.setAutoCreateRowSorter( true );
7171
}
7272

7373
@After

test/org/quinto/swing/table/view/JBroTableColumnTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void setUp() {
6060
};
6161
data.setRows( rows );
6262
table = new JBroTable( data );
63-
// table.setAutoCreateRowSorter( true );
63+
table.setAutoCreateRowSorter( true );
6464
pane = new JScrollPane( table );
6565
frame = new JFrame();
6666
frame.add( pane );

test/org/quinto/swing/table/view/JBroTableUIShowcase.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ public static void main( String args[] ) throws Exception {
3737
for ( int i = 0; i < rows.length; i++ ) {
3838
rows[ i ] = new ModelRow( fields.length );
3939
for ( int j = 0; j < fields.length; j++ )
40-
rows[ i ].setValue( j, fields[ j ].getCaption() + i );
40+
rows[ i ].setValue( j, j == 1 || j == 2 ? rows[ i ].getValue( 0 ) : i == j ? "sort me" : fields[ j ].getCaption() + i );
4141
}
4242
data.setRows( rows );
4343
JBroTable table = new JBroTable( data );
44-
// table.setAutoCreateRowSorter( true );
44+
table.setAutoCreateRowSorter( true );
4545
table.setUI( new JBroTableUI().withSpan( new ModelSpan( "B", "B" ).withColumns( "B", "C", "E" ).withDrawAsHeader( true ) )
4646
.withSpan( new ModelSpan( "G", "G" ).withColumns( "G", "J" ) ) );
4747
JFrame frame = new JFrame( "Testing" );

test/org/quinto/swing/table/view/Sample.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,11 @@ public static void main( String args[] ) throws Exception {
4141
for ( int i = 0; i < rows.length; i++ ) {
4242
rows[ i ] = new ModelRow( fields.length );
4343
for ( int j = 0; j < fields.length; j++ )
44-
rows[ i ].setValue( j, fields[ j ].getCaption() + i );
44+
rows[ i ].setValue( j, i == j ? "sort me" : fields[ j ].getCaption() + i );
4545
}
4646
data.setRows( rows );
4747
JBroTable table = new JBroTable( data );
48+
table.setAutoCreateRowSorter( true );
4849

4950
// Window.
5051
JFrame frame = new JFrame( "Test" );

0 commit comments

Comments
 (0)