1  /*
     2   Copyright aswing.org, see the LICENCE.txt.
     3  */
     4  
     5  import org.aswing.events.ListDataEvent;
     6  import org.aswing.events.ListDataListener;
     7  import org.aswing.utils.ArrayUtils;
     8  
     9  /**
    10   * @author iiley
    11   */
    12  class org.aswing.AbstractListModel{
    13      private var listeners:Array;
    14      
    15      public function AbstractListModel(){
    16      	listeners = new Array();
    17      }
    18  
    19      public function addListDataListener(l:ListDataListener):Void {
    20  		listeners.push(l);
    21      }
    22  
    23      public function removeListDataListener(l:ListDataListener):Void {
    24      	ArrayUtils.removeFromArray(listeners, l);
    25      }
    26  
    27      private function fireContentsChanged(target:Object, index0:Number, index1:Number):Void
    28      {
    29  		var e:ListDataEvent = new ListDataEvent(target, ListDataEvent.CONTENTS_CHANGED, index0, index1);
    30  	
    31  		for (var i:Number = listeners.length - 1; i >= 0; i --) {
    32  			var lis:ListDataListener = ListDataListener(listeners[i]);
    33  			lis.contentsChanged(e);     
    34  		}
    35      }
    36  
    37  
    38  
    39      private function fireIntervalAdded(target:Object, index0:Number, index1:Number):Void
    40      {
    41  		var e:ListDataEvent = new ListDataEvent(target, ListDataEvent.INTERVAL_ADDED, index0, index1);
    42  	
    43  		for (var i:Number = listeners.length - 1; i >= 0; i --) {
    44  			var lis:ListDataListener = ListDataListener(listeners[i]);
    45  			lis.intervalAdded(e);     
    46  		}
    47      }
    48  
    49  
    50  
    51      private function fireIntervalRemoved(target:Object, index0:Number, index1:Number):Void
    52      {
    53  		var e:ListDataEvent = new ListDataEvent(target, ListDataEvent.INTERVAL_REMOVED, index0, index1);
    54  	
    55  		for (var i:Number = listeners.length - 1; i >= 0; i --) {
    56  			var lis:ListDataListener = ListDataListener(listeners[i]);
    57  			lis.intervalRemoved(e);
    58  		}		
    59      }
    60  }
    61