Coverage Report - net.mtu.eggplant.util.event.CollectionSupport
 
Classes in this File Line Coverage Branch Coverage Complexity
CollectionSupport
0%
0/21
0%
0/4
0
 
 1  
 /*
 2  
  * Copyright (c) 2000
 3  
  *      Jon Schewe.  All rights reserved
 4  
  *
 5  
  * Redistribution and use in source and binary forms, with or without
 6  
  * modification, are permitted provided that the following conditions
 7  
  * are met:
 8  
  * 1. Redistributions of source code must retain the above copyright
 9  
  *    notice, this list of conditions and the following disclaimer.
 10  
  * 2. Redistributions in binary form must reproduce the above copyright
 11  
  *    notice, this list of conditions and the following disclaimer in the
 12  
  *    documentation and/or other materials provided with the distribution.
 13  
  *
 14  
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 15  
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 16  
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 17  
  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 18  
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 19  
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 20  
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 21  
  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 22  
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 23  
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 24  
  * SUCH DAMAGE.
 25  
  *
 26  
  * I'd appreciate comments/suggestions on the code jpschewe@mtu.net
 27  
  */
 28  
 package net.mtu.eggplant.util.event;
 29  
 
 30  
 import java.util.Collection;
 31  
 import java.util.function.BiConsumer;
 32  
 
 33  
 import javax.swing.event.EventListenerList;
 34  
 
 35  
 /**
 36  
  * Adds support for Collection events.
 37  
  * 
 38  
  * @version $Revision$
 39  
  */
 40  
 public class CollectionSupport {
 41  
 
 42  
   /**
 43  
    * @param source the object that is to be the source of the events
 44  
    * @pre (source != null)
 45  
    **/
 46  0
   public CollectionSupport(final Object source) {
 47  0
     _source = source;
 48  0
     _listeners = new EventListenerList();
 49  0
   }
 50  
 
 51  
   private Object _source;
 52  
 
 53  
   /**
 54  
    * @param data the objects that were added
 55  
    * @pre (data != null)
 56  
    **/
 57  
   public void fireObjectsAdded(final Collection<?> data) {
 58  0
     fireObjectsEvent(data, (listener,
 59  0
                             event) -> listener.objectsAdded(event));
 60  
 
 61  0
   }
 62  
 
 63  
   /**
 64  
    * @param data the objects that were removed
 65  
    * @pre (data != null)
 66  
    **/
 67  
   public void fireObjectsRemoved(final Collection<?> data) {
 68  0
     fireObjectsEvent(data, (listener,
 69  0
                             event) -> listener.objectsRemoved(event));
 70  0
   }
 71  
 
 72  
   private void fireObjectsEvent(final Collection<?> data,
 73  
                                 BiConsumer<CollectionListener, CollectionEvent> eventCallback) {
 74  0
     final CollectionEvent ce = new CollectionEvent(_source, data);
 75  0
     final Object[] listeners = _listeners.getListenerList();
 76  0
     for (int i = listeners.length
 77  0
         - 2; i >= 0; i -= 2) {
 78  0
       if (listeners[i] == CollectionListener.class) {
 79  0
         eventCallback.accept(((CollectionListener) listeners[i
 80  
             + 1]), ce);
 81  
       }
 82  
     }
 83  0
   }
 84  
 
 85  
   private EventListenerList _listeners;
 86  
 
 87  
   /**
 88  
    * @pre (listener != null)
 89  
    **/
 90  
   public void addCollectionListener(final CollectionListener listener) {
 91  0
     _listeners.add(CollectionListener.class, listener);
 92  0
   }
 93  
 
 94  
   /**
 95  
    * @pre (listener != null)
 96  
    **/
 97  
   public void removeCollectionListener(final CollectionListener listener) {
 98  0
     _listeners.remove(CollectionListener.class, listener);
 99  0
   }
 100  
 
 101  
 }