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.
59 * Type of event, one of MOUSE_MOTION, MOUSE_UP, or MOUSE_DOWN.
68 public Type
getType() {
73 * Mouse X - relative coordinates.
89 * @param x new relative X value
90 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
91 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
92 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
94 public void setX(final int x
) {
99 * Mouse Y - relative coordinates.
115 * @param y new relative Y value
116 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
117 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
118 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
120 public void setY(final int y
) {
125 * Mouse X - absolute screen coordinates.
127 private int absoluteX
;
134 public int getAbsoluteX() {
139 * Mouse Y - absolute screen coordinate.
141 private int absoluteY
;
148 public int getAbsoluteY() {
153 * Mouse button 1 (left button).
155 private boolean mouse1
;
162 public boolean isMouse1() {
167 * Mouse button 2 (right button).
169 private boolean mouse2
;
176 public boolean isMouse2() {
181 * Mouse button 3 (middle button).
183 private boolean mouse3
;
190 public boolean isMouse3() {
195 * Mouse wheel UP (button 4).
197 private boolean mouseWheelUp
;
202 * @return mouseWheelUp
204 public boolean isMouseWheelUp() {
209 * Mouse wheel DOWN (button 5).
211 private boolean mouseWheelDown
;
214 * Get mouseWheelDown.
216 * @return mouseWheelDown
218 public boolean isMouseWheelDown() {
219 return mouseWheelDown
;
225 * @param type the type of event, MOUSE_MOTION, MOUSE_DOWN, or MOUSE_UP
226 * @param x relative column
227 * @param y relative row
228 * @param absoluteX absolute column
229 * @param absoluteY absolute row
230 * @param mouse1 if true, left button is down
231 * @param mouse2 if true, right button is down
232 * @param mouse3 if true, middle button is down
233 * @param mouseWheelUp if true, mouse wheel (button 4) is down
234 * @param mouseWheelDown if true, mouse wheel (button 5) is down
236 public TMouseEvent(final Type type
, final int x
, final int y
,
237 final int absoluteX
, final int absoluteY
,
238 final boolean mouse1
, final boolean mouse2
, final boolean mouse3
,
239 final boolean mouseWheelUp
, final boolean mouseWheelDown
) {
244 this.absoluteX
= absoluteX
;
245 this.absoluteY
= absoluteY
;
246 this.mouse1
= mouse1
;
247 this.mouse2
= mouse2
;
248 this.mouse3
= mouse3
;
249 this.mouseWheelUp
= mouseWheelUp
;
250 this.mouseWheelDown
= mouseWheelDown
;
254 * Make human-readable description of this TMouseEvent.
256 * @return displayable String
259 public String
toString() {
260 return String
.format("Mouse: %s x %d y %d absoluteX %d absoluteY %d 1 %s 2 %s 3 %s DOWN %s UP %s",
263 absoluteX
, absoluteY
,