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
013package org.w3c.dom.events;
014
015import 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 */
034public 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}