AWTScrollDriver.java revision 13978:1993af50385d
1202375Srdivacky/* 2202375Srdivacky * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 3202375Srdivacky * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4202375Srdivacky * 5202375Srdivacky * This code is free software; you can redistribute it and/or modify it 6202375Srdivacky * under the terms of the GNU General Public License version 2 only, as 7202375Srdivacky * published by the Free Software Foundation. 8202375Srdivacky * 9202375Srdivacky * This code is distributed in the hope that it will be useful, but WITHOUT 10202375Srdivacky * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11202375Srdivacky * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12202375Srdivacky * version 2 for more details (a copy is included in the LICENSE file that 13202375Srdivacky * accompanied this code). 14202375Srdivacky * 15202375Srdivacky * You should have received a copy of the GNU General Public License version 16202375Srdivacky * 2 along with this work; if not, write to the Free Software Foundation, 17202375Srdivacky * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18245431Sdim * 19202375Srdivacky * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20202375Srdivacky * or visit www.oracle.com if you need additional information or have any 21202375Srdivacky * questions. 22202375Srdivacky */ 23202375Srdivackypackage org.netbeans.jemmy.drivers.scrolling; 24202375Srdivacky 25202375Srdivackyimport java.awt.Point; 26202375Srdivacky 27202375Srdivackyimport org.netbeans.jemmy.QueueTool; 28202375Srdivackyimport org.netbeans.jemmy.Timeout; 29202375Srdivackyimport org.netbeans.jemmy.drivers.DriverManager; 30202375Srdivackyimport org.netbeans.jemmy.drivers.MouseDriver; 31202375Srdivackyimport org.netbeans.jemmy.operators.ComponentOperator; 32202375Srdivackyimport org.netbeans.jemmy.operators.Operator; 33202375Srdivacky 34202375Srdivacky/** 35207618Srdivacky * ScrollDriver for awt components. 36202375Srdivacky * 37207618Srdivacky * @author Alexandre Iline(alexandre.iline@oracle.com) 38207618Srdivacky */ 39207618Srdivackypublic abstract class AWTScrollDriver extends AbstractScrollDriver { 40202375Srdivacky 41207618Srdivacky private QueueTool queueTool; 42207618Srdivacky 43207618Srdivacky /** 44202375Srdivacky * Constructs a ChoiceDriver. 45207618Srdivacky * 46207618Srdivacky * @param supported an array of supported class names 47207618Srdivacky */ 48207618Srdivacky public AWTScrollDriver(String[] supported) { 49207618Srdivacky super(supported); 50207618Srdivacky queueTool = new QueueTool(); 51202375Srdivacky } 52207618Srdivacky 53207618Srdivacky @Override 54207618Srdivacky protected void step(final ComponentOperator oper, final ScrollAdjuster adj) { 55202375Srdivacky if (adj.getScrollDirection() != ScrollAdjuster.DO_NOT_TOUCH_SCROLL_DIRECTION) { 56207618Srdivacky queueTool.invokeSmoothly(new QueueTool.QueueAction<Void>("Scrolling by clicking with mouse") { 57207618Srdivacky @Override 58207618Srdivacky public Void launch() { 59207618Srdivacky Point clickPoint = getClickPoint(oper, adj.getScrollDirection(), adj.getScrollOrientation()); 60207618Srdivacky if (clickPoint != null) { 61207618Srdivacky DriverManager.getMouseDriver(oper). 62207618Srdivacky clickMouse(oper, clickPoint.x, clickPoint.y, 1, 63207618Srdivacky Operator.getDefaultMouseButton(), 64207618Srdivacky 0, 65207618Srdivacky oper.getTimeouts(). 66207618Srdivacky create("ComponentOperator.MouseClickTimeout")); 67207618Srdivacky } 68207618Srdivacky return null; 69207618Srdivacky } 70207618Srdivacky }); 71207618Srdivacky } 72207618Srdivacky } 73207618Srdivacky 74207618Srdivacky @Override 75207618Srdivacky protected void jump(ComponentOperator oper, ScrollAdjuster adj) { 76207618Srdivacky } 77207618Srdivacky 78207618Srdivacky @Override 79207618Srdivacky protected void startPushAndWait(final ComponentOperator oper, final int direction, final int orientation) { 80207618Srdivacky queueTool.invokeSmoothly(new QueueTool.QueueAction<Void>("Scrolling: pressing the mouse button and holding") { 81207618Srdivacky @Override 82207618Srdivacky public Void launch() { 83207618Srdivacky Point clickPoint = getClickPoint(oper, direction, orientation); 84202375Srdivacky if (clickPoint != null) { 85207618Srdivacky MouseDriver mdriver = DriverManager.getMouseDriver(oper); 86202375Srdivacky mdriver.moveMouse(oper, clickPoint.x, clickPoint.y); 87202375Srdivacky mdriver.pressMouse(oper, clickPoint.x, clickPoint.y, 88207618Srdivacky Operator.getDefaultMouseButton(), 89207618Srdivacky 0); 90207618Srdivacky } 91207618Srdivacky return null; 92207618Srdivacky } 93202375Srdivacky }); 94207618Srdivacky } 95202375Srdivacky 96202375Srdivacky @Override 97202375Srdivacky protected void stopPushAndWait(final ComponentOperator oper, final int direction, final int orientation) { 98202375Srdivacky queueTool.invokeSmoothly(new QueueTool.QueueAction<Void>("Scrolling: releasing the mouse button") { 99202375Srdivacky @Override 100207618Srdivacky public Void launch() { 101207618Srdivacky Point clickPoint = getClickPoint(oper, direction, orientation); 102202375Srdivacky if (clickPoint != null) { 103202375Srdivacky MouseDriver mdriver = DriverManager.getMouseDriver(oper); 104202375Srdivacky mdriver.releaseMouse(oper, clickPoint.x, clickPoint.y, 105202375Srdivacky Operator.getDefaultMouseButton(), 106202375Srdivacky 0); 107207618Srdivacky } 108207618Srdivacky return null; 109202375Srdivacky } 110202375Srdivacky }); 111202375Srdivacky } 112207618Srdivacky 113207618Srdivacky @Override 114202375Srdivacky protected Point startDragging(ComponentOperator oper) { 115202375Srdivacky return null; 116202375Srdivacky } 117202375Srdivacky 118202375Srdivacky @Override 119202375Srdivacky protected void drop(ComponentOperator oper, Point pnt) { 120202375Srdivacky } 121202375Srdivacky 122202375Srdivacky @Override 123202375Srdivacky protected void drag(ComponentOperator oper, Point pnt) { 124202375Srdivacky } 125202375Srdivacky 126202375Srdivacky @Override 127207618Srdivacky protected Timeout getScrollDeltaTimeout(ComponentOperator oper) { 128202375Srdivacky return (oper.getTimeouts(). 129202375Srdivacky create("ScrollbarOperator.DragAndDropScrollingDelta")); 130202375Srdivacky } 131207618Srdivacky 132207618Srdivacky @Override 133202375Srdivacky protected boolean canDragAndDrop(ComponentOperator oper) { 134202375Srdivacky return false; 135202375Srdivacky } 136202375Srdivacky 137207618Srdivacky @Override 138202375Srdivacky protected boolean canJump(ComponentOperator oper) { 139202375Srdivacky return false; 140202375Srdivacky } 141207618Srdivacky 142207618Srdivacky @Override 143202375Srdivacky protected boolean canPushAndWait(ComponentOperator oper) { 144202375Srdivacky return true; 145202375Srdivacky } 146202375Srdivacky 147202375Srdivacky @Override 148202375Srdivacky protected int getDragAndDropStepLength(ComponentOperator oper) { 149202375Srdivacky return 1; 150202375Srdivacky } 151202375Srdivacky 152202375Srdivacky /** 153207618Srdivacky * Defines a click point which needs to be used in order to 154202375Srdivacky * increase/decrease scroller value. 155202375Srdivacky * 156252723Sdim * @param oper an operator. 157245431Sdim * @param direction - one of the ScrollAdjister.INCREASE_SCROLL_DIRECTION, 158245431Sdim * ScrollAdjister.DECREASE_SCROLL_DIRECTION, 159245431Sdim * ScrollAdjister.DO_NOT_TOUCH_SCROLL_DIRECTION values. 160245431Sdim * @param orientation one of the Adjustable.HORIZONTAL or 161245431Sdim * Adjustable.VERTICAL values. 162202375Srdivacky * @return a point to click. 163202375Srdivacky */ 164207618Srdivacky protected abstract Point getClickPoint(ComponentOperator oper, int direction, int orientation); 165202375Srdivacky} 166202375Srdivacky