📄 eventtarget.java
字号:
/** * Copyright (c) 2005-2006 Aptana, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. If redistributing this code, * this entire header must remain intact. */package org.eclipse.eclipsemonkey.lang.javascript.events;import java.util.ArrayList;import java.util.Hashtable;import org.eclipse.swt.widgets.Display;import org.eclipse.ui.IWorkbench;import org.eclipse.ui.PlatformUI;import org.mozilla.javascript.Context;import org.mozilla.javascript.Function;import org.mozilla.javascript.Scriptable;import org.mozilla.javascript.ScriptableObject;/** * @author Kevin Lindsey */public abstract class EventTarget extends ScriptableObject implements IEventTarget{ /* * Fields */ private Hashtable _events; /* * Constructors */ /** * Create a new instance of EventTarget */ public EventTarget() { String[] names = new String[] { "addEventListener", "removeEventListener" }; this.defineFunctionProperties(names, EventTarget.class, READONLY | PERMANENT); } /* * Methods */ /** * @param event */ public void fireEventListeners(Event event) { this.fireEventListeners(event.getType(), new Object[] { event }); } /** * @param eventType * @param args */ public void fireEventListeners(String eventType, Object[] args) { if (this._events != null && this._events.containsKey(eventType)) { ArrayList handlers = (ArrayList) _events.get(eventType); for (int i = 0; i < handlers.size(); i++) { Object eventHandler = handlers.get(i); if (eventHandler instanceof Function) { final Object[] fArgs = args; final Function f = (Function) eventHandler; final Scriptable scope = f.getParentScope(); final IWorkbench workbench = PlatformUI.getWorkbench(); Display display = workbench.getDisplay(); // execute callback in the correct thread display.syncExec(new Runnable() { public void run() { Context cx = Context.enter(); try { f.call(cx, scope, scope, fArgs); } finally { Context.exit(); } } }); } } } } /** * @param eventType * @param eventHandler */ public void addEventListener(String eventType, Object eventHandler) { if (this._events == null) { this._events = new Hashtable(); } if (this._events.containsKey(eventType) == false) { this._events.put(eventType, new ArrayList()); } ArrayList handlers = (ArrayList) this._events.get(eventType); handlers.add(eventHandler); } /** * @param eventType * @param eventHandler */ public void removeEventListener(String eventType, Object eventHandler) { if (this._events != null) { if (this._events.containsKey(eventType)) { ArrayList handlers = (ArrayList) this._events.get(eventType); handlers.remove(eventHandler); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -