Mega Code Archive

 
Categories / Java / Swing JFC
 

TreeModel Support

/*  * Copyright 2002 Sun Microsystems, Inc. All rights reserved.  *   * Redistribution and use in source and binary forms, with or  * without modification, are permitted provided that the following  * conditions are met:  *   * - Redistributions of source code must retain the above copyright  *   notice, this list of conditions and the following disclaimer.  *   * - Redistribution in binary form must reproduce the above  *   copyright notice, this list of conditions and the following  *   disclaimer in the documentation and/or other materials  *   provided with the distribution.  *   * Neither the name of Sun Microsystems, Inc. or the names of  * contributors may be used to endorse or promote products derived  * from this software without specific prior written permission.  *   * This software is provided "AS IS," without a warranty of any  * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND  * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY  * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY  * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR  * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR  * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE  * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,  * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER  * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF  * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS  * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  *   * You acknowledge that this software is not designed, licensed or  * intended for use in the design, construction, operation or  * maintenance of any nuclear facility.  */ import javax.swing.event.EventListenerList; import javax.swing.event.TreeModelListener; import javax.swing.event.TreeModelEvent; import javax.swing.tree.TreeModel; /**  * A Class that implements the listener registration and event fire methods for  * a TreeModel. This class gets the implementation from DefaultTreeModel  *  * @version %I% %G%  * @author  Mark Davidson  */ public abstract class TreeModelSupport implements TreeModel {          protected EventListenerList listenerList = new EventListenerList();     /**      * Adds a listener for the TreeModelEvent posted after the tree changes.      *      * @see     #removeTreeModelListener      * @param   l       the listener to add      */     public void addTreeModelListener(TreeModelListener l) {         listenerList.add(TreeModelListener.class, l);     }     /**      * Removes a listener previously added with <B>addTreeModelListener()</B>.      *      * @see     #addTreeModelListener      * @param   l       the listener to remove      */     public void removeTreeModelListener(TreeModelListener l) {         listenerList.remove(TreeModelListener.class, l);     }     /*      * Notify all listeners that have registered interest for      * notification on this event type.  The event instance      * is lazily created using the parameters passed into      * the fire method.      * @see EventListenerList      */     protected void fireTreeNodesChanged(Object source, Object[] path,                                         int[] childIndices,                                         Object[] children) {         // Guaranteed to return a non-null array         Object[] listeners = listenerList.getListenerList();         TreeModelEvent e = null;         // Process the listeners last to first, notifying         // those that are interested in this event         for (int i = listeners.length-2; i>=0; i-=2) {             if (listeners[i]==TreeModelListener.class) {                 // Lazily create the event:                 if (e == null)                     e = new TreeModelEvent(source, path,                                            childIndices, children);                 ((TreeModelListener)listeners[i+1]).treeNodesChanged(e);             }         }     }     /*      * Notify all listeners that have registered interest for      * notification on this event type.  The event instance      * is lazily created using the parameters passed into      * the fire method.      * @see EventListenerList      */     protected void fireTreeNodesInserted(Object source, Object[] path,                                         int[] childIndices,                                         Object[] children) {         // Guaranteed to return a non-null array         Object[] listeners = listenerList.getListenerList();         TreeModelEvent e = null;         // Process the listeners last to first, notifying         // those that are interested in this event         for (int i = listeners.length-2; i>=0; i-=2) {             if (listeners[i]==TreeModelListener.class) {                 // Lazily create the event:                 if (e == null)                     e = new TreeModelEvent(source, path,                                            childIndices, children);                 ((TreeModelListener)listeners[i+1]).treeNodesInserted(e);             }         }     }     /*      * Notify all listeners that have registered interest for      * notification on this event type.  The event instance      * is lazily created using the parameters passed into      * the fire method.      * @see EventListenerList      */     protected void fireTreeNodesRemoved(Object source, Object[] path,                                         int[] childIndices,                                         Object[] children) {         // Guaranteed to return a non-null array         Object[] listeners = listenerList.getListenerList();         TreeModelEvent e = null;         // Process the listeners last to first, notifying         // those that are interested in this event         for (int i = listeners.length-2; i>=0; i-=2) {             if (listeners[i]==TreeModelListener.class) {                 // Lazily create the event:                 if (e == null)                     e = new TreeModelEvent(source, path,                                            childIndices, children);                 ((TreeModelListener)listeners[i+1]).treeNodesRemoved(e);             }         }     }          protected void fireTreeNodesRemoved(TreeModelEvent evt)  {         // Guaranteed to return a non-null array         Object[] listeners = listenerList.getListenerList();         // Process the listeners last to first, notifying         // those that are interested in this event         for (int i = listeners.length-2; i>=0; i-=2) {             if (listeners[i]==TreeModelListener.class) {                 ((TreeModelListener)listeners[i+1]).treeStructureChanged(evt);             }         }     }     /*      * Notify all listeners that have registered interest for      * notification on this event type.  The event instance      * is lazily created using the parameters passed into      * the fire method.      * @see EventListenerList      */     protected void fireTreeStructureChanged(Object source, Object[] path,                                         int[] childIndices,                                         Object[] children) {         // Guaranteed to return a non-null array         Object[] listeners = listenerList.getListenerList();         TreeModelEvent e = null;         // Process the listeners last to first, notifying         // those that are interested in this event         for (int i = listeners.length-2; i>=0; i-=2) {             if (listeners[i]==TreeModelListener.class) {                 // Lazily create the event:                 if (e == null)                     e = new TreeModelEvent(source, path,                                            childIndices, children);                 ((TreeModelListener)listeners[i+1]).treeStructureChanged(e);             }         }     } }