1/* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5/* 6 * Licensed to the Apache Software Foundation (ASF) under one or more 7 * contributor license agreements. See the NOTICE file distributed with 8 * this work for additional information regarding copyright ownership. 9 * The ASF licenses this file to You under the Apache License, Version 2.0 10 * (the "License"); you may not use this file except in compliance with 11 * the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22package com.sun.org.apache.xerces.internal.dom.events; 23 24import org.w3c.dom.events.Event; 25import org.w3c.dom.events.EventTarget; 26 27/** 28 * EventImpl is an implementation of the basic "generic" DOM Level 2 Event 29 * object. It may be subclassed by more specialized event sets. 30 * Note that in our implementation, events are re-dispatchable (dispatch 31 * clears the stopPropagation and preventDefault flags before it starts); 32 * I believe that is the DOM's intent but I don't see an explicit statement 33 * to this effect. 34 * 35 * @xerces.internal 36 * 37 */ 38public class EventImpl implements Event 39{ 40 public String type=null; 41 public EventTarget target; 42 public EventTarget currentTarget; 43 public short eventPhase; 44 public boolean initialized=false, bubbles=true, cancelable=false; 45 public boolean stopPropagation=false, preventDefault=false; 46 47 protected long timeStamp = System.currentTimeMillis(); 48 49 /** The DOM doesn't deal with constructors, so instead we have an 50 initializer call to set most of the read-only fields. The 51 others are set, and reset, by the event subsystem during dispatch. 52 <p> 53 Note that init() -- and the subclass-specific initWhatever() calls -- 54 may be reinvoked. At least one initialization is required; repeated 55 initializations overwrite the event with new values of their 56 parameters. 57 */ 58 public void initEvent(String eventTypeArg, boolean canBubbleArg, 59 boolean cancelableArg) 60 { 61 type=eventTypeArg; 62 bubbles=canBubbleArg; 63 cancelable=cancelableArg; 64 65 initialized=true; 66 } 67 68 /** @return true iff this Event is of a class and type which supports 69 bubbling. In the generic case, this is True. 70 */ 71 public boolean getBubbles() 72 { 73 return bubbles; 74 } 75 76 /** @return true iff this Event is of a class and type which (a) has a 77 Default Behavior in this DOM, and (b)allows cancellation (blocking) 78 of that behavior. In the generic case, this is False. 79 */ 80 public boolean getCancelable() 81 { 82 return cancelable; 83 } 84 85 /** @return the Node (EventTarget) whose EventListeners are currently 86 being processed. During capture and bubble phases, this may not be 87 the target node. */ 88 public EventTarget getCurrentTarget() 89 { 90 return currentTarget; 91 } 92 93 /** @return the current processing phase for this event -- 94 CAPTURING_PHASE, AT_TARGET, BUBBLING_PHASE. (There may be 95 an internal DEFAULT_PHASE as well, but the users won't see it.) */ 96 public short getEventPhase() 97 { 98 return eventPhase; 99 } 100 101 /** @return the EventTarget (Node) to which the event was originally 102 dispatched. 103 */ 104 public EventTarget getTarget() 105 { 106 return target; 107 } 108 109 /** @return event name as a string 110 */ 111 public String getType() 112 { 113 return type; 114 } 115 116 public long getTimeStamp() { 117 return timeStamp; 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 public void stopPropagation() 125 { 126 stopPropagation=true; 127 } 128 129 /** Prevents any default processing built into the target node from 130 occurring. 131 */ 132 public void preventDefault() 133 { 134 preventDefault=true; 135 } 136 137} 138