/* * $Id$ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. */ package org.jdesktop.swingx.test; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.jdesktop.swingx.calendar.DateSelectionModel; import org.jdesktop.swingx.event.DateSelectionEvent; import org.jdesktop.swingx.event.DateSelectionListener; import org.jdesktop.swingx.event.DateSelectionEvent.EventType; /** * A ChangeListener that stores the received ChangeEvents. * */ public class DateSelectionReport implements DateSelectionListener { /** * Holds a list of all received DateSelectionEvents. */ protected List<DateSelectionEvent> events = Collections.synchronizedList(new LinkedList<DateSelectionEvent>()); /** * Instantiates a DateSelectionReport. */ public DateSelectionReport() {} /** * Instantiates a DateSelectionReport and registers itself to the given model. * @param model the DateSelectionModel to listen to, must not be null. */ public DateSelectionReport(DateSelectionModel model) { model.addDateSelectionListener(this); } //------------------------ implement DateSelectionListener public void valueChanged(DateSelectionEvent evt) { events.add(0, evt); } // ------------------- accessors public int getEventCount() { return events.size(); } public void clear() { events.clear(); } public boolean hasEvents() { return !events.isEmpty(); } public DateSelectionEvent getLastEvent() { return hasEvents() ? events.get(0) : null; } /** * @return the EventType of the last event or null if no event received. */ public EventType getLastEventType() { return hasEvents() ? getLastEvent().getEventType() : null; } public boolean hasEvent(EventType type) { for (DateSelectionEvent ev : events) { if (ev.getEventType().equals(type)) { return true; } } return false; } public int getEventCount(EventType type) { int count = 0; for (DateSelectionEvent ev : events) { if (ev.getEventType().equals(type)) { count++; } } return count; } }