psmith 2004/05/20 21:24:16 Modified: src/java/org/apache/log4j/chainsaw/vfs FileObjectTable.java Log: Table looks much nice with row striping and alignment.
Also added the sort feature. Remind me to buy Claude & Scott an extra beer. Nice and easy. Revision Changes Path 1.2 +50 -1 logging-log4j/src/java/org/apache/log4j/chainsaw/vfs/FileObjectTable.java Index: FileObjectTable.java =================================================================== RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/vfs/FileObjectTable.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FileObjectTable.java 19 May 2004 00:11:08 -0000 1.1 +++ FileObjectTable.java 21 May 2004 04:24:16 -0000 1.2 @@ -1,10 +1,17 @@ package org.apache.log4j.chainsaw.vfs; import java.awt.BorderLayout; +import java.awt.Component; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.table.DefaultTableCellRenderer; + +import org.apache.log4j.chainsaw.ChainsawConstants; +import org.apache.log4j.chainsaw.JSortTable; /** * @author psmith @@ -13,7 +20,7 @@ public class FileObjectTable extends JPanel { private final DirectoryListTableModel tableModel = new DirectoryListTableModel(); - private final JTable table = new JTable(tableModel); + private final JSortTable table = new JSortTable(tableModel); private final JScrollPane scrollPane = new JScrollPane(table); public FileObjectTable(){ @@ -27,6 +34,11 @@ private void initGUI() { setLayout(new BorderLayout()); add(scrollPane, BorderLayout.CENTER); + table.setShowGrid(false); + table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + table.setDefaultRenderer(Object.class, new DirectoryListCellRenderer()); + + } /** * @return Returns the tableModel. @@ -34,4 +46,41 @@ public final DirectoryListTableModel getTableModel() { return tableModel; } + /** + * Simple Row striping renderer + */ + private static final class DirectoryListCellRenderer extends DefaultTableCellRenderer{ + + /* (non-Javadoc) + * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) + */ + public Component getTableCellRendererComponent(JTable table, + Object value, boolean isSelected, boolean hasFocus, int row, + int column) { + Component component = super.getTableCellRendererComponent(table, value, + isSelected, hasFocus, row, column); + JLabel label =((JLabel)component); + + if(isSelected) { + return component; + } + switch(column) { + case 0: + label.setHorizontalAlignment(JLabel.LEFT); + break; + default: + label.setHorizontalAlignment(JLabel.RIGHT); + break; + } + /** + * Colourize based on row striping + */ + if ((row % 2) != 0) { + component.setBackground(ChainsawConstants.COLOR_ODD_ROW); + } else { + component.setBackground(ChainsawConstants.COLOR_EVEN_ROW); + } + return component; + } +} } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]