KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > swt > ole > win32 > OleEventTable


1 /*******************************************************************************
2  * Copyright (c) 2000, 2007 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.swt.ole.win32;
12
13
14 /**
15 * The OleEventTable class implements a simple
16 * look up mechanism that maps an event type
17 * to a listener. Multiple listeners for the
18 * same event type are supported.
19 *
20 */

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