/* * $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.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * A ChangeListener that stores the received ChangeEvents. * */ public class ActionReport implements ActionListener { /** * Holds a list of all received PropertyChangeEvents. */ protected List<ActionEvent> events = Collections.synchronizedList(new LinkedList<ActionEvent>()); protected Map<Object, ActionEvent> eventMap = Collections.synchronizedMap(new HashMap<Object, ActionEvent>()); //------------------------ implement PropertyChangeListener public void actionPerformed(ActionEvent evt) { events.add(0, evt); if (evt != null && 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 ActionEvent getLastEvent() { return hasEvents() ? events.get(0) : null; } public ActionEvent getEvent(Object source) { return eventMap.get(source); } /** * @return the action command of the last event or null * if no events received. */ public Object getLastActionCommand() { return hasEvents() ? events.get(0).getActionCommand() : null; } }