001    /*
002     * Copyright (c) 2000 World Wide Web Consortium,
003     * (Massachusetts Institute of Technology, Institut National de
004     * Recherche en Informatique et en Automatique, Keio University). All
005     * Rights Reserved. This program is distributed under the W3C's Software
006     * Intellectual Property License. This program is distributed in the
007     * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
008     * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
009     * PURPOSE.
010     * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
011     */
012    
013    package org.w3c.dom.events;
014    
015    import org.w3c.dom.views.AbstractView;
016    
017    /**
018     * The <code>MouseEvent</code> interface provides specific contextual
019     * information associated with Mouse events.
020     * <p>The <code>detail</code> attribute inherited from <code>UIEvent</code>
021     * indicates the number of times a mouse button has been pressed and
022     * released over the same screen location during a user action. The
023     * attribute value is 1 when the user begins this action and increments by 1
024     * for each full sequence of pressing and releasing. If the user moves the
025     * mouse between the mousedown and mouseup the value will be set to 0,
026     * indicating that no click is occurring.
027     * <p>In the case of nested elements mouse events are always targeted at the
028     * most deeply nested element. Ancestors of the targeted element may use
029     * bubbling to obtain notification of mouse events which occur within its
030     * descendent elements.
031     * <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification</a>.
032     * @since DOM Level 2
033     */
034    public interface MouseEvent extends UIEvent {
035        /**
036         * The horizontal coordinate at which the event occurred relative to the
037         * origin of the screen coordinate system.
038         */
039        public int getScreenX();
040    
041        /**
042         * The vertical coordinate at which the event occurred relative to the
043         * origin of the screen coordinate system.
044         */
045        public int getScreenY();
046    
047        /**
048         * The horizontal coordinate at which the event occurred relative to the
049         * DOM implementation's client area.
050         */
051        public int getClientX();
052    
053        /**
054         * The vertical coordinate at which the event occurred relative to the DOM
055         * implementation's client area.
056         */
057        public int getClientY();
058    
059        /**
060         * Used to indicate whether the 'ctrl' key was depressed during the firing
061         * of the event.
062         */
063        public boolean getCtrlKey();
064    
065        /**
066         * Used to indicate whether the 'shift' key was depressed during the
067         * firing of the event.
068         */
069        public boolean getShiftKey();
070    
071        /**
072         * Used to indicate whether the 'alt' key was depressed during the firing
073         * of the event. On some platforms this key may map to an alternative
074         * key name.
075         */
076        public boolean getAltKey();
077    
078        /**
079         * Used to indicate whether the 'meta' key was depressed during the firing
080         * of the event. On some platforms this key may map to an alternative
081         * key name.
082         */
083        public boolean getMetaKey();
084    
085        /**
086         * During mouse events caused by the depression or release of a mouse
087         * button, <code>button</code> is used to indicate which mouse button
088         * changed state. The values for <code>button</code> range from zero to
089         * indicate the left button of the mouse, one to indicate the middle
090         * button if present, and two to indicate the right button. For mice
091         * configured for left handed use in which the button actions are
092         * reversed the values are instead read from right to left.
093         */
094        public short getButton();
095    
096        /**
097         * Used to identify a secondary <code>EventTarget</code> related to a UI
098         * event. Currently this attribute is used with the mouseover event to
099         * indicate the <code>EventTarget</code> which the pointing device
100         * exited and with the mouseout event to indicate the
101         * <code>EventTarget</code> which the pointing device entered.
102         */
103        public EventTarget getRelatedTarget();
104    
105        /**
106         * The <code>initMouseEvent</code> method is used to initialize the value
107         * of a <code>MouseEvent</code> created through the
108         * <code>DocumentEvent</code> interface. This method may only be called
109         * before the <code>MouseEvent</code> has been dispatched via the
110         * <code>dispatchEvent</code> method, though it may be called multiple
111         * times during that phase if necessary. If called multiple times, the
112         * final invocation takes precedence.
113         * @param typeArg Specifies the event type.
114         * @param canBubbleArg Specifies whether or not the event can bubble.
115         * @param cancelableArg Specifies whether or not the event's default
116         *   action can be prevented.
117         * @param viewArg Specifies the <code>Event</code>'s
118         *   <code>AbstractView</code>.
119         * @param detailArg Specifies the <code>Event</code>'s mouse click count.
120         * @param screenXArg Specifies the <code>Event</code>'s screen x
121         *   coordinate
122         * @param screenYArg Specifies the <code>Event</code>'s screen y
123         *   coordinate
124         * @param clientXArg Specifies the <code>Event</code>'s client x
125         *   coordinate
126         * @param clientYArg Specifies the <code>Event</code>'s client y
127         *   coordinate
128         * @param ctrlKeyArg Specifies whether or not control key was depressed
129         *   during the <code>Event</code>.
130         * @param altKeyArg Specifies whether or not alt key was depressed during
131         *   the <code>Event</code>.
132         * @param shiftKeyArg Specifies whether or not shift key was depressed
133         *   during the <code>Event</code>.
134         * @param metaKeyArg Specifies whether or not meta key was depressed
135         *   during the <code>Event</code>.
136         * @param buttonArg Specifies the <code>Event</code>'s mouse button.
137         * @param relatedTargetArg Specifies the <code>Event</code>'s related
138         *   <code>EventTarget</code>.
139         */
140        public void initMouseEvent(String typeArg,
141                                   boolean canBubbleArg,
142                                   boolean cancelableArg,
143                                   AbstractView viewArg,
144                                   int detailArg,
145                                   int screenXArg,
146                                   int screenYArg,
147                                   int clientXArg,
148                                   int clientYArg,
149                                   boolean ctrlKeyArg,
150                                   boolean altKeyArg,
151                                   boolean shiftKeyArg,
152                                   boolean metaKeyArg,
153                                   short buttonArg,
154                                   EventTarget relatedTargetArg);
155    
156    }