/*
* $Id$
*
* Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
package org.jdesktop.test;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
/**
* TODO add type doc
*
* @author Jeanette Winzenburg
*/
public class TreeModelReport implements TreeModelListener {
List<TreeModelEvent> allEvents = Collections.synchronizedList(new LinkedList<TreeModelEvent>());
List<TreeModelEvent> updateEvents = Collections.synchronizedList(new LinkedList<TreeModelEvent>());
List<TreeModelEvent> insertEvents = Collections.synchronizedList(new LinkedList<TreeModelEvent>());
List<TreeModelEvent> deleteEvents = Collections.synchronizedList(new LinkedList<TreeModelEvent>());
List<TreeModelEvent> structureEvents = Collections.synchronizedList(new LinkedList<TreeModelEvent>());
/**
* Instantiates a report.
*/
public TreeModelReport() {
this(null);
}
/**
* Instantiates a report and registers itself as listener to the given model,
* if it is not null.
*
* @param model the model to register as listener to
*/
public TreeModelReport(TreeModel model) {
if (model != null) {
model.addTreeModelListener(this);
}
}
//------------------- TableModelListener
public void treeNodesChanged(TreeModelEvent e) {
allEvents.add(0, e);
updateEvents.add(0, e);
}
public void treeNodesInserted(TreeModelEvent e) {
allEvents.add(0, e);
insertEvents.add(0, e);
}
public void treeNodesRemoved(TreeModelEvent e) {
allEvents.add(0, e);
deleteEvents.add(0, e);
}
public void treeStructureChanged(TreeModelEvent e) {
allEvents.add(0, e);
structureEvents.add(0, e);
}
//-------------------- all events access
public void clear() {
updateEvents.clear();
deleteEvents.clear();
insertEvents.clear();
structureEvents.clear();
allEvents.clear();
}
public boolean hasEvents() {
return !allEvents.isEmpty();
}
/**
* @return
*/
public int getEventCount() {
return allEvents.size();
}
public TreeModelEvent getLastEvent() {
return allEvents.isEmpty() ? null : allEvents.get(0);
}
//---------------- update events
public boolean hasUpdateEvents() {
return !updateEvents.isEmpty();
}
/**
* @return
*/
public int getUpdateEventCount() {
return updateEvents.size();
}
public TreeModelEvent getLastUpdateEvent() {
return updateEvents.isEmpty() ? null : updateEvents.get(0);
}
// ---------------- insert events
public boolean hasInsertEvents() {
return !insertEvents.isEmpty();
}
/**
* @return
*/
public int getInsertEventCount() {
return insertEvents.size();
}
public TreeModelEvent getLastInsertEvent() {
return insertEvents.isEmpty() ? null : insertEvents.get(0);
}
// ---------------- delete events
public boolean hasDeleteEvents() {
return !deleteEvents.isEmpty();
}
/**
* @return
*/
public int getDeleteEventCount() {
return deleteEvents.size();
}
public TreeModelEvent getLastDeleteEvent() {
return deleteEvents.isEmpty() ? null : deleteEvents.get(0);
}
//---------------- structure events
public boolean hasStructureEvents() {
return !structureEvents.isEmpty();
}
/**
* @return
*/
public int getStructureEventCount() {
return structureEvents.size();
}
public TreeModelEvent getLastStructureEvent() {
return structureEvents.isEmpty() ? null : structureEvents.get(0);
}
}