/*
* $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.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* A ChangeListener that stores the received ChangeEvents.
*
*/
public class ChangeReport implements ChangeListener {
/**
* Holds a list of all received PropertyChangeEvents.
*/
protected List<ChangeEvent> events = Collections.synchronizedList(new LinkedList<ChangeEvent>());
protected Map<Object, ChangeEvent> eventMap = Collections.synchronizedMap(new HashMap<Object, ChangeEvent>());
//------------------------ implement PropertyChangeListener
public void stateChanged(ChangeEvent evt) {
events.add(0, evt);
if (evt.getSource() != null) {
eventMap.put(evt.getSource(), evt);
}
}
public int getEventCount() {
return events.size();
}
public void clear() {
events.clear();
eventMap.clear();
}
public boolean hasEvents() {
return !events.isEmpty();
}
public ChangeEvent getLastEvent() {
return events.isEmpty()
? null
: (ChangeEvent) events.get(0);
}
public ChangeEvent getEvent(Object source) {
return (ChangeEvent) eventMap.get(source);
}
}