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