2 * Jexer - Java Text User Interface
4 * The MIT License (MIT)
6 * Copyright (C) 2019 Kevin Lamonte
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
32 * This class encapsulates several kinds of mouse input events. Note that
33 * the relative (x,y) ARE MUTABLE: TWidget's onMouse() handlers perform that
34 * update during event dispatching.
36 public class TMouseEvent
extends TInputEvent
{
38 // ------------------------------------------------------------------------
39 // Constants --------------------------------------------------------------
40 // ------------------------------------------------------------------------
43 * The type of event generated.
47 * Mouse motion. X and Y will have screen coordinates.
52 * Mouse button down. X and Y will have screen coordinates.
57 * Mouse button up. X and Y will have screen coordinates.
62 * Mouse double-click. X and Y will have screen coordinates.
67 // ------------------------------------------------------------------------
68 // Variables --------------------------------------------------------------
69 // ------------------------------------------------------------------------
72 * Type of event, one of MOUSE_MOTION, MOUSE_UP, or MOUSE_DOWN.
77 * Mouse X - relative coordinates.
82 * Mouse Y - relative coordinates.
87 * Mouse X - absolute screen coordinates.
89 private int absoluteX
;
92 * Mouse Y - absolute screen coordinate.
94 private int absoluteY
;
97 * Mouse button 1 (left button).
99 private boolean mouse1
;
102 * Mouse button 2 (right button).
104 private boolean mouse2
;
107 * Mouse button 3 (middle button).
109 private boolean mouse3
;
112 * Mouse wheel UP (button 4).
114 private boolean mouseWheelUp
;
117 * Mouse wheel DOWN (button 5).
119 private boolean mouseWheelDown
;
121 // ------------------------------------------------------------------------
122 // Constructors -----------------------------------------------------------
123 // ------------------------------------------------------------------------
128 * @param type the type of event, MOUSE_MOTION, MOUSE_DOWN, or MOUSE_UP
129 * @param x relative column
130 * @param y relative row
131 * @param absoluteX absolute column
132 * @param absoluteY absolute row
133 * @param mouse1 if true, left button is down
134 * @param mouse2 if true, right button is down
135 * @param mouse3 if true, middle button is down
136 * @param mouseWheelUp if true, mouse wheel (button 4) is down
137 * @param mouseWheelDown if true, mouse wheel (button 5) is down
139 public TMouseEvent(final Type type
, final int x
, final int y
,
140 final int absoluteX
, final int absoluteY
,
141 final boolean mouse1
, final boolean mouse2
, final boolean mouse3
,
142 final boolean mouseWheelUp
, final boolean mouseWheelDown
) {
147 this.absoluteX
= absoluteX
;
148 this.absoluteY
= absoluteY
;
149 this.mouse1
= mouse1
;
150 this.mouse2
= mouse2
;
151 this.mouse3
= mouse3
;
152 this.mouseWheelUp
= mouseWheelUp
;
153 this.mouseWheelDown
= mouseWheelDown
;
156 // ------------------------------------------------------------------------
157 // TMouseEvent ------------------------------------------------------------
158 // ------------------------------------------------------------------------
165 public Type
getType() {
181 * @param x new relative X value
182 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
183 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
184 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
186 public void setX(final int x
) {
202 * @param y new relative Y value
203 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
204 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
205 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
207 public void setY(final int y
) {
216 public int getAbsoluteX() {
223 * @param absoluteX the new value
225 public void setAbsoluteX(final int absoluteX
) {
226 this.absoluteX
= absoluteX
;
234 public int getAbsoluteY() {
241 * @param absoluteY the new value
243 public void setAbsoluteY(final int absoluteY
) {
244 this.absoluteY
= absoluteY
;
252 public boolean isMouse1() {
261 public boolean isMouse2() {
270 public boolean isMouse3() {
277 * @return mouseWheelUp
279 public boolean isMouseWheelUp() {
284 * Get mouseWheelDown.
286 * @return mouseWheelDown
288 public boolean isMouseWheelDown() {
289 return mouseWheelDown
;
293 * Create a duplicate instance.
295 * @return duplicate intance
297 public TMouseEvent
dup() {
298 TMouseEvent mouse
= new TMouseEvent(type
, x
, y
, absoluteX
, absoluteY
,
299 mouse1
, mouse2
, mouse3
, mouseWheelUp
, mouseWheelDown
);
304 * Make human-readable description of this TMouseEvent.
306 * @return displayable String
309 public String
toString() {
310 return String
.format("Mouse: %s x %d y %d absoluteX %d absoluteY %d 1 %s 2 %s 3 %s DOWN %s UP %s",
313 absoluteX
, absoluteY
,