1 11 package org.eclipse.swt.ole.win32; 12 13 14 21 22 class OleEventTable { 23 int [] types; 24 OleListener [] handlers; 25 void hook (int eventType, OleListener handler) { 26 if (types == null) types = new int [4]; 27 if (handlers == null) handlers = new OleListener [4]; 28 for (int i=0; i<types.length; i++) { 29 if (types [i] == 0) { 30 types [i] = eventType; 31 handlers [i] = handler; 32 return; 33 } 34 } 35 int size = types.length; 36 int [] newTypes = new int [size + 4]; 37 OleListener [] newHandlers = new OleListener [size + 4]; 38 System.arraycopy (types, 0, newTypes, 0, size); 39 System.arraycopy (handlers, 0, newHandlers, 0, size); 40 types = newTypes; handlers = newHandlers; 41 types [size] = eventType; handlers [size] = handler; 42 } 43 boolean hooks (int eventType) { 44 if (handlers == null) return false; 45 for (int i=0; i<types.length; i++) { 46 if (types [i] == eventType) return true; 47 } 48 return false; 49 } 50 void sendEvent (OleEvent event) { 51 if (handlers == null) return; 52 for (int i=0; i<types.length; i++) { 53 if (types [i] == event.type) { 54 OleListener listener = handlers [i]; 55 if (listener != null) listener.handleEvent (event); 56 } 57 } 58 } 59 void unhook (int eventType, OleListener handler) { 60 if (handlers == null) return; 61 for (int i=0; i<types.length; i++) { 62 if ((types [i] == eventType) && (handlers [i] == handler)) { 63 types [i] = 0; 64 handlers [i] = null; 65 return; 66 } 67 } 68 } 69 boolean hasEntries() { 70 for (int i=0; i<types.length; i++) { 71 if (types[i] != 0) return true; 72 } 73 return false; 74 } 75 } 76 | Popular Tags |