/* * Created on 16.04.2009 * */ package org.jdesktop.test; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.Collections; import java.util.LinkedList; import java.util.List; public class FocusEventReport implements FocusListener { /** * Holds a list of all canceled events. */ protected List<FocusEvent> canceledEvents = Collections.synchronizedList(new LinkedList<FocusEvent>()); protected List<FocusEvent> stoppedEvents = Collections.synchronizedList(new LinkedList<FocusEvent>()); protected List<FocusEvent> allEvents = Collections.synchronizedList(new LinkedList<FocusEvent>()); //------------------------ implement FocusListener public void focusGained(FocusEvent e) { canceledEvents.add(0, e); allEvents.add(0, e); } public void focusLost(FocusEvent e) { stoppedEvents.add(0, e); allEvents.add(0, e); } //----------------------- utility methods to access all events public void clear() { canceledEvents.clear(); stoppedEvents.clear(); allEvents.clear(); } public int getEventCount() { return allEvents.size(); } public boolean hasEvents() { return !allEvents.isEmpty(); } public FocusEvent getLastEvent() { return allEvents.isEmpty() ? null : allEvents.get(0); } //------------------ access canceled events public int getCanceledEventCount() { return canceledEvents.size(); } public boolean hasCanceledEvents() { return !canceledEvents.isEmpty(); } public FocusEvent getLastCanceledEvent() { return canceledEvents.isEmpty() ? null : canceledEvents.get(0); } //----------------- access stopped events public int getStoppedEventCount() { return stoppedEvents.size(); } public boolean hasStoppedEvents() { return !stoppedEvents.isEmpty(); } public FocusEvent getLastStoppedEvent() { return stoppedEvents.isEmpty() ? null : stoppedEvents.get(0); } }