001    /*
002     * $Id: ProgressSource.java,v 1.2 2005/10/10 18:03:08 rbair Exp $
003     *
004     * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
005     * Santa Clara, California 95054, U.S.A. All rights reserved.
006     *
007     * This library is free software; you can redistribute it and/or
008     * modify it under the terms of the GNU Lesser General Public
009     * License as published by the Free Software Foundation; either
010     * version 2.1 of the License, or (at your option) any later version.
011     * 
012     * This library is distributed in the hope that it will be useful,
013     * but WITHOUT ANY WARRANTY; without even the implied warranty of
014     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
015     * Lesser General Public License for more details.
016     * 
017     * You should have received a copy of the GNU Lesser General Public
018     * License along with this library; if not, write to the Free Software
019     * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
020     */
021    
022    package org.jdesktop.swingx.event;
023    
024    /**
025     * Interface for ProgressListener registrations methods and indicates that the
026     * implementation class is a source of ProgressEvents. 
027     * ProgressListeners which are interested in ProgressEvents from this class can
028     * register themselves as listeners. 
029     * 
030     * @see ProgressEvent
031     * @see ProgressListener
032     * @author Mark Davidson
033     */
034    public interface ProgressSource  {
035    
036        /**
037         * Register the ProgressListener. 
038         * 
039         * @param l the listener to register
040         */
041        void addProgressListener(ProgressListener l);
042    
043        /**
044         * Unregister the ProgressListener from the ProgressSource.
045         * 
046         * @param l the listener to unregister
047         */
048        void removeProgressListener(ProgressListener l);
049    
050        /**
051         * Returns an array of listeners.
052         *
053         * @return an non null array of ProgressListeners.
054         */
055        ProgressListener[] getProgressListeners();
056    }