1 11 12 package org.eclipse.ui; 13 14 import java.util.Map ; 15 16 import org.eclipse.core.commands.util.Tracing; 17 import org.eclipse.ui.internal.misc.Policy; 18 19 28 public abstract class AbstractSourceProvider implements ISourceProvider { 29 30 36 protected static boolean DEBUG = Policy.DEBUG_SOURCES; 37 38 43 private ISourceProviderListener[] listeners = new ISourceProviderListener[7]; 44 45 48 private int listenerCount = 0; 49 50 public final void addSourceProviderListener( 51 final ISourceProviderListener listener) { 52 if (listener == null) { 53 throw new NullPointerException ("The listener cannot be null"); } 55 56 if (listenerCount == listeners.length) { 57 final ISourceProviderListener[] growArray = new ISourceProviderListener[listeners.length + 4]; 58 System.arraycopy(listeners, 0, growArray, 0, listeners.length); 59 listeners = growArray; 60 } 61 listeners[listenerCount++] = listener; 62 } 63 64 75 protected final void fireSourceChanged(final int sourcePriority, 76 final String sourceName, final Object sourceValue) { 77 for (int i = 0; i < listenerCount; i++) { 78 final ISourceProviderListener listener = listeners[i]; 79 listener.sourceChanged(sourcePriority, sourceName, sourceValue); 80 } 81 } 82 83 94 protected final void fireSourceChanged(final int sourcePriority, 95 final Map sourceValuesByName) { 96 for (int i = 0; i < listenerCount; i++) { 97 final ISourceProviderListener listener = listeners[i]; 98 listener.sourceChanged(sourcePriority, sourceValuesByName); 99 } 100 } 101 102 112 protected final void logDebuggingInfo(final String message) { 113 if (DEBUG && (message != null)) { 114 Tracing.printTrace("SOURCES", message); } 116 } 117 118 public final void removeSourceProviderListener( 119 final ISourceProviderListener listener) { 120 if (listener == null) { 121 throw new NullPointerException ("The listener cannot be null"); } 123 124 int emptyIndex = -1; 125 for (int i = 0; i < listenerCount; i++) { 126 if (listeners[i] == listener) { 127 listeners[i] = null; 128 emptyIndex = i; 129 } 130 } 131 132 if (emptyIndex != -1) { 133 for (int i = emptyIndex + 1; i < listenerCount; i++) { 135 listeners[i - 1] = listeners[i]; 136 } 137 listenerCount--; 138 } 139 } 140 141 } 142 | Popular Tags |