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]

Reply via email to