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 2003/05/26 06:43:44 UTC

cvs commit: jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw AbstractChainsawTableModel.java

psmith      2003/05/25 21:43:44

  Modified:    src/java/org/apache/log4j/chainsaw
                        AbstractChainsawTableModel.java
  Log:
  more refactoring of an AbstractChainsawTableModel.
  
  Revision  Changes    Path
  1.2       +68 -19    jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/AbstractChainsawTableModel.java
  
  Index: AbstractChainsawTableModel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/AbstractChainsawTableModel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractChainsawTableModel.java	25 May 2003 23:31:59 -0000	1.1
  +++ AbstractChainsawTableModel.java	26 May 2003 04:43:44 -0000	1.2
  @@ -49,7 +49,9 @@
   
   package org.apache.log4j.chainsaw;
   
  +import java.util.Collections;
   import java.util.HashMap;
  +import java.util.List;
   import java.util.Map;
   import java.util.Vector;
   
  @@ -63,23 +65,56 @@
    */
   abstract class AbstractChainsawTableModel extends AbstractTableModel
     implements EventContainer {
  +  /** The <code>Vector</code> of column identifiers. */
  +  protected Vector columnIdentifiers;
  +  private Vector countListeners = new Vector();
     private boolean currentSortAscending;
     private int currentSortColumn;
  -  private boolean sortEnabled;
     private DisplayFilter displayFilter;
  -  private Vector countListeners = new Vector();
  -  private final Object syncLock = new Object();
  -  private final FilterChangeExecutor filterExecutor =
  -    new FilterChangeExecutor(this, syncLock);
  +  private final FilterChangeExecutor filterExecutor;
  +  private boolean sortEnabled;
  +  protected final Object syncLock = new Object();
     private Map unfilteredEvents = new HashMap();
   
  -  /** The <code>Vector</code> of column identifiers. */
  -  protected Vector columnIdentifiers;
  +  protected AbstractChainsawTableModel() {
  +    filterExecutor = new FilterChangeExecutor(this, syncLock);
  +  }
   
     public void addEventCountListener(EventCountListener listener) {
       countListeners.add(listener);
     }
   
  +  public void filterChanged() {
  +    //    TODO do we need reset the tableModel with displayed columns if they are part of the filter?
  +    //    if (!displayFilter.getDisplayedColumns().equals(columnIdentifiers)) {
  +    //      setColumnIdentifiers(displayFilter.getDisplayedColumns());
  +    //    }
  +    //    Vector detailColumns = displayFilter.getDetailColumns();
  +    SwingUtilities.invokeLater(filterExecutor);
  +  }
  +
  +  protected boolean getCurrentSortAscending() {
  +    return currentSortAscending;
  +  }
  +
  +  protected int getCurrentSortColumn() {
  +    return currentSortColumn;
  +  }
  +
  +  public DisplayFilter getDisplayFilter() {
  +    return displayFilter;
  +  }
  +
  +  protected abstract List getSortableCollection();
  +
  +  public boolean isSortable(int col) {
  +    return true;
  +  }
  +
  +  public boolean isSortEnabled() {
  +    return sortEnabled;
  +  }
  +
     public void notifyCountListeners() {
       for (int i = 0; i < countListeners.size(); i++) {
         ((EventCountListener) countListeners.get(i)).eventCountChanged(
  @@ -87,25 +122,39 @@
       }
     }
   
  -  public void setDisplayFilter(DisplayFilter displayFilter) {
  -    this.displayFilter = displayFilter;
  +  public void setCurrentSortColumn(int col, boolean ascending) {
  +    currentSortColumn = col;
  +    currentSortAscending = ascending;
     }
   
  -  public void filterChanged() {
  -    //    TODO do we need reset the tableModel with displayed columns if they are part of the filter?
  -    //    if (!displayFilter.getDisplayedColumns().equals(columnIdentifiers)) {
  -    //      setColumnIdentifiers(displayFilter.getDisplayedColumns());
  -    //    }
  -    Vector detailColumns = displayFilter.getDetailColumns();
  -    SwingUtilities.invokeLater(filterExecutor);
  +  public void setDisplayFilter(DisplayFilter displayFilter) {
  +    this.displayFilter = displayFilter;
     }
   
     public void setSortEnabled(boolean sortEnabled) {
       this.sortEnabled = sortEnabled;
     }
   
  -  public void setCurrentSortColumn(int col, boolean ascending) {
  -    currentSortColumn = col;
  -    currentSortAscending = ascending;
  +  /* (non-Javadoc)
  +   * @see org.apache.log4j.chainsaw.EventContainer#sort()
  +   */
  +  public void sort() {
  +    synchronized (syncLock) {
  +      Collections.sort(
  +        getSortableCollection(),
  +        new ColumnComparator(currentSortColumn, currentSortAscending));
  +    }
  +
  +    fireTableDataChanged();
  +  }
  +
  +  public void sortColumn(
  +    JSortTable table, int col, int row, boolean ascending) {
  +      
  +      System.out.println("request to sort col=" + col + ", which is " + ChainsawColumns.getColumnsNames().get(col));
  +    SwingUtilities.invokeLater(
  +      new SortExecutor(this, this, table, col, row, ascending));
  +
  +    fireTableDataChanged();
     }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org