/* * $Id: ListDataReport.java 3373 2009-06-30 14:26:46Z kleopatra $ * * 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.JPopupMenu; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; /** * A <code>ListDataListener</code> that stores the received * <code>ListDataEvents</code>. * */ public class PopupMenuReport implements PopupMenuListener { /** * Holds a list of all canceled events. */ protected List<PopupMenuEvent> canceldEvents = Collections.synchronizedList(new LinkedList<PopupMenuEvent>()); protected List<PopupMenuEvent> visibleEvents = Collections.synchronizedList(new LinkedList<PopupMenuEvent>()); protected List<PopupMenuEvent> invisibleEvents = Collections.synchronizedList(new LinkedList<PopupMenuEvent>()); protected List<PopupMenuEvent> allEvents = Collections.synchronizedList(new LinkedList<PopupMenuEvent>()); /** * Instantiates a ListDataReport. */ public PopupMenuReport() { this(null); } /** * Instantiates a ListDataReport and registers as listener to the given ListModel. */ public PopupMenuReport(JPopupMenu model) { if (model != null) { model.addPopupMenuListener(this); } } // ------------------ implement ListDataListener public void popupMenuCanceled(PopupMenuEvent e) { canceldEvents.add(0, e); allEvents.add(0, e); } public void popupMenuWillBecomeVisible(PopupMenuEvent e) { visibleEvents.add(e); allEvents.add(0, e); } public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { invisibleEvents.add(e); allEvents.add(0, e); } //----------------------- utility methods to access all events public void clear() { canceldEvents.clear(); visibleEvents.clear(); invisibleEvents.clear(); allEvents.clear(); } public int getEventCount() { return allEvents.size(); } public boolean hasEvents() { return !allEvents.isEmpty(); } public PopupMenuEvent getLastEvent() { return allEvents.isEmpty() ? null : allEvents.get(0); } // ------------------ access changed events public int getCanceledEventCount() { return canceldEvents.size(); } public boolean hasCanceledEvents() { return !canceldEvents.isEmpty(); } public PopupMenuEvent getLastCanceledEvent() { return canceldEvents.isEmpty() ? null : canceldEvents.get(0); } // ----------------- access added events public int getVisibleEventCount() { return visibleEvents.size(); } public boolean hasVisibleEvents() { return !visibleEvents.isEmpty(); } public PopupMenuEvent getLastVisibleEvent() { return visibleEvents.isEmpty() ? null : visibleEvents.get(0); } // ----------------- removed added events public int getInvisibleEventCount() { return invisibleEvents.size(); } public boolean hasInvisibleEvents() { return !invisibleEvents.isEmpty(); } public PopupMenuEvent getLastInvisibleEvent() { return invisibleEvents.isEmpty() ? null : invisibleEvents.get(0); } }