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
;
122 * Keyboard modifier ALT.
127 * Keyboard modifier CTRL.
129 private boolean ctrl
;
132 * Keyboard modifier SHIFT.
134 private boolean shift
;
136 // ------------------------------------------------------------------------
137 // Constructors -----------------------------------------------------------
138 // ------------------------------------------------------------------------
143 * @param type the type of event, MOUSE_MOTION, MOUSE_DOWN, or MOUSE_UP
144 * @param x relative column
145 * @param y relative row
146 * @param absoluteX absolute column
147 * @param absoluteY absolute row
148 * @param mouse1 if true, left button is down
149 * @param mouse2 if true, right button is down
150 * @param mouse3 if true, middle button is down
151 * @param mouseWheelUp if true, mouse wheel (button 4) is down
152 * @param mouseWheelDown if true, mouse wheel (button 5) is down
153 * @param alt if true, ALT was pressed with this mouse event
154 * @param ctrl if true, CTRL was pressed with this mouse event
155 * @param shift if true, SHIFT was pressed with this mouse event
157 public TMouseEvent(final Type type
, final int x
, final int y
,
158 final int absoluteX
, final int absoluteY
,
159 final boolean mouse1
, final boolean mouse2
, final boolean mouse3
,
160 final boolean mouseWheelUp
, final boolean mouseWheelDown
,
161 final boolean alt
, final boolean ctrl
, final boolean shift
) {
166 this.absoluteX
= absoluteX
;
167 this.absoluteY
= absoluteY
;
168 this.mouse1
= mouse1
;
169 this.mouse2
= mouse2
;
170 this.mouse3
= mouse3
;
171 this.mouseWheelUp
= mouseWheelUp
;
172 this.mouseWheelDown
= mouseWheelDown
;
178 // ------------------------------------------------------------------------
179 // TMouseEvent ------------------------------------------------------------
180 // ------------------------------------------------------------------------
187 public Type
getType() {
203 * @param x new relative X value
204 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
205 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
206 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
208 public void setX(final int x
) {
224 * @param y new relative Y value
225 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
226 * @see jexer.TWidget#onMouseDown(TMouseEvent mouse)
227 * @see jexer.TWidget#onMouseMotion(TMouseEvent mouse)
229 public void setY(final int y
) {
238 public int getAbsoluteX() {
245 * @param absoluteX the new value
247 public void setAbsoluteX(final int absoluteX
) {
248 this.absoluteX
= absoluteX
;
256 public int getAbsoluteY() {
263 * @param absoluteY the new value
265 public void setAbsoluteY(final int absoluteY
) {
266 this.absoluteY
= absoluteY
;
274 public boolean isMouse1() {
283 public boolean isMouse2() {
292 public boolean isMouse3() {
299 * @return mouseWheelUp
301 public boolean isMouseWheelUp() {
306 * Get mouseWheelDown.
308 * @return mouseWheelDown
310 public boolean isMouseWheelDown() {
311 return mouseWheelDown
;
319 public boolean isAlt() {
328 public boolean isCtrl() {
335 * @return shift value
337 public boolean isShift() {
342 * Create a duplicate instance.
344 * @return duplicate intance
346 public TMouseEvent
dup() {
347 TMouseEvent mouse
= new TMouseEvent(type
, x
, y
, absoluteX
, absoluteY
,
348 mouse1
, mouse2
, mouse3
, mouseWheelUp
, mouseWheelDown
,
355 * Make human-readable description of this TMouseEvent.
357 * @return displayable String
360 public String
toString() {
361 return String
.format("Mouse: %s x %d y %d absoluteX %d absoluteY %d 1 %s 2 %s 3 %s DOWN %s UP %s ALT %s CTRL %s SHIFT %s",
364 absoluteX
, absoluteY
,