1 11 package org.eclipse.jdt.internal.corext.refactoring; 12 13 import org.eclipse.jdt.internal.corext.Assert; 14 15 18 public class ListenerList { 19 20 static { 21 } 23 24 27 private int capacity; 28 29 33 private int size; 34 35 40 private Object [] listeners= null; 41 42 46 private static final Object [] EmptyArray= new Object [0]; 47 48 51 public ListenerList() { 52 this(3); 53 } 54 55 61 public ListenerList(int capacity) { 62 Assert.isTrue(capacity >= 1); 63 this.capacity= capacity; 64 } 65 66 72 public void add(Object listener) { 73 Assert.isNotNull(listener); 74 if (size == 0) { 75 listeners= new Object [capacity]; 76 } else { 77 for (int i= 0; i < size; ++i) { 79 if (listeners[i] == listener) { 80 return; 81 } 82 } 83 if (size == listeners.length) { 85 System.arraycopy(listeners, 0, listeners= new Object [size * 2 + 1], 0, size); 86 } 87 } 88 listeners[size++]= listener; 89 } 90 91 102 public Object [] getListeners() { 103 if (size == 0) 104 return EmptyArray; 105 Object [] result= new Object [size]; 106 System.arraycopy(listeners, 0, result, 0, size); 107 return result; 108 } 109 110 116 public boolean isEmpty() { 117 return size == 0; 118 } 119 120 126 public void remove(Object listener) { 127 Assert.isNotNull(listener); 128 for (int i= 0; i < size; ++i) { 129 if (listeners[i] == listener) { 130 if (--size == 0) { 131 listeners= new Object [1]; 132 } else { 133 if (i < size) { 134 listeners[i]= listeners[size]; 135 } 136 listeners[size]= null; 137 } 138 return; 139 } 140 } 141 } 142 143 148 public int size() { 149 return size; 150 } 151 } 152 | Popular Tags |