Code

jdk1.5, 1.6 dont seem to have Level 3 DOM Events. Let's provide the interfaces for...
authorishmal <ishmal@users.sourceforge.net>
Sun, 16 Mar 2008 21:37:50 +0000 (21:37 +0000)
committerishmal <ishmal@users.sourceforge.net>
Sun, 16 Mar 2008 21:37:50 +0000 (21:37 +0000)
12 files changed:
src/bind/java/org/w3c/dom/events/CustomEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/DocumentEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/Event.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/EventException.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/EventListener.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/EventTarget.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/KeyboardEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/MouseEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/MutationEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/MutationNameEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/TextEvent.java [new file with mode: 0644]
src/bind/java/org/w3c/dom/events/UIEvent.java [new file with mode: 0644]

diff --git a/src/bind/java/org/w3c/dom/events/CustomEvent.java b/src/bind/java/org/w3c/dom/events/CustomEvent.java
new file mode 100644 (file)
index 0000000..c7bdf04
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+/**
+ *  The <code>CustomEvent</code> interface gives access to the attributes 
+ * <code>Event.currentTarget</code> and <code>Event.eventPhase</code>. It is 
+ * intended to be used by the DOM Events implementation to access the 
+ * underlying current target and event phase while dispatching a custom 
+ * <code>Event</code> in the tree; it is also intended to be implemented, 
+ * and <em>not used</em>, by DOM applications. 
+ * <p> The methods contained in this interface are not intended to be used by 
+ * a DOM application, especially during the dispatch on the 
+ * <code>Event</code> object. Changing the current target or the current 
+ * phase may result in unpredictable results of the event flow. The DOM 
+ * Events implementation should ensure that both methods return the 
+ * appropriate current target and phase before invoking each event listener 
+ * on the current target to protect DOM applications from malicious event 
+ * listeners. 
+ * <p ><b>Note:</b>  If this interface is supported by the event object, 
+ * <code>Event.isCustom()</code> must return <code>true</code>. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 3
+ */
+public interface CustomEvent extends Event {
+    /**
+     *  The <code>setDispatchState</code> method is used by the DOM Events 
+     * implementation to set the values of <code>Event.currentTarget</code> 
+     * and <code>Event.eventPhase</code>. It also reset the states of 
+     * <code>isPropagationStopped</code> and 
+     * <code>isImmediatePropagationStopped</code>. 
+     * @param target  Specifies the new value for the 
+     *   <code>Event.currentTarget</code> attribute. 
+     * @param phase  Specifies the new value for the 
+     *   <code>Event.eventPhase</code> attribute. 
+     */
+    public void setDispatchState(EventTarget target, 
+                                 short phase);
+
+    /**
+     *  This method will return <code>true</code> if the method 
+     * <code>stopPropagation()</code> has been called for this event, 
+     * <code>false</code> in any other cases. 
+     * @return  <code>true</code> if the event propagation has been stopped 
+     *   in the current group. 
+     */
+    public boolean isPropagationStopped();
+
+    /**
+     *  The <code>isImmediatePropagationStopped</code> method is used by the 
+     * DOM Events implementation to know if the method 
+     * <code>stopImmediatePropagation()</code> has been called for this 
+     * event. It returns <code>true</code> if the method has been called, 
+     * <code>false</code> otherwise. 
+     * @return  <code>true</code> if the event propagation has been stopped 
+     *   immediately in the current group. 
+     */
+    public boolean isImmediatePropagationStopped();
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/DocumentEvent.java b/src/bind/java/org/w3c/dom/events/DocumentEvent.java
new file mode 100644 (file)
index 0000000..8f50dd7
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.DOMException;
+
+/**
+ *  The <code>DocumentEvent</code> interface provides a mechanism by which the 
+ * user can create an <code>Event</code> object of a type supported by the 
+ * implementation. If the feature "Events" is supported by the 
+ * <code>Document</code> object, the <code>DocumentEvent</code> interface 
+ * must be implemented on the same object. If the feature "+Events" is 
+ * supported by the <code>Document</code> object, an object that supports 
+ * the <code>DocumentEvent</code> interface must be returned by invoking the 
+ * method <code>Node.getFeature("+Events", "3.0")</code> on the 
+ * <code>Document</code> object. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface DocumentEvent {
+    /**
+     * 
+     * @param eventType  The <code>eventType</code> parameter specifies the 
+     *   name of the DOM Events interface to be supported by the created 
+     *   event object, e.g. <code>"Event"</code>, <code>"MouseEvent"</code>, 
+     *   <code>"MutationEvent"</code> and so on. If the <code>Event</code> 
+     *   is to be dispatched via the <code>EventTarget.dispatchEvent()</code>
+     *    method the appropriate event init method must be called after 
+     *   creation in order to initialize the <code>Event</code>'s values.  
+     *   As an example, a user wishing to synthesize some kind of 
+     *   <code>UIEvent</code> would invoke 
+     *   <code>DocumentEvent.createEvent("UIEvent")</code>. The 
+     *   <code>UIEvent.initUIEventNS()</code> method could then be called on 
+     *   the newly created <code>UIEvent</code> object to set the specific 
+     *   type of user interface event to be dispatched, 
+     *   <code>{"http://www.w3.org/2001/xml-events", "DOMActivate"}</code> 
+     *   for example, and set its context information, e.g. 
+     *   <code>UIEvent.detail</code> in this example.  The 
+     *   <code>createEvent</code> method is used in creating 
+     *   <code>Event</code>s when it is either inconvenient or unnecessary 
+     *   for the user to create an <code>Event</code> themselves. In cases 
+     *   where the implementation provided <code>Event</code> is 
+     *   insufficient, users may supply their own <code>Event</code> 
+     *   implementations for use with the 
+     *   <code>EventTarget.dispatchEvent()</code> method. However, the DOM 
+     *   implementation needs access to the attributes 
+     *   <code>Event.currentTarget</code> and <code>Event.eventPhase</code> 
+     *   to appropriately propagate the event in the DOM tree. Therefore 
+     *   users' <code>Event</code> implementations might need to support the 
+     *   <code>CustomEvent</code> interface for that effect. 
+     * <p ><b>Note:</b>    For backward compatibility reason, "UIEvents", 
+     *   "MouseEvents", "MutationEvents", and "HTMLEvents" feature names are 
+     *   valid values for the parameter <code>eventType</code> and represent 
+     *   respectively the interfaces "UIEvent", "MouseEvent", 
+     *   "MutationEvent", and "Event". 
+     * @return  The newly created event object. 
+     * @exception DOMException
+     *    NOT_SUPPORTED_ERR: Raised if the implementation does not support the 
+     *   <code>Event</code> interface requested. 
+     */
+    public Event createEvent(String eventType)
+                             throws DOMException;
+
+    /**
+     *  Test if the implementation can generate events of a specified type. 
+     * @param namespaceURI  Specifies the <code>Event.namespaceURI</code> of 
+     *   the event. 
+     * @param type  Specifies the <code>Event.type</code> of the event. 
+     * @return  <code>true</code> if the implementation can generate and 
+     *   dispatch this event type, <code>false</code> otherwise. 
+     * @since DOM Level 3
+     */
+    public boolean canDispatch(String namespaceURI, 
+                               String type);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/Event.java b/src/bind/java/org/w3c/dom/events/Event.java
new file mode 100644 (file)
index 0000000..9499315
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+/**
+ *  The <code>Event</code> interface is used to provide contextual information 
+ * about an event to the listener processing the event. An object which 
+ * implements the <code>Event</code> interface is passed as the parameter to 
+ * an <code>EventListener</code>. More specific context information is 
+ * passed to event listeners by deriving additional interfaces from 
+ * <code>Event</code> which contain information directly relating to the 
+ * type of event they represent. These derived interfaces are also 
+ * implemented by the object passed to the event listener. 
+ * <p> To create an instance of the <code>Event</code> interface, use the 
+ * <code>DocumentEvent.createEvent("Event")</code> method call. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface Event {
+    // PhaseType
+    /**
+     *  The current event phase is the capture phase. 
+     */
+    public static final short CAPTURING_PHASE           = 1;
+    /**
+     *  The current event is in the target phase, i.e. it is being evaluated 
+     * at the event target. 
+     */
+    public static final short AT_TARGET                 = 2;
+    /**
+     *  The current event phase is the bubbling phase. 
+     */
+    public static final short BUBBLING_PHASE            = 3;
+
+    /**
+     *  The name should be an <a href='http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName'>NCName</a> as defined in [<a href='http://www.w3.org/TR/1999/REC-xml-names-19990114/'>XML Namespaces</a>]
+     *  and is case-sensitive. 
+     * <br> If the attribute <code>Event.namespaceURI</code> is different from 
+     * <code>null</code>, this attribute represents a local name. 
+     */
+    public String getType();
+
+    /**
+     *  Used to indicate the event target. This attribute contains the target 
+     * node when used with the . 
+     */
+    public EventTarget getTarget();
+
+    /**
+     *  Used to indicate the <code>EventTarget</code> whose 
+     * <code>EventListeners</code> are currently being processed. This is 
+     * particularly useful during the capture and bubbling phases. This 
+     * attribute could contain the target node or a target ancestor when 
+     * used with the . 
+     */
+    public EventTarget getCurrentTarget();
+
+    /**
+     *  Used to indicate which phase of event flow is currently being 
+     * accomplished. 
+     */
+    public short getEventPhase();
+
+    /**
+     *  Used to indicate whether or not an event is a bubbling event. If the 
+     * event can bubble the value is <code>true</code>, otherwise the value 
+     * is <code>false</code>. 
+     */
+    public boolean getBubbles();
+
+    /**
+     *  Used to indicate whether or not an event can have its default action 
+     * prevented (see also ). If the default action can be prevented the 
+     * value is <code>true</code>, otherwise the value is <code>false</code>
+     * . 
+     */
+    public boolean getCancelable();
+
+    /**
+     *  Used to specify the time (in milliseconds relative to the epoch) at 
+     * which the event was created. Due to the fact that some systems may 
+     * not provide this information the value of <code>timeStamp</code> may 
+     * be not available for all events. When not available, a value of 
+     * <code>0</code> will be returned. Examples of epoch time are the time 
+     * of the system start or 0:0:0 UTC 1st January 1970. 
+     */
+    public long getTimeStamp();
+
+    /**
+     *  This method is used to prevent event listeners of the same group to be 
+     * triggered but its effect is deferred until all event listeners 
+     * attached on the <code>currentTarget</code> have been triggered (see 
+     * ). Once it has been called, further calls to that method have no 
+     * additional effect. 
+     * <p ><b>Note:</b>  This method does not prevent the default action from 
+     * being invoked; use <code>preventDefault</code> for that effect. 
+     */
+    public void stopPropagation();
+
+    /**
+     *  If an event is cancelable, the <code>preventDefault</code> method is 
+     * used to signify that the event is to be canceled, meaning any default 
+     * action normally taken by the implementation as a result of the event 
+     * will not occur (see also ), and thus independently of event groups. 
+     * Calling this method for a non-cancelable event has no effect. 
+     * <p ><b>Note:</b>  This method does not stop the event propagation; use 
+     * <code>stopPropagation</code> or <code>stopImmediatePropagation</code> 
+     * for that effect. 
+     */
+    public void preventDefault();
+
+    /**
+     *  The <code>initEvent</code> method is used to initialize the value of 
+     * an <code>Event</code> created through the 
+     * <code>DocumentEvent.createEvent</code> method. This method may only 
+     * be called before the <code>Event</code> has been dispatched via the 
+     * <code>EventTarget.dispatchEvent()</code> method. If the method is 
+     * called several times before invoking 
+     * <code>EventTarget.dispatchEvent</code>, only the final invocation 
+     * takes precedence. This method has no effect if called after the event 
+     * has been dispatched. If called from a subclass of the 
+     * <code>Event</code> interface only the values specified in this method 
+     * are modified, all other attributes are left unchanged. 
+     * <br> This method sets the <code>Event.type</code> attribute to 
+     * <code>eventTypeArg</code>, and <code>Event.namespaceURI</code> to 
+     * <code>null</code>. To initialize an event with a namespace URI, use 
+     * the <code>Event.initEventNS(namespaceURIArg, eventTypeArg, ...)</code>
+     *  method. 
+     * @param eventTypeArg  Specifies <code>Event.type</code>. 
+     * @param canBubbleArg  Specifies <code>Event.bubbles</code>. This 
+     *   parameter overrides the intrinsic bubbling behavior of the event. 
+     * @param cancelableArg  Specifies <code>Event.cancelable</code>. This 
+     *   parameter overrides the intrinsic cancelable behavior of the event. 
+     */
+    public void initEvent(String eventTypeArg, 
+                          boolean canBubbleArg, 
+                          boolean cancelableArg);
+
+    /**
+     *  The namespace URI associated with this event at creation time, or 
+     * <code>null</code> if it is unspecified. 
+     * <br> For events initialized with a DOM Level 2 Events method, such as 
+     * <code>Event.initEvent()</code>, this is always <code>null</code>. 
+     * @since DOM Level 3
+     */
+    public String getNamespaceURI();
+
+    /**
+     *  This method will always return <code>false</code>, unless the event 
+     * implements the <code>CustomEvent</code> interface. 
+     * @return  <code>false</code>, unless the event object implements the 
+     *   <code>CustomEvent</code> interface. 
+     * @since DOM Level 3
+     */
+    public boolean isCustom();
+
+    /**
+     *  This method is used to prevent event listeners of the same group to be 
+     * triggered and, unlike <code>stopPropagation</code> its effect is 
+     * immediate (see ). Once it has been called, further calls to that 
+     * method have no additional effect. 
+     * <p ><b>Note:</b>  This method does not prevent the default action from 
+     * being invoked; use <code>Event.preventDefault()</code> for that 
+     * effect. 
+     * @since DOM Level 3
+     */
+    public void stopImmediatePropagation();
+
+    /**
+     *  This method will return <code>true</code> if the method 
+     * <code>Event.preventDefault()</code> has been called for this event, 
+     * <code>false</code> otherwise. 
+     * @return  <code>true</code> if <code>Event.preventDefault()</code> has 
+     *   been called for this event. 
+     * @since DOM Level 3
+     */
+    public boolean isDefaultPrevented();
+
+    /**
+     *  The <code>initEventNS</code> method is used to initialize the value of 
+     * an <code>Event</code> object and has the same behavior as 
+     * <code>Event.initEvent()</code>. 
+     * @param namespaceURIArg  Specifies <code>Event.namespaceuRI</code>, the 
+     *   namespace URI associated with this event, or <code>null</code> if 
+     *   no namespace. 
+     * @param eventTypeArg  Specifies <code>Event.type</code>, the local name 
+     *   of the event type.
+     * @param canBubbleArg  Refer to the <code>Event.initEvent()</code> 
+     *   method for a description of this parameter.
+     * @param cancelableArg  Refer to the <code>Event.initEvent()</code> 
+     *   method for a description of this parameter. 
+     * @since DOM Level 3
+     */
+    public void initEventNS(String namespaceURIArg, 
+                            String eventTypeArg, 
+                            boolean canBubbleArg, 
+                            boolean cancelableArg);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/EventException.java b/src/bind/java/org/w3c/dom/events/EventException.java
new file mode 100644 (file)
index 0000000..51763b4
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+/**
+ *  Event operations may throw an <code>EventException</code> as specified in 
+ * their method descriptions. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public class EventException extends RuntimeException {
+    public EventException(short code, String message) {
+       super(message);
+       this.code = code;
+    }
+    public short   code;
+    // EventExceptionCode
+    /**
+     *  If the <code>Event.type</code> was not specified by initializing the 
+     * event before the method was called. Specification of the 
+     * <code>Event.type</code> as <code>null</code> or an empty string will 
+     * also trigger this exception. 
+     */
+    public static final short UNSPECIFIED_EVENT_TYPE_ERR = 0;
+    /**
+     *  If the <code>Event</code> object is already dispatched in the tree. 
+     * @since DOM Level 3
+     */
+    public static final short DISPATCH_REQUEST_ERR      = 1;
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/EventListener.java b/src/bind/java/org/w3c/dom/events/EventListener.java
new file mode 100644 (file)
index 0000000..a5102b1
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+/**
+ *  The <code>EventListener</code> interface is the primary way for handling 
+ * events. Users implement the <code>EventListener</code> interface and 
+ * register their event listener on an <code>EventTarget</code>. The users 
+ * should also remove their <code>EventListener</code> from its 
+ * <code>EventTarget</code> after they have completed using the listener. 
+ * <p> Copying a <code>Node</code>, with methods such as 
+ * <code>Node.cloneNode</code> or <code>Range.cloneContents</code>, does not 
+ * copy the event listeners attached to it. Event listeners must be attached 
+ * to the newly created <code>Node</code> afterwards if so desired. 
+ * <p> Moving a <code>Node</code>, with methods <code>Document.adoptNode</code>
+ * , <code>Node.appendChild</code>, or <code>Range.extractContents</code>, 
+ * does not affect the event listeners attached to it. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface EventListener {
+    /**
+     *  This method is called whenever an event occurs of the event type for 
+     * which the <code>EventListener</code> interface was registered. 
+     * @param evt  The <code>Event</code> contains contextual information 
+     *   about the event. 
+     */
+    public void handleEvent(Event evt);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/EventTarget.java b/src/bind/java/org/w3c/dom/events/EventTarget.java
new file mode 100644 (file)
index 0000000..1be6eda
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+/**
+ *  The <code>EventTarget</code> interface is implemented by all the objects 
+ * which could be event targets in an implementation which supports the . 
+ * The interface allows registration, removal or query of event listeners, 
+ * and dispatch of events to an event target. 
+ * <p> When used with , this interface is implemented by all target nodes and 
+ * target ancestors, i.e. all DOM <code>Nodes</code> of the tree support 
+ * this interface when the implementation conforms to DOM Level 3 Events 
+ * and, therefore, this interface can be obtained by using binding-specific 
+ * casting methods on an instance of the <code>Node</code> interface. 
+ * <p> Invoking <code>addEventListener</code> or 
+ * <code>addEventListenerNS</code> multiple times on the same 
+ * <code>EventTarget</code> with the same parameters (
+ * <code>namespaceURI</code>, <code>type</code>, <code>listener</code>, and 
+ * <code>useCapture</code>) is considered to be a no-op and thus 
+ * independently of the event group. They do not cause the 
+ * <code>EventListener</code> to be called more than once and do not cause a 
+ * change in the triggering order. In order to guarantee that an event 
+ * listener will be added to the event target for the specified event group, 
+ * one needs to invoke <code>removeEventListener</code> or 
+ * <code>removeEventListenerNS</code> first. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface EventTarget {
+    /**
+     *  This method allows the registration of an event listener in the 
+     * default group and, depending on the <code>useCapture</code> 
+     * parameter, on the capture phase of the DOM event flow or its target 
+     * and bubbling phases. 
+     * @param type  Specifies the <code>Event.type</code> associated with the 
+     *   event for which the user is registering. 
+     * @param listener  The <code>listener</code> parameter takes an object 
+     *   implemented by the user which implements the 
+     *   <code>EventListener</code> interface and contains the method to be 
+     *   called when the event occurs. 
+     * @param useCapture  If true, <code>useCapture</code> indicates that the 
+     *   user wishes to add the event listener for the capture phase only, 
+     *   i.e. this event listener will not be triggered during the target 
+     *   and bubbling phases. If <code>false</code>, the event listener will 
+     *   only be triggered during the target and bubbling phases. 
+     */
+    public void addEventListener(String type, 
+                                 EventListener listener, 
+                                 boolean useCapture);
+
+    /**
+     *  This method allows the removal of event listeners from the default 
+     * group. 
+     * <br> Calling <code>removeEventListener</code> with arguments which do 
+     * not identify any currently registered <code>EventListener</code> on 
+     * the <code>EventTarget</code> has no effect. 
+     * @param type  Specifies the <code>Event.type</code> for which the user 
+     *   registered the event listener. 
+     * @param listener  The <code>EventListener</code> to be removed. 
+     * @param useCapture  Specifies whether the <code>EventListener</code> 
+     *   being removed was registered for the capture phase or not. If a 
+     *   listener was registered twice, once for the capture phase and once 
+     *   for the target and bubbling phases, each must be removed 
+     *   separately. Removal of an event listener registered for the capture 
+     *   phase does not affect the same event listener registered for the 
+     *   target and bubbling phases, and vice versa. 
+     */
+    public void removeEventListener(String type, 
+                                    EventListener listener, 
+                                    boolean useCapture);
+
+    /**
+     *  This method allows the dispatch of events into the implementation's 
+     * event model. The event target of the event is the 
+     * <code>EventTarget</code> object on which <code>dispatchEvent</code> 
+     * is called. 
+     * @param evt  The event to be dispatched. 
+     * @return  Indicates whether any of the listeners which handled the 
+     *   event called <code>Event.preventDefault()</code>. If 
+     *   <code>Event.preventDefault()</code> was called the returned value 
+     *   is <code>false</code>, else it is <code>true</code>. 
+     * @exception EventException
+     *    UNSPECIFIED_EVENT_TYPE_ERR: Raised if the <code>Event.type</code> 
+     *   was not specified by initializing the event before 
+     *   <code>dispatchEvent</code> was called. Specification of the 
+     *   <code>Event.type</code> as <code>null</code> or an empty string 
+     *   will also trigger this exception. 
+     *   <br> DISPATCH_REQUEST_ERR: Raised if the <code>Event</code> object is 
+     *   already being dispatched in the tree. 
+     *   <br> NOT_SUPPORTED_ERR: Raised if the <code>Event</code> object has 
+     *   not been created using <code>DocumentEvent.createEvent()</code> or 
+     *   does not support the interface <code>CustomEvent</code>. 
+     * @version DOM Level 3
+     */
+    public boolean dispatchEvent(Event evt)
+                                 throws EventException;
+
+    /**
+     *  This method allows the registration of an event listener in a 
+     * specified group or the default group and, depending on the 
+     * <code>useCapture</code> parameter, on the capture phase of the DOM 
+     * event flow or its target and bubbling phases. 
+     * @param namespaceURI  Specifies the <code>Event.namespaceURI</code> 
+     *   associated with the event for which the user is registering. 
+     * @param type  Specifies the <code>Event.type</code> associated with the 
+     *   event for which the user is registering. 
+     * @param listener  The <code>listener</code> parameter takes an object 
+     *   implemented by the user which implements the 
+     *   <code>EventListener</code> interface and contains the method to be 
+     *   called when the event occurs. 
+     * @param useCapture  If true, <code>useCapture</code> indicates that the 
+     *   user wishes to add the event listener for the capture phase only, 
+     *   i.e. this event listener will not be triggered during the target 
+     *   and bubbling phases. If <code>false</code>, the event listener will 
+     *   only be triggered during the target and bubbling phases. 
+     * @param evtGroup  The object that represents the event group to 
+     *   associate with the <code>EventListener</code> (see also ). Use 
+     *   <code>null</code> to attach the event listener to the default 
+     *   group. 
+     * @since DOM Level 3
+     */
+    public void addEventListenerNS(String namespaceURI, 
+                                   String type, 
+                                   EventListener listener, 
+                                   boolean useCapture, 
+                                   Object evtGroup);
+
+    /**
+     *  This method allows the removal of an event listener, independently of 
+     * the associated event group. 
+     * <br> Calling <code>removeEventListenerNS</code> with arguments which do 
+     * not identify any currently registered <code>EventListener</code> on 
+     * the <code>EventTarget</code> has no effect. 
+     * @param namespaceURI  Specifies the <code>Event.namespaceURI</code> 
+     *   associated with the event for which the user registered the event 
+     *   listener. 
+     * @param type  Specifies the <code>Event.type</code> associated with the 
+     *   event for which the user registered the event listener. 
+     * @param listener  The <code>EventListener</code> parameter indicates 
+     *   the <code>EventListener</code> to be removed. 
+     * @param useCapture  Specifies whether the <code>EventListener</code> 
+     *   being removed was registered for the capture phase or not. If a 
+     *   listener was registered twice, once for the capture phase and once 
+     *   for the target and bubbling phases, each must be removed 
+     *   separately. Removal of an event listener registered for the capture 
+     *   phase does not affect the same event listener registered for the 
+     *   target and bubbling phases, and vice versa. 
+     * @since DOM Level 3
+     */
+    public void removeEventListenerNS(String namespaceURI, 
+                                      String type, 
+                                      EventListener listener, 
+                                      boolean useCapture);
+
+    /**
+     *  This method allows the DOM application to know if an event listener, 
+     * attached to this <code>EventTarget</code> or one of its ancestors, 
+     * will be triggered by the specified event type during the dispatch of 
+     * the event to this event target or one of its descendants. 
+     * @param namespaceURI  Specifies the <code>Event.namespaceURI</code> 
+     *   associated with the event. 
+     * @param type  Specifies the <code>Event.type</code> associated with the 
+     *   event. 
+     * @return  <code>true</code> if an event listener will be triggered on 
+     *   the <code>EventTarget</code> with the specified event type, 
+     *   <code>false</code> otherwise. 
+     * @since DOM Level 3
+     */
+    public boolean willTriggerNS(String namespaceURI, 
+                                 String type);
+
+    /**
+     *  This method allows the DOM application to know if this 
+     * <code>EventTarget</code> contains an event listener registered for 
+     * the specified event type. This is useful for determining at which 
+     * nodes within a hierarchy altered handling of specific event types has 
+     * been introduced, but should not be used to determine whether the 
+     * specified event type triggers an event listener (see 
+     * <code>EventTarget.willTriggerNS()</code>). 
+     * @param namespaceURI  Specifies the <code>Event.namespaceURI</code> 
+     *   associated with the event. 
+     * @param type  Specifies the <code>Event.type</code> associated with the 
+     *   event. 
+     * @return  <code>true</code> if an event listener is registered on this 
+     *   <code>EventTarget</code> for the specified event type, 
+     *   <code>false</code> otherwise. 
+     * @since DOM Level 3
+     */
+    public boolean hasEventListenerNS(String namespaceURI, 
+                                      String type);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/KeyboardEvent.java b/src/bind/java/org/w3c/dom/events/KeyboardEvent.java
new file mode 100644 (file)
index 0000000..e166f5f
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.views.AbstractView;
+
+/**
+ *  The <code>KeyboardEvent</code> interface provides specific contextual 
+ * information associated with keyboard devices. Each keyboard event 
+ * references a key using an identifier. Keyboard events are commonly 
+ * directed at the element that has the focus. 
+ * <p> The <code>KeyboardEvent</code> interface provides convenient attributes 
+ * for some common modifiers keys: <code>KeyboardEvent.ctrlKey</code>, 
+ * <code>KeyboardEvent.shiftKey</code>, <code>KeyboardEvent.altKey</code>, 
+ * <code>KeyboardEvent.metaKey</code>. These attributes are equivalent to 
+ * use the method 
+ * <code>KeyboardEvent.getModifierState(keyIdentifierArg)</code> with 
+ * "Control", "Shift", "Alt", or "Meta" respectively. 
+ * <p> To create an instance of the <code>KeyboardEvent</code> interface, use 
+ * the <code>DocumentEvent.createEvent("KeyboardEvent")</code> method call. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 3
+ */
+public interface KeyboardEvent extends UIEvent {
+    // KeyLocationCode
+    /**
+     *  The key activation is not distinguished as the left or right version 
+     * of the key, and did not originate from the numeric keypad (or did not 
+     * originate with a virtual key corresponding to the numeric keypad). 
+     * Example: the 'Q' key on a PC 101 Key US keyboard. 
+     */
+    public static final int DOM_KEY_LOCATION_STANDARD = 0x00;
+    /**
+     *  The key activated is in the left key location (there is more than one 
+     * possible location for this key). Example: the left Shift key on a PC 
+     * 101 Key US keyboard. 
+     */
+    public static final int DOM_KEY_LOCATION_LEFT     = 0x01;
+    /**
+     *  The key activation is in the right key location (there is more than 
+     * one possible location for this key). Example: the right Shift key on 
+     * a PC 101 Key US keyboard. 
+     */
+    public static final int DOM_KEY_LOCATION_RIGHT    = 0x02;
+    /**
+     *  The key activation originated on the numeric keypad or with a virtual 
+     * key corresponding to the numeric keypad. Example: the '1' key on a PC 
+     * 101 Key US keyboard located on the numeric pad. 
+     */
+    public static final int DOM_KEY_LOCATION_NUMPAD   = 0x03;
+
+    /**
+     *  <code>keyIdentifier</code> holds the identifier of the key. The key 
+     * identifiers are defined in Appendix A.2 "". Implementations that are 
+     * unable to identify a key must use the key identifier 
+     * <code>"Unidentified"</code>. 
+     */
+    public String getKeyIdentifier();
+
+    /**
+     *  The <code>keyLocation</code> attribute contains an indication of the 
+     * location of they key on the device, as described in . 
+     */
+    public int getKeyLocation();
+
+    /**
+     *  <code>true</code> if the control (Ctrl) key modifier is activated. 
+     */
+    public boolean getCtrlKey();
+
+    /**
+     *  <code>true</code> if the shift (Shift) key modifier is activated. 
+     */
+    public boolean getShiftKey();
+
+    /**
+     *  <code>true</code> if the alternative (Alt) key modifier is activated. 
+     * <p ><b>Note:</b>  The Option key modifier on Macintosh systems must be 
+     * represented using this key modifier. 
+     */
+    public boolean getAltKey();
+
+    /**
+     *  <code>true</code> if the meta (Meta) key modifier is activated. 
+     * <p ><b>Note:</b>  The Command key modifier on Macintosh systems must be 
+     * represented using this key modifier. 
+     */
+    public boolean getMetaKey();
+
+    /**
+     *  This methods queries the state of a modifier using a key identifier. 
+     * See also . 
+     * @param keyIdentifierArg  A modifier key identifier. Common modifier 
+     *   keys are <code>"Alt"</code>, <code>"AltGraph"</code>, 
+     *   <code>"CapsLock"</code>, <code>"Control"</code>, <code>"Meta"</code>
+     *   , <code>"NumLock"</code>, <code>"Scroll"</code>, or 
+     *   <code>"Shift"</code>. 
+     * <p ><b>Note:</b>    If an application wishes to distinguish between 
+     *   right and left modifiers, this information could be deduced using 
+     *   keyboard events and <code>KeyboardEvent.keyLocation</code>. 
+     * @return  <code>true</code> if it is modifier key and the modifier is 
+     *   activated, <code>false</code> otherwise. 
+     */
+    public boolean getModifierState(String keyIdentifierArg);
+
+    /**
+     *  The <code>initKeyboardEvent</code> method is used to initialize the 
+     * value of a <code>KeyboardEvent</code> object and has the same 
+     * behavior as <code>UIEvent.initUIEvent()</code>. The value of 
+     * <code>UIEvent.detail</code> remains undefined. 
+     * @param typeArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param keyIdentifierArg  Specifies 
+     *   <code>KeyboardEvent.keyIdentifier</code>. 
+     * @param keyLocationArg  Specifies <code>KeyboardEvent.keyLocation</code>
+     *   . 
+     * @param modifiersList  A <a href='http://www.w3.org/TR/2000/REC-xml-20001006#NT-S'>white space</a> separated list of modifier key identifiers to be activated on this 
+     *   object. 
+     */
+    public void initKeyboardEvent(String typeArg, 
+                                  boolean canBubbleArg, 
+                                  boolean cancelableArg, 
+                                  AbstractView viewArg, 
+                                  String keyIdentifierArg, 
+                                  int keyLocationArg, 
+                                  String modifiersList);
+
+    /**
+     *  The <code>initKeyboardEventNS</code> method is used to initialize the 
+     * value of a <code>KeyboardEvent</code> object and has the same 
+     * behavior as <code>UIEvent.initUIEventNS()</code>. The value of 
+     * <code>UIEvent.detail</code> remains undefined. 
+     * @param namespaceURI  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param typeArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>UIEvent.initUIEventNS()</code>
+     *    method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param keyIdentifierArg  Refer to the 
+     *   <code>KeyboardEvent.initKeyboardEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param keyLocationArg  Refer to the 
+     *   <code>KeyboardEvent.initKeyboardEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param modifiersList  A <a href='http://www.w3.org/TR/2000/REC-xml-20001006#NT-S'>white space</a> separated list of modifier key identifiers to be activated on this 
+     *   object. As an example, <code>"Control Alt"</code> will activated 
+     *   the control and alt modifiers. 
+     */
+    public void initKeyboardEventNS(String namespaceURI, 
+                                    String typeArg, 
+                                    boolean canBubbleArg, 
+                                    boolean cancelableArg, 
+                                    AbstractView viewArg, 
+                                    String keyIdentifierArg, 
+                                    int keyLocationArg, 
+                                    String modifiersList);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/MouseEvent.java b/src/bind/java/org/w3c/dom/events/MouseEvent.java
new file mode 100644 (file)
index 0000000..9877e8d
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.views.AbstractView;
+
+/**
+ * The <code>MouseEvent</code> interface provides specific contextual 
+ * information associated with Mouse events.
+ * <p> In the case of nested elements mouse events are always targeted at the 
+ * most deeply nested element. Ancestors of the targeted element may use 
+ * bubbling to obtain notification of mouse events which occur within theirs 
+ * descendent elements. 
+ * <p> To create an instance of the <code>MouseEvent</code> interface, use the 
+ * <code>DocumentEvent.createEvent("MouseEvent")</code> method call. 
+ * <p ><b>Note:</b>  When initializing <code>MouseEvent</code> objects using 
+ * <code>initMouseEvent</code> or <code>initMouseEventNS</code>, 
+ * implementations should use the client coordinates <code>clientX</code> 
+ * and <code>clientY</code> for calculation of other coordinates (such as 
+ * target coordinates exposed by DOM Level 0 implementations). 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface MouseEvent extends UIEvent {
+    /**
+     * The horizontal coordinate at which the event occurred relative to the 
+     * origin of the screen coordinate system.
+     */
+    public int getScreenX();
+
+    /**
+     * The vertical coordinate at which the event occurred relative to the 
+     * origin of the screen coordinate system.
+     */
+    public int getScreenY();
+
+    /**
+     * The horizontal coordinate at which the event occurred relative to the 
+     * DOM implementation's client area.
+     */
+    public int getClientX();
+
+    /**
+     * The vertical coordinate at which the event occurred relative to the DOM 
+     * implementation's client area.
+     */
+    public int getClientY();
+
+    /**
+     *  <code>true</code> if the control (Ctrl) key modifier is activated. 
+     */
+    public boolean getCtrlKey();
+
+    /**
+     *  <code>true</code> if the shift (Shift) key modifier is activated. 
+     */
+    public boolean getShiftKey();
+
+    /**
+     *  <code>true</code> if the alt (alternative) key modifier is activated. 
+     * <p ><b>Note:</b>  The Option key modifier on Macintosh systems must be 
+     * represented using this key modifier. 
+     */
+    public boolean getAltKey();
+
+    /**
+     *  <code>true</code> if the meta (Meta) key modifier is activated. 
+     * <p ><b>Note:</b>  The Command key modifier on Macintosh system must be 
+     * represented using this meta key. 
+     */
+    public boolean getMetaKey();
+
+    /**
+     *  During mouse events caused by the depression or release of a mouse 
+     * button, <code>button</code> is used to indicate which mouse button 
+     * changed state. <code>0</code> indicates the normal button of the 
+     * mouse (in general on the left or the one button on Macintosh mice, 
+     * used to activate a button or select text). <code>2</code> indicates 
+     * the contextual property (in general on the right, used to display a 
+     * context menu) button of the mouse if present. <code>1</code> 
+     * indicates the extra (in general in the middle and often combined with 
+     * the mouse wheel) button. Some mice may provide or simulate more 
+     * buttons, and values higher than <code>2</code> can be used to 
+     * represent such buttons. 
+     */
+    public short getButton();
+
+    /**
+     *  Used to identify a secondary <code>EventTarget</code> related to a UI 
+     * event. Currently this attribute is used with the mouseover event to 
+     * indicate the <code>EventTarget</code> which the pointing device 
+     * exited and with the mouseout event to indicate the 
+     * <code>EventTarget</code> which the pointing device entered.
+     */
+    public EventTarget getRelatedTarget();
+
+    /**
+     *  The <code>initMouseEvent</code> method is used to initialize the value 
+     * of a <code>MouseEvent</code> object and has the same behavior as 
+     * <code>UIEvent.initUIEvent()</code>. 
+     * @param typeArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param detailArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param screenXArg  Specifies <code>MouseEvent.screenX</code>. 
+     * @param screenYArg  Specifies <code>MouseEvent.screenY</code>. 
+     * @param clientXArg  Specifies <code>MouseEvent.clientX</code>. 
+     * @param clientYArg  Specifies <code>MouseEvent.clientY</code>. 
+     * @param ctrlKeyArg  Specifies <code>MouseEvent.ctrlKey</code>. 
+     * @param altKeyArg  Specifies <code>MouseEvent.altKey</code>. 
+     * @param shiftKeyArg  Specifies <code>MouseEvent.shiftKey</code>. 
+     * @param metaKeyArg  Specifies <code>MouseEvent.metaKey</code>. 
+     * @param buttonArg  Specifies <code>MouseEvent.button</code>. 
+     * @param relatedTargetArg  Specifies 
+     *   <code>MouseEvent.relatedTarget</code>. 
+     */
+    public void initMouseEvent(String typeArg, 
+                               boolean canBubbleArg, 
+                               boolean cancelableArg, 
+                               AbstractView viewArg, 
+                               int detailArg, 
+                               int screenXArg, 
+                               int screenYArg, 
+                               int clientXArg, 
+                               int clientYArg, 
+                               boolean ctrlKeyArg, 
+                               boolean altKeyArg, 
+                               boolean shiftKeyArg, 
+                               boolean metaKeyArg, 
+                               short buttonArg, 
+                               EventTarget relatedTargetArg);
+
+    /**
+     *  This methods queries the state of a modifier using a key identifier. 
+     * See also . 
+     * @param keyIdentifierArg  A modifier key identifier, as defined by the 
+     *   <code>KeyboardEvent.keyIdentifier</code> attribute. Common modifier 
+     *   keys are <code>"Alt"</code>, <code>"AltGraph"</code>, 
+     *   <code>"CapsLock"</code>, <code>"Control"</code>, <code>"Meta"</code>
+     *   , <code>"NumLock"</code>, <code>"Scroll"</code>, or 
+     *   <code>"Shift"</code>. 
+     * <p ><b>Note:</b>    If an application wishes to distinguish between 
+     *   right and left modifiers, this information could be deduced using 
+     *   keyboard events and <code>KeyboardEvent.keyLocation</code>. 
+     * @return  <code>true</code> if it is modifier key and the modifier is 
+     *   activated, <code>false</code> otherwise. 
+     * @since DOM Level 3
+     */
+    public boolean getModifierState(String keyIdentifierArg);
+
+    /**
+     *  The <code>initMouseEventNS</code> method is used to initialize the 
+     * value of a <code>MouseEvent</code> object and has the same behavior 
+     * as <code>UIEvent.initUIEventNS()</code>. 
+     * @param namespaceURI  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param typeArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>UIEvent.initUIEventNS()</code>
+     *    method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param detailArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param screenXArg  Refer to the 
+     *   <code>MouseEvent.initMouseEvent()</code> method for a description 
+     *   of this parameter. 
+     * @param screenYArg  Refer to the 
+     *   <code>MouseEvent.initMouseEvent()</code> method for a description 
+     *   of this parameter. 
+     * @param clientXArg  Refer to the 
+     *   <code>MouseEvent.initMouseEvent()</code> method for a description 
+     *   of this parameter. 
+     * @param clientYArg  Refer to the 
+     *   <code>MouseEvent.initMouseEvent()</code> method for a description 
+     *   of this parameter. 
+     * @param buttonArg  Refer to the <code>MouseEvent.initMouseEvent()</code>
+     *    method for a description of this parameter. 
+     * @param relatedTargetArg  Refer to the 
+     *   <code>MouseEvent.initMouseEvent()</code> method for a description 
+     *   of this parameter. 
+     * @param modifiersList  A <a href='http://www.w3.org/TR/2000/REC-xml-20001006#NT-S'>white space</a> separated list of modifier key identifiers to be activated on this 
+     *   object. As an example, <code>"Control Alt"</code> will activated 
+     *   the control and alt modifiers. 
+     * @since DOM Level 3
+     */
+    public void initMouseEventNS(String namespaceURI, 
+                                 String typeArg, 
+                                 boolean canBubbleArg, 
+                                 boolean cancelableArg, 
+                                 AbstractView viewArg, 
+                                 int detailArg, 
+                                 int screenXArg, 
+                                 int screenYArg, 
+                                 int clientXArg, 
+                                 int clientYArg, 
+                                 short buttonArg, 
+                                 EventTarget relatedTargetArg, 
+                                 String modifiersList);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/MutationEvent.java b/src/bind/java/org/w3c/dom/events/MutationEvent.java
new file mode 100644 (file)
index 0000000..12d8b2f
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.Node;
+
+/**
+ * The <code>MutationEvent</code> interface provides specific contextual 
+ * information associated with Mutation events. 
+ * <p> To create an instance of the <code>MutationEvent</code> interface, use 
+ * the <code>DocumentEvent.createEvent("MutationEvent")</code> method call. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface MutationEvent extends Event {
+    // attrChangeType
+    /**
+     * The <code>Attr</code> was modified in place.
+     */
+    public static final short MODIFICATION              = 1;
+    /**
+     * The <code>Attr</code> was just added.
+     */
+    public static final short ADDITION                  = 2;
+    /**
+     * The <code>Attr</code> was just removed.
+     */
+    public static final short REMOVAL                   = 3;
+
+    /**
+     *  <code>relatedNode</code> is used to identify a secondary node related 
+     * to a mutation event. For example, if a mutation event is dispatched 
+     * to a node indicating that its parent has changed, the 
+     * <code>relatedNode</code> is the changed parent. If an event is 
+     * instead dispatched to a subtree indicating a node was changed within 
+     * it, the <code>relatedNode</code> is the changed node. In the case of 
+     * the 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code> 
+     * event it indicates the <code>Attr</code> node which was modified, 
+     * added, or removed. 
+     */
+    public Node getRelatedNode();
+
+    /**
+     *  <code>prevValue</code> indicates the previous value of the 
+     * <code>Attr</code> node in 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code> 
+     * events, and of the <code>CharacterData</code> node in 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMCharacterDataModified"}</code>
+     *  events. 
+     */
+    public String getPrevValue();
+
+    /**
+     *  <code>newValue</code> indicates the new value of the <code>Attr</code> 
+     * node in 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code> 
+     * events, and of the <code>CharacterData</code> node in 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMCharacterDataModified"}</code>
+     *  events. 
+     */
+    public String getNewValue();
+
+    /**
+     *  <code>attrName</code> indicates the name of the changed 
+     * <code>Attr</code> node in a 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code> 
+     * event. 
+     */
+    public String getAttrName();
+
+    /**
+     *  <code>attrChange</code> indicates the type of change which triggered 
+     * the 
+     * <code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code> 
+     * event. The values can be <code>MODIFICATION</code>, 
+     * <code>ADDITION</code>, or <code>REMOVAL</code>. 
+     */
+    public short getAttrChange();
+
+    /**
+     *  The <code>initMutationEvent</code> method is used to initialize the 
+     * value of a <code>MutationEvent</code> object and has the same 
+     * behavior as <code>Event.initEvent()</code>. 
+     * @param typeArg  Refer to the <code>Event.initEvent()</code> method for 
+     *   a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>Event.initEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>Event.initEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param relatedNodeArg  Specifies <code>MutationEvent.relatedNode</code>
+     *   . 
+     * @param prevValueArg  Specifies <code>MutationEvent.prevValue</code>. 
+     *   This value may be null. 
+     * @param newValueArg  Specifies <code>MutationEvent.newValue</code>. 
+     *   This value may be null. 
+     * @param attrNameArg  Specifies <code>MutationEvent.attrname</code>. 
+     *   This value may be null. 
+     * @param attrChangeArg  Specifies <code>MutationEvent.attrChange</code>. 
+     *   This value may be null. 
+     */
+    public void initMutationEvent(String typeArg, 
+                                  boolean canBubbleArg, 
+                                  boolean cancelableArg, 
+                                  Node relatedNodeArg, 
+                                  String prevValueArg, 
+                                  String newValueArg, 
+                                  String attrNameArg, 
+                                  short attrChangeArg);
+
+    /**
+     *  The <code>initMutationEventNS</code> method is used to initialize the 
+     * value of a <code>MutationEvent</code> object and has the same 
+     * behavior as <code>Event.initEventNS()</code>. 
+     * @param namespaceURI  Refer to the <code>Event.initEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param typeArg  Refer to the <code>Event.initEventNS()</code> method 
+     *   for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>Event.initEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>Event.initEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param relatedNodeArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param prevValueArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param newValueArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param attrNameArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param attrChangeArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @since DOM Level 3
+     */
+    public void initMutationEventNS(String namespaceURI, 
+                                    String typeArg, 
+                                    boolean canBubbleArg, 
+                                    boolean cancelableArg, 
+                                    Node relatedNodeArg, 
+                                    String prevValueArg, 
+                                    String newValueArg, 
+                                    String attrNameArg, 
+                                    short attrChangeArg);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/MutationNameEvent.java b/src/bind/java/org/w3c/dom/events/MutationNameEvent.java
new file mode 100644 (file)
index 0000000..f5c2171
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.Node;
+
+/**
+ *  The <code>MutationNameEvent</code> interface provides specific contextual 
+ * information associated with Mutation name event types. 
+ * <p> To create an instance of the <code>MutationNameEvent</code> interface, 
+ * use the <code>Document.createEvent("MutationNameEvent")</code> method 
+ * call. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 3
+ */
+public interface MutationNameEvent extends MutationEvent {
+    /**
+     *  The previous value of the <code>relatedNode</code>'s 
+     * <code>namespaceURI</code>. 
+     */
+    public String getPrevNamespaceURI();
+
+    /**
+     *  The previous value of the <code>relatedNode</code>'s 
+     * <code>nodeName</code>. 
+     */
+    public String getPrevNodeName();
+
+    /**
+     *  The <code>initMutationNameEvent</code> method is used to initialize 
+     * the value of a <code>MutationNameEvent</code> object and has the same 
+     * behavior as <code>MutationEvent.initMutationEvent()</code>. 
+     * @param typeArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param canBubbleArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param cancelableArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param relatedNodeArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param prevNamespaceURIArg  Specifies 
+     *   <code>MutationNameEvent.prevNamespaceURI</code>. This value may be 
+     *   <code>null</code>.
+     * @param prevNodeNameArg  Specifies 
+     *   <code>MutationNameEvent.prevNodeName</code>. 
+     * @since DOM Level 3
+     */
+    public void initMutationNameEvent(String typeArg, 
+                                      boolean canBubbleArg, 
+                                      boolean cancelableArg, 
+                                      Node relatedNodeArg, 
+                                      String prevNamespaceURIArg, 
+                                      String prevNodeNameArg);
+
+    /**
+     *  The <code>initMutationNameEventNS</code> method is used to initialize 
+     * the value of a <code>MutationNameEvent</code> object and has the same 
+     * behavior as <code>MutationEvent.initMutationEventNS()</code>. 
+     * @param namespaceURI  Refer to the 
+     *   <code>MutationEvent.initMutationEventNS()</code> method for a 
+     *   description of this parameter. 
+     * @param typeArg  Refer to the 
+     *   <code>MutationEvent.initMutationEventNS()</code> method for a 
+     *   description of this parameter. 
+     * @param canBubbleArg  Refer to the 
+     *   <code>MutationEvent.initMutationEventNS()</code> method for a 
+     *   description of this parameter. 
+     * @param cancelableArg  Refer to the 
+     *   <code>MutationEvent.initMutationEventNS()</code> method for a 
+     *   description of this parameter. 
+     * @param relatedNodeArg  Refer to the 
+     *   <code>MutationEvent.initMutationEventNS()</code> method for a 
+     *   description of this parameter. 
+     * @param prevNamespaceURIArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @param prevNodeNameArg  Refer to the 
+     *   <code>MutationEvent.initMutationEvent()</code> method for a 
+     *   description of this parameter. 
+     * @since DOM Level 3
+     */
+    public void initMutationNameEventNS(String namespaceURI, 
+                                        String typeArg, 
+                                        boolean canBubbleArg, 
+                                        boolean cancelableArg, 
+                                        Node relatedNodeArg, 
+                                        String prevNamespaceURIArg, 
+                                        String prevNodeNameArg);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/TextEvent.java b/src/bind/java/org/w3c/dom/events/TextEvent.java
new file mode 100644 (file)
index 0000000..4ba5f5a
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.views.AbstractView;
+
+/**
+ * The <code>TextEvent</code> interface provides specific contextual 
+ * information associated with Text Events. 
+ * <p> To create an instance of the <code>TextEvent</code> interface, use the 
+ * <code>DocumentEvent.createEvent("TextEvent")</code> method call. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 3
+ */
+public interface TextEvent extends UIEvent {
+    /**
+     *  <code>data</code> holds the value of the characters generated by the 
+     * character device. This may be a single Unicode character or a 
+     * non-empty sequence of Unicode characters [Unicode]. Characters should be normalized as defined by the Unicode 
+     * normalization form NFC, defined in [<a href='http://www.unicode.org/unicode/reports/tr15/'>UTR #15</a>]. This 
+     * attribute cannot be null or contain the empty string. 
+     */
+    public String getData();
+
+    /**
+     *  The <code>initTextEvent</code> method is used to initialize the value 
+     * of a <code>TextEvent</code> object and has the same behavior as 
+     * <code>UIEvent.initUIEvent()</code>. The value of 
+     * <code>UIEvent.detail</code> remains undefined. 
+     * @param typeArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param dataArg  Specifies <code>TextEvent.data</code>. 
+     */
+    public void initTextEvent(String typeArg, 
+                              boolean canBubbleArg, 
+                              boolean cancelableArg, 
+                              AbstractView viewArg, 
+                              String dataArg);
+
+    /**
+     *  The <code>initTextEventNS</code> method is used to initialize the 
+     * value of a <code>TextEvent</code> object and has the same behavior as 
+     * <code>UIEvent.initUIEventNS()</code>. The value of 
+     * <code>UIEvent.detail</code> remains undefined. 
+     * @param namespaceURI  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param type  Refer to the <code>UIEvent.initUIEventNS()</code> method 
+     *   for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>UIEvent.initUIEventNS()</code>
+     *    method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param dataArg  Refer to the <code>TextEvent.initTextEvent()</code> 
+     *   method for a description of this parameter. 
+     */
+    public void initTextEventNS(String namespaceURI, 
+                                String type, 
+                                boolean canBubbleArg, 
+                                boolean cancelableArg, 
+                                AbstractView viewArg, 
+                                String dataArg);
+
+}
diff --git a/src/bind/java/org/w3c/dom/events/UIEvent.java b/src/bind/java/org/w3c/dom/events/UIEvent.java
new file mode 100644 (file)
index 0000000..e4a819c
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2003 World Wide Web Consortium,
+ *
+ * (Massachusetts Institute of Technology, European Research Consortium for
+ * Informatics and Mathematics, Keio University). All Rights Reserved. This
+ * work is distributed under the W3C(r) Software License [1] in the hope that
+ * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ */
+
+package org.w3c.dom.events;
+
+import org.w3c.dom.views.AbstractView;
+
+/**
+ *  The <code>UIEvent</code> interface provides specific contextual 
+ * information associated with User Interface events. 
+ * <p> To create an instance of the <code>UIEvent</code> interface, use the 
+ * <code>DocumentEvent.createEvent("UIEvent")</code> method call. 
+ * <p>See also the <a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>Document Object Model (DOM) Level 3 Events Specification</a>.
+ * @since DOM Level 2
+ */
+public interface UIEvent extends Event {
+    /**
+     * The <code>view</code> attribute identifies the <code>AbstractView</code>
+     *  from which the event was generated.
+     */
+    public AbstractView getView();
+
+    /**
+     * Specifies some detail information about the <code>Event</code>, 
+     * depending on the type of event.
+     */
+    public int getDetail();
+
+    /**
+     *  The <code>initUIEvent</code> method is used to initialize the value of 
+     * a <code>UIEvent</code> object and has the same behavior as 
+     * <code>Event.initEvent()</code>. 
+     * @param typeArg  Refer to the <code>Event.initEvent()</code> method for 
+     *   a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>Event.initEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>Event.initEvent()</code> 
+     *   method for a description of this parameter. 
+     * @param viewArg Specifies <code>UIEvent.view</code>.
+     * @param detailArg Specifies <code>UIEvent.detail</code>.
+     */
+    public void initUIEvent(String typeArg, 
+                            boolean canBubbleArg, 
+                            boolean cancelableArg, 
+                            AbstractView viewArg, 
+                            int detailArg);
+
+    /**
+     *  The <code>initUIEventNS</code> method is used to initialize the value 
+     * of a <code>UIEvent</code> object and has the same behavior as 
+     * <code>Event.initEventNS()</code>. 
+     * @param namespaceURI  Refer to the <code>Event.initEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param typeArg  Refer to the <code>Event.initEventNS()</code> method 
+     *   for a description of this parameter. 
+     * @param canBubbleArg  Refer to the <code>Event.initEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param cancelableArg  Refer to the <code>Event.initEventNS()</code> 
+     *   method for a description of this parameter. 
+     * @param viewArg  Refer to the <code>UIEvent.initUIEvent()</code> method 
+     *   for a description of this parameter. 
+     * @param detailArg  Refer to the <code>UIEvent.initUIEvent()</code> 
+     *   method for a description of this parameter. 
+     * @since DOM Level 3
+     */
+    public void initUIEventNS(String namespaceURI, 
+                              String typeArg, 
+                              boolean canBubbleArg, 
+                              boolean cancelableArg, 
+                              AbstractView viewArg, 
+                              int detailArg);
+
+}