2 * Jexer - Java Text User Interface
4 * The MIT License (MIT)
6 * Copyright (C) 2017 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 final class TMouseEvent
extends TInputEvent
{
39 * The type of event generated.
43 * Mouse motion. X and Y will have screen coordinates.
48 * Mouse button down. X and Y will have screen coordinates.
53 * Mouse button up. X and Y will have screen coordinates.
58 * Mouse double-click. X and Y will have screen coordinates.
64 * Type of event, one of MOUSE_MOTION, MOUSE_UP, or MOUSE_DOWN.
73 public Type
getType() {
78 * Mouse X - relative coordinates.
94 * @param x new relative X value
95 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
96 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
97 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
99 public void setX(final int x
) {
104 * Mouse Y - relative coordinates.
120 * @param y new relative Y value
121 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
122 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
123 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
125 public void setY(final int y
) {
130 * Mouse X - absolute screen coordinates.
132 private int absoluteX
;
139 public int getAbsoluteX() {
146 * @param absoluteX the new value
148 public void setAbsoluteX(final int absoluteX
) {
149 this.absoluteX
= absoluteX
;
153 * Mouse Y - absolute screen coordinate.
155 private int absoluteY
;
162 public int getAbsoluteY() {
169 * @param absoluteY the new value
171 public void setAbsoluteY(final int absoluteY
) {
172 this.absoluteY
= absoluteY
;
176 * Mouse button 1 (left button).
178 private boolean mouse1
;
185 public boolean isMouse1() {
190 * Mouse button 2 (right button).
192 private boolean mouse2
;
199 public boolean isMouse2() {
204 * Mouse button 3 (middle button).
206 private boolean mouse3
;
213 public boolean isMouse3() {
218 * Mouse wheel UP (button 4).
220 private boolean mouseWheelUp
;
225 * @return mouseWheelUp
227 public boolean isMouseWheelUp() {
232 * Mouse wheel DOWN (button 5).
234 private boolean mouseWheelDown
;
237 * Get mouseWheelDown.
239 * @return mouseWheelDown
241 public boolean isMouseWheelDown() {
242 return mouseWheelDown
;
248 * @param type the type of event, MOUSE_MOTION, MOUSE_DOWN, or MOUSE_UP
249 * @param x relative column
250 * @param y relative row
251 * @param absoluteX absolute column
252 * @param absoluteY absolute row
253 * @param mouse1 if true, left button is down
254 * @param mouse2 if true, right button is down
255 * @param mouse3 if true, middle button is down
256 * @param mouseWheelUp if true, mouse wheel (button 4) is down
257 * @param mouseWheelDown if true, mouse wheel (button 5) is down
259 public TMouseEvent(final Type type
, final int x
, final int y
,
260 final int absoluteX
, final int absoluteY
,
261 final boolean mouse1
, final boolean mouse2
, final boolean mouse3
,
262 final boolean mouseWheelUp
, final boolean mouseWheelDown
) {
267 this.absoluteX
= absoluteX
;
268 this.absoluteY
= absoluteY
;
269 this.mouse1
= mouse1
;
270 this.mouse2
= mouse2
;
271 this.mouse3
= mouse3
;
272 this.mouseWheelUp
= mouseWheelUp
;
273 this.mouseWheelDown
= mouseWheelDown
;
277 * Create a duplicate instance.
279 * @return duplicate intance
281 public TMouseEvent
dup() {
282 TMouseEvent mouse
= new TMouseEvent(type
, x
, y
, absoluteX
, absoluteY
,
283 mouse1
, mouse2
, mouse3
, mouseWheelUp
, mouseWheelDown
);
288 * Make human-readable description of this TMouseEvent.
290 * @return displayable String
293 public String
toString() {
294 return String
.format("Mouse: %s x %d y %d absoluteX %d absoluteY %d 1 %s 2 %s 3 %s DOWN %s UP %s",
297 absoluteX
, absoluteY
,