001: /*
002: * The Apache Software License, Version 1.1
003: *
004: *
005: * Copyright (c) 1999 The Apache Software Foundation. All rights
006: * reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions
010: * are met:
011: *
012: * 1. Redistributions of source code must retain the above copyright
013: * notice, this list of conditions and the following disclaimer.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright
016: * notice, this list of conditions and the following disclaimer in
017: * the documentation and/or other materials provided with the
018: * distribution.
019: *
020: * 3. The end-user documentation included with the redistribution,
021: * if any, must include the following acknowledgment:
022: * "This product includes software developed by the
023: * Apache Software Foundation (http://www.apache.org/)."
024: * Alternately, this acknowledgment may appear in the software itself,
025: * if and wherever such third-party acknowledgments normally appear.
026: *
027: * 4. The names "Xerces" and "Apache Software Foundation" must
028: * not be used to endorse or promote products derived from this
029: * software without prior written permission. For written
030: * permission, please contact apache@apache.org.
031: *
032: * 5. Products derived from this software may not be called "Apache",
033: * nor may "Apache" appear in their name, without prior written
034: * permission of the Apache Software Foundation.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
040: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: * ====================================================================
049: *
050: * This software consists of voluntary contributions made by many
051: * individuals on behalf of the Apache Software Foundation and was
052: * originally based on software copyright (c) 1999, International
053: * Business Machines, Inc., http://www.apache.org. For more
054: * information on the Apache Software Foundation, please see
055: * <http://www.apache.org/>.
056: */
057: package org.apache.xerces.dom.events;
058:
059: import org.w3c.dom.events.Event;
060: import org.w3c.dom.events.EventTarget;
061: import org.w3c.dom.Node;
062:
063: /** EventImpl is an implementation of the basic "generic" DOM Level 2 Event
064: object. It may be subclassed by more specialized event sets.
065: Note that in our implementation, events are re-dispatchable (dispatch
066: clears the stopPropagation and preventDefault flags before it starts);
067: I believe that is the DOM's intent but I don't see an explicit statement
068: to this effect.
069: */
070: public class EventImpl implements Event {
071: public String type = null;
072: public EventTarget target;
073: public EventTarget currentTarget;
074: public short eventPhase;
075: public boolean initialized = false, bubbles = true,
076: cancelable = false;
077: public boolean stopPropagation = false, preventDefault = false;
078:
079: protected long timeStamp = System.currentTimeMillis();
080:
081: /** The DOM doesn't deal with constructors, so instead we have an
082: initializer call to set most of the read-only fields. The
083: others are set, and reset, by the event subsystem during dispatch.
084: <p>
085: Note that init() -- and the subclass-specific initWhatever() calls --
086: may be reinvoked. At least one initialization is required; repeated
087: initializations overwrite the event with new values of their
088: parameters.
089: */
090: public void initEvent(String eventTypeArg, boolean canBubbleArg,
091: boolean cancelableArg) {
092: type = eventTypeArg;
093: bubbles = canBubbleArg;
094: cancelable = cancelableArg;
095:
096: initialized = true;
097: }
098:
099: /** @return true iff this Event is of a class and type which supports
100: bubbling. In the generic case, this is True.
101: */
102: public boolean getBubbles() {
103: return bubbles;
104: }
105:
106: /** @return true iff this Event is of a class and type which (a) has a
107: Default Behavior in this DOM, and (b)allows cancellation (blocking)
108: of that behavior. In the generic case, this is False.
109: */
110: public boolean getCancelable() {
111: return cancelable;
112: }
113:
114: /** @return the Node (EventTarget) whose EventListeners are currently
115: being processed. During capture and bubble phases, this may not be
116: the target node. */
117: public EventTarget getCurrentTarget() {
118: return currentTarget;
119: }
120:
121: /** @return the current processing phase for this event --
122: CAPTURING_PHASE, AT_TARGET, BUBBLING_PHASE. (There may be
123: an internal DEFAULT_PHASE as well, but the users won't see it.) */
124: public short getEventPhase() {
125: return eventPhase;
126: }
127:
128: /** @return the EventTarget (Node) to which the event was originally
129: dispatched.
130: */
131: public EventTarget getTarget() {
132: return target;
133: }
134:
135: /** @return event name as a string
136: */
137: public String getType() {
138: return type;
139: }
140:
141: public long getTimeStamp() {
142: return timeStamp;
143: }
144:
145: /** Causes exit from in-progress event dispatch before the next
146: currentTarget is selected. Replaces the preventBubble() and
147: preventCapture() methods which were present in early drafts;
148: they may be reintroduced in future levels of the DOM. */
149: public void stopPropagation() {
150: stopPropagation = true;
151: }
152:
153: /** Prevents any default processing built into the target node from
154: occurring.
155: */
156: public void preventDefault() {
157: preventDefault = true;
158: }
159:
160: }
|