/* * $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.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * A PropertyChangeListener that stores the received PropertyChangeEvents. * * modified ("beanified") from JGoodies PropertyChangeReport. * */ public class ListSelectionReport implements ListSelectionListener { /** * Holds a list of all received PropertyChangeEvents. */ protected List<ListSelectionEvent> events = Collections.synchronizedList(new LinkedList<ListSelectionEvent>()); protected List<ListSelectionEvent> notAdjustingEvents = Collections.synchronizedList(new LinkedList<ListSelectionEvent>()); //------------------------ implement ListSelectionListener public void valueChanged(ListSelectionEvent e) { events.add(0, e); if (!e.getValueIsAdjusting()) { notAdjustingEvents.add(0, e); } } public int getEventCount() { return getEventCount(false); } public void clear() { events.clear(); notAdjustingEvents.clear(); } public boolean hasEvents() { return !events.isEmpty(); } public int getEventCount(boolean notAdjusting) { if (notAdjusting) { return notAdjustingEvents.size(); } return events.size(); } public ListSelectionEvent getLastEvent(boolean notAdjusting) { if (notAdjusting) { return getLastFrom(events); } return getLastFrom(notAdjustingEvents); } private ListSelectionEvent getLastFrom(List<ListSelectionEvent> list) { return list.isEmpty() ? null : list.get(0); } }