You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ps...@apache.org on 2004/05/21 06:24:16 UTC

cvs commit: logging-log4j/src/java/org/apache/log4j/chainsaw/vfs FileObjectTable.java

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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org