001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.xerces.dom.events;
019:
020: import org.w3c.dom.events.Event;
021: import org.w3c.dom.events.EventTarget;
022:
023: /**
024: * EventImpl is an implementation of the basic "generic" DOM Level 2 Event
025: * object. It may be subclassed by more specialized event sets.
026: * Note that in our implementation, events are re-dispatchable (dispatch
027: * clears the stopPropagation and preventDefault flags before it starts);
028: * I believe that is the DOM's intent but I don't see an explicit statement
029: * to this effect.
030: *
031: * @xerces.internal
032: *
033: * @version $Id: EventImpl.java 533533 2007-04-29 17:30:08Z mrglavas $
034: */
035: public class EventImpl implements Event {
036:
037: public String type = null;
038: public EventTarget target;
039: public EventTarget currentTarget;
040: public short eventPhase;
041: public boolean initialized = false, bubbles = true,
042: cancelable = false;
043: public boolean stopPropagation = false, preventDefault = false;
044:
045: protected long timeStamp = System.currentTimeMillis();
046:
047: /**
048: * The DOM doesn't deal with constructors, so instead we have an
049: * initializer call to set most of the read-only fields. The
050: * others are set, and reset, by the event subsystem during dispatch.
051: * <p>
052: * Note that init() -- and the subclass-specific initWhatever() calls --
053: * may be reinvoked. At least one initialization is required; repeated
054: * initializations overwrite the event with new values of their
055: * parameters.
056: */
057: public void initEvent(String eventTypeArg, boolean canBubbleArg,
058: boolean cancelableArg) {
059: type = eventTypeArg;
060: bubbles = canBubbleArg;
061: cancelable = cancelableArg;
062: initialized = true;
063: }
064:
065: /**
066: * @return true iff this Event is of a class and type which supports
067: * bubbling. In the generic case, this is True.
068: */
069: public boolean getBubbles() {
070: return bubbles;
071: }
072:
073: /**
074: * @return true iff this Event is of a class and type which (a) has a
075: * Default Behavior in this DOM, and (b)allows cancellation (blocking)
076: * of that behavior. In the generic case, this is False.
077: */
078: public boolean getCancelable() {
079: return cancelable;
080: }
081:
082: /**
083: * @return the Node (EventTarget) whose EventListeners are currently
084: * being processed. During capture and bubble phases, this may not be
085: * the target node.
086: */
087: public EventTarget getCurrentTarget() {
088: return currentTarget;
089: }
090:
091: /**
092: * @return the current processing phase for this event --
093: * CAPTURING_PHASE, AT_TARGET, BUBBLING_PHASE. (There may be
094: * an internal DEFAULT_PHASE as well, but the users won't see it.)
095: */
096: public short getEventPhase() {
097: return eventPhase;
098: }
099:
100: /**
101: * @return the EventTarget (Node) to which the event was originally
102: * dispatched.
103: */
104: public EventTarget getTarget() {
105: return target;
106: }
107:
108: /**
109: * @return event name as a string
110: */
111: public String getType() {
112: return type;
113: }
114:
115: public long getTimeStamp() {
116: return timeStamp;
117: }
118:
119: /**
120: * Causes exit from in-progress event dispatch before the next
121: * currentTarget is selected. Replaces the preventBubble() and
122: * preventCapture() methods which were present in early drafts;
123: * they may be reintroduced in future levels of the DOM.
124: */
125: public void stopPropagation() {
126: stopPropagation = true;
127: }
128:
129: /**
130: * Prevents any default processing built into the target node from
131: * occurring.
132: */
133: public void preventDefault() {
134: preventDefault = true;
135: }
136: }
|