/*
* $Id$
*
* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*/
package org.jdesktop.test;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import org.jdesktop.swingx.JXTreeTable;
/**
* A CellEditorListener that stores the received ChangeEvents.
*
*/
public class TreeExpansionReport implements TreeExpansionListener {
/**
* Holds a list of all canceled events.
*/
protected List<TreeExpansionEvent> expandedEvents = Collections.synchronizedList(new LinkedList<TreeExpansionEvent>());
protected List<TreeExpansionEvent> collapsedEvents = Collections.synchronizedList(new LinkedList<TreeExpansionEvent>());
protected List<TreeExpansionEvent> allEvents = Collections.synchronizedList(new LinkedList<TreeExpansionEvent>());
public TreeExpansionReport() {
this((JTree) null);
}
public TreeExpansionReport(JTree tree) {
if (tree != null) {
tree.addTreeExpansionListener(this);
}
}
public TreeExpansionReport(JXTreeTable tree) {
if (tree != null) {
tree.addTreeExpansionListener(this);
}
}
//------------------------ implement CellEditorListener
public void treeExpanded(TreeExpansionEvent e) {
expandedEvents.add(0, e);
allEvents.add(0, e);
}
public void treeCollapsed(TreeExpansionEvent e) {
collapsedEvents.add(0, e);
allEvents.add(0, e);
}
//----------------------- utility methods to access all events
public void clear() {
expandedEvents.clear();
collapsedEvents.clear();
allEvents.clear();
}
public int getEventCount() {
return allEvents.size();
}
public boolean hasEvents() {
return !allEvents.isEmpty();
}
public TreeExpansionEvent getLastEvent() {
return allEvents.isEmpty()
? null
: allEvents.get(0);
}
//------------------ access canceled events
public int getExpandedEventCount() {
return expandedEvents.size();
}
public boolean hasExpandedEvents() {
return !expandedEvents.isEmpty();
}
public TreeExpansionEvent getLastExpandedEvent() {
return expandedEvents.isEmpty()
? null
: expandedEvents.get(0);
}
//----------------- access stopped events
public int getCollapsedEventCount() {
return collapsedEvents.size();
}
public boolean hasCollapsedEvents() {
return !collapsedEvents.isEmpty();
}
public TreeExpansionEvent getLastCollapsedEvent() {
return collapsedEvents.isEmpty()
? null
: collapsedEvents.get(0);
}
}