1 /* 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package test.javafx.scene.input; 27 28 import javafx.event.Event; 29 import javafx.geometry.Point3D; 30 import javafx.scene.Node; 31 import javafx.scene.input.MouseButton; 32 import javafx.scene.input.MouseDragEvent; 33 import javafx.scene.input.MouseEvent; 34 import javafx.scene.input.PickResult; 35 import javafx.scene.shape.Rectangle; 36 import static org.junit.Assert.assertEquals; 37 import static org.junit.Assert.assertFalse; 38 import static org.junit.Assert.assertNotNull; 39 import static org.junit.Assert.assertSame; 40 import static org.junit.Assert.assertTrue; 41 42 import org.junit.Test; 43 44 public class MouseEventTest { 45 46 private final Node node1 = new TestNode(5); 47 private final Node node2 = new TestNode(10); 48 private final MouseEvent doubleclick = new MouseEvent( 49 MouseEvent.MOUSE_CLICKED, 50 11, 12, 13, 14, MouseButton.PRIMARY, 2, 51 true, false, true, false, false, true, false, false, true, false, null); 52 53 @Test public void testShortConstructor() { 54 Rectangle node = new Rectangle(); 55 node.setTranslateX(3); 56 node.setTranslateY(2); 57 node.setTranslateZ(50); 58 59 PickResult pickRes = new PickResult(node, new Point3D(15, 25, 100), 33); 60 61 MouseEvent e = new MouseEvent(MouseEvent.MOUSE_DRAGGED, 62 10, 20, 30, 40, MouseButton.MIDDLE, 3, 63 true, false, false, true, 64 false, true, false, 65 true, false, true, pickRes); 66 67 assertSame(MouseEvent.MOUSE_DRAGGED, e.getEventType()); 68 assertEquals(18, e.getX(), 10e-20); 69 assertEquals(27, e.getY(), 10e-20); 70 assertEquals(150, e.getZ(), 10e-20); 71 assertEquals(10, e.getSceneX(), 10e-20); 72 assertEquals(20, e.getSceneY(), 10e-20); 73 assertEquals(30, e.getScreenX(), 10e-20); 74 assertEquals(40, e.getScreenY(), 10e-20); 75 assertSame(MouseButton.MIDDLE, e.getButton()); 76 assertEquals(3, e.getClickCount()); 77 assertTrue(e.isShiftDown()); 78 assertFalse(e.isControlDown()); 79 assertFalse(e.isAltDown()); 80 assertTrue(e.isMetaDown()); 81 assertFalse(e.isPrimaryButtonDown()); 82 assertTrue(e.isMiddleButtonDown()); 83 assertFalse(e.isSecondaryButtonDown()); 84 assertTrue(e.isSynthesized()); 85 assertFalse(e.isPopupTrigger()); 86 assertTrue(e.isStillSincePress()); 87 assertFalse(e.isConsumed()); 88 assertSame(pickRes, e.getPickResult()); 89 assertSame(Event.NULL_SOURCE_TARGET, e.getSource()); 90 assertSame(Event.NULL_SOURCE_TARGET, e.getTarget()); 91 92 e = new MouseEvent(MouseEvent.MOUSE_DRAGGED, 93 10, 20, 30, 40, MouseButton.MIDDLE, 3, 94 false, true, true, false, 95 true, false, true, 96 false, true, false, pickRes); 97 98 assertFalse(e.isShiftDown()); 99 assertTrue(e.isControlDown()); 100 assertTrue(e.isAltDown()); 101 assertFalse(e.isMetaDown()); 102 assertTrue(e.isPrimaryButtonDown()); 103 assertFalse(e.isMiddleButtonDown()); 104 assertTrue(e.isSecondaryButtonDown()); 105 assertFalse(e.isSynthesized()); 106 assertTrue(e.isPopupTrigger()); 107 assertFalse(e.isStillSincePress()); 108 } 109 110 @Test public void testShortConstructorWithoutPickResult() { 111 MouseDragEvent e = new MouseDragEvent(MouseDragEvent.MOUSE_DRAG_OVER, 112 10, 20, 30, 40, MouseButton.MIDDLE, 3, 113 true, false, false, true, 114 false, true, false, 115 true, false, null, new Rectangle()); 116 assertEquals(10, e.getX(), 10e-20); 117 assertEquals(20, e.getY(), 10e-20); 118 assertEquals(0, e.getZ(), 10e-20); 119 assertEquals(10, e.getSceneX(), 10e-20); 120 assertEquals(20, e.getSceneY(), 10e-20); 121 assertEquals(30, e.getScreenX(), 10e-20); 122 assertEquals(40, e.getScreenY(), 10e-20); 123 assertNotNull(e.getPickResult()); 124 assertNotNull(e.getPickResult().getIntersectedPoint()); 125 assertEquals(10, e.getPickResult().getIntersectedPoint().getX(), 10e-20); 126 assertEquals(20, e.getPickResult().getIntersectedPoint().getY(), 10e-20); 127 assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 10e-20); 128 assertSame(Event.NULL_SOURCE_TARGET, e.getSource()); 129 assertSame(Event.NULL_SOURCE_TARGET, e.getTarget()); 130 } 131 132 @Test public void testLongConstructor() { 133 Rectangle n1 = new Rectangle(10, 10); 134 Rectangle n2 = new Rectangle(10, 10); 135 Rectangle node = new Rectangle(); 136 node.setTranslateX(3); 137 node.setTranslateY(2); 138 node.setTranslateZ(50); 139 140 PickResult pickRes = new PickResult(node, new Point3D(15, 25, 100), 33); 141 142 MouseEvent e = new MouseEvent(n1, n2, MouseEvent.MOUSE_DRAGGED, 143 10, 20, 30, 40, MouseButton.MIDDLE, 3, 144 true, false, false, true, 145 false, true, false, 146 true, false, true, pickRes); 147 148 assertSame(n1, e.getSource()); 149 assertSame(n2, e.getTarget()); 150 assertSame(MouseEvent.MOUSE_DRAGGED, e.getEventType()); 151 assertEquals(18, e.getX(), 10e-20); 152 assertEquals(27, e.getY(), 10e-20); 153 assertEquals(150, e.getZ(), 10e-20); 154 assertEquals(10, e.getSceneX(), 10e-20); 155 assertEquals(20, e.getSceneY(), 10e-20); 156 assertEquals(30, e.getScreenX(), 10e-20); 157 assertEquals(40, e.getScreenY(), 10e-20); 158 assertSame(MouseButton.MIDDLE, e.getButton()); 159 assertEquals(3, e.getClickCount()); 160 assertTrue(e.isShiftDown()); 161 assertFalse(e.isControlDown()); 162 assertFalse(e.isAltDown()); 163 assertTrue(e.isMetaDown()); 164 assertFalse(e.isPrimaryButtonDown()); 165 assertTrue(e.isMiddleButtonDown()); 166 assertFalse(e.isSecondaryButtonDown()); 167 assertTrue(e.isSynthesized()); 168 assertFalse(e.isPopupTrigger()); 169 assertTrue(e.isStillSincePress()); 170 assertFalse(e.isConsumed()); 171 assertSame(pickRes, e.getPickResult()); 172 173 e = new MouseEvent(n1, n2, MouseEvent.MOUSE_DRAGGED, 174 10, 20, 30, 40, MouseButton.MIDDLE, 3, 175 false, true, true, false, 176 true, false, true, 177 false, true, false, pickRes); 178 179 assertSame(n1, e.getSource()); 180 assertSame(n2, e.getTarget()); 181 assertFalse(e.isShiftDown()); 182 assertTrue(e.isControlDown()); 183 assertTrue(e.isAltDown()); 184 assertFalse(e.isMetaDown()); 185 assertTrue(e.isPrimaryButtonDown()); 186 assertFalse(e.isMiddleButtonDown()); 187 assertTrue(e.isSecondaryButtonDown()); 188 assertFalse(e.isSynthesized()); 189 assertTrue(e.isPopupTrigger()); 190 assertFalse(e.isStillSincePress()); 191 } 192 193 194 @Test public void testLongConstructorWithoutPickResult() { 195 Rectangle n1 = new Rectangle(10, 10); 196 Rectangle n2 = new Rectangle(10, 10); 197 MouseEvent e = new MouseEvent(n1, n2, MouseEvent.MOUSE_DRAGGED, 198 10, 20, 30, 40, MouseButton.MIDDLE, 3, 199 true, false, false, true, 200 false, true, false, 201 true, false, true, null); 202 assertSame(n1, e.getSource()); 203 assertSame(n2, e.getTarget()); 204 assertEquals(10, e.getX(), 10e-20); 205 assertEquals(20, e.getY(), 10e-20); 206 assertEquals(0, e.getZ(), 10e-20); 207 assertEquals(10, e.getSceneX(), 10e-20); 208 assertEquals(20, e.getSceneY(), 10e-20); 209 assertEquals(30, e.getScreenX(), 10e-20); 210 assertEquals(40, e.getScreenY(), 10e-20); 211 assertNotNull(e.getPickResult()); 212 assertNotNull(e.getPickResult().getIntersectedPoint()); 213 assertEquals(10, e.getPickResult().getIntersectedPoint().getX(), 10e-20); 214 assertEquals(20, e.getPickResult().getIntersectedPoint().getY(), 10e-20); 215 assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 10e-20); 216 } 217 218 @Test 219 public void shouldCreateDoubleClickMouseEvent() { 220 /* constructor called during initialization */ 221 assertEquals(11f, doubleclick.getX(), 0.0001); 222 assertEquals(12f, doubleclick.getY(), 0.0001); 223 assertEquals(11f, doubleclick.getSceneX(), 0.0001); 224 assertEquals(12f, doubleclick.getSceneY(), 0.0001); 225 assertEquals(13f, doubleclick.getScreenX(), 0.0001); 226 assertEquals(14f, doubleclick.getScreenY(), 0.0001); 227 assertSame(MouseButton.PRIMARY, doubleclick.getButton()); 228 assertEquals(2, doubleclick.getClickCount()); 229 assertTrue(doubleclick.isShiftDown()); 230 assertFalse(doubleclick.isControlDown()); 231 assertTrue(doubleclick.isAltDown()); 232 assertFalse(doubleclick.isMetaDown()); 233 assertTrue(doubleclick.isPopupTrigger()); 234 assertFalse(doubleclick.isPrimaryButtonDown()); 235 assertTrue(doubleclick.isMiddleButtonDown()); 236 assertFalse(doubleclick.isSecondaryButtonDown()); 237 assertSame(MouseEvent.MOUSE_CLICKED, doubleclick.getEventType()); 238 assertSame(MouseEvent.NULL_SOURCE_TARGET, doubleclick.getSource()); 239 } 240 241 @Test 242 public void shouldCopyMouseEvent() { 243 MouseEvent copy = doubleclick.copyFor(node1, node2); 244 245 assertEquals(6f, copy.getX(), 0.0001); 246 assertEquals(7f, copy.getY(), 0.0001); 247 assertEquals(11f, copy.getSceneX(), 0.0001); 248 assertEquals(12f, copy.getSceneY(), 0.0001); 249 assertEquals(13f, copy.getScreenX(), 0.0001); 250 assertEquals(14f, copy.getScreenY(), 0.0001); 251 assertSame(doubleclick.getButton(), copy.getButton()); 252 assertEquals(doubleclick.getClickCount(), copy.getClickCount()); 253 assertEquals(doubleclick.isShiftDown(), copy.isShiftDown()); 254 assertEquals(doubleclick.isControlDown(), copy.isControlDown()); 255 assertEquals(doubleclick.isAltDown(), copy.isAltDown()); 256 assertEquals(doubleclick.isMetaDown(), copy.isMetaDown()); 257 assertEquals(doubleclick.isPopupTrigger(), 258 copy.isPopupTrigger()); 259 assertEquals(doubleclick.isPrimaryButtonDown(), copy.isPrimaryButtonDown()); 260 assertEquals(doubleclick.isMiddleButtonDown(), copy.isMiddleButtonDown()); 261 assertEquals(doubleclick.isSecondaryButtonDown(), copy.isSecondaryButtonDown()); 262 assertSame(doubleclick.getEventType(), copy.getEventType()); 263 assertSame(node1, copy.getSource()); 264 assertSame(node2, copy.getTarget()); 265 } 266 267 @Test 268 public void shouldCopyMouseEventWithEventId() { 269 MouseEvent copy = doubleclick.copyFor(node1, node2, 270 MouseEvent.MOUSE_ENTERED); 271 272 assertEquals(6f, copy.getX(), 0.0001); 273 assertEquals(7f, copy.getY(), 0.0001); 274 assertEquals(11f, copy.getSceneX(), 0.0001); 275 assertEquals(12f, copy.getSceneY(), 0.0001); 276 assertEquals(13f, copy.getScreenX(), 0.0001); 277 assertEquals(14f, copy.getScreenY(), 0.0001); 278 assertSame(doubleclick.getButton(), copy.getButton()); 279 assertEquals(doubleclick.getClickCount(), copy.getClickCount()); 280 assertEquals(doubleclick.isShiftDown(), copy.isShiftDown()); 281 assertEquals(doubleclick.isControlDown(), copy.isControlDown()); 282 assertEquals(doubleclick.isAltDown(), copy.isAltDown()); 283 assertEquals(doubleclick.isMetaDown(), copy.isMetaDown()); 284 assertEquals(doubleclick.isPopupTrigger(), 285 copy.isPopupTrigger()); 286 assertEquals(doubleclick.isPrimaryButtonDown(), copy.isPrimaryButtonDown()); 287 assertEquals(doubleclick.isMiddleButtonDown(), copy.isMiddleButtonDown()); 288 assertEquals(doubleclick.isSecondaryButtonDown(), copy.isSecondaryButtonDown()); 289 assertSame(MouseEvent.MOUSE_ENTERED, copy.getEventType()); 290 assertSame(node1, copy.getSource()); 291 assertSame(node2, copy.getTarget()); 292 } 293 294 @Test 295 public void shouldCopyMouseEventWithNode() { 296 MouseEvent temp = doubleclick.copyFor(node1, node2); 297 MouseEvent copy = temp.copyFor(node2, node1); 298 299 assertEquals(1f, copy.getX(), 0.0001); 300 assertEquals(2f, copy.getY(), 0.0001); 301 assertEquals(11f, copy.getSceneX(), 0.0001); 302 assertEquals(12f, copy.getSceneY(), 0.0001); 303 assertEquals(13f, copy.getScreenX(), 0.0001); 304 assertEquals(14f, copy.getScreenY(), 0.0001); 305 assertSame(doubleclick.getButton(), copy.getButton()); 306 assertEquals(doubleclick.getClickCount(), copy.getClickCount()); 307 assertEquals(doubleclick.isShiftDown(), copy.isShiftDown()); 308 assertEquals(doubleclick.isControlDown(), copy.isControlDown()); 309 assertEquals(doubleclick.isAltDown(), copy.isAltDown()); 310 assertEquals(doubleclick.isMetaDown(), copy.isMetaDown()); 311 assertEquals(doubleclick.isPopupTrigger(), 312 copy.isPopupTrigger()); 313 assertEquals(doubleclick.isPrimaryButtonDown(), copy.isPrimaryButtonDown()); 314 assertEquals(doubleclick.isMiddleButtonDown(), copy.isMiddleButtonDown()); 315 assertEquals(doubleclick.isSecondaryButtonDown(), copy.isSecondaryButtonDown()); 316 assertSame(doubleclick.getEventType(), copy.getEventType()); 317 assertSame(node2, copy.getSource()); 318 assertSame(node1, copy.getTarget()); 319 } 320 321 @Test 322 public void shouldCopyMouseEventWithDrag() { 323 MouseEvent copy = doubleclick.copyFor(node1, node2); 324 325 assertEquals(6f, copy.getX(), 0.0001); 326 assertEquals(7f, copy.getY(), 0.0001); 327 assertEquals(11f, copy.getSceneX(), 0.0001); 328 assertEquals(12f, copy.getSceneY(), 0.0001); 329 assertEquals(13f, copy.getScreenX(), 0.0001); 330 assertEquals(14f, copy.getScreenY(), 0.0001); 331 assertSame(doubleclick.getButton(), copy.getButton()); 332 assertEquals(doubleclick.getClickCount(), copy.getClickCount()); 333 assertEquals(doubleclick.isShiftDown(), copy.isShiftDown()); 334 assertEquals(doubleclick.isControlDown(), copy.isControlDown()); 335 assertEquals(doubleclick.isAltDown(), copy.isAltDown()); 336 assertEquals(doubleclick.isMetaDown(), copy.isMetaDown()); 337 assertEquals(doubleclick.isPopupTrigger(), 338 copy.isPopupTrigger()); 339 assertEquals(doubleclick.isPrimaryButtonDown(), copy.isPrimaryButtonDown()); 340 assertEquals(doubleclick.isMiddleButtonDown(), copy.isMiddleButtonDown()); 341 assertEquals(doubleclick.isSecondaryButtonDown(), copy.isSecondaryButtonDown()); 342 assertSame(doubleclick.getEventType(), copy.getEventType()); 343 assertSame(node1, copy.getSource()); 344 assertSame(node2, copy.getTarget()); 345 } 346 347 348 @Test 349 public void shouldGetNonEmptyDescription() { 350 String s = doubleclick.toString(); 351 assertNotNull(s); 352 assertFalse(s.isEmpty()); 353 } 354 355 356 }