MouseFocusDriver.java revision 13978:1993af50385d
1/* 2 * Copyright (c) 1997, 2016, 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. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23package org.netbeans.jemmy.drivers.focus; 24 25import org.netbeans.jemmy.QueueTool; 26import org.netbeans.jemmy.drivers.DriverManager; 27import org.netbeans.jemmy.drivers.FocusDriver; 28import org.netbeans.jemmy.drivers.LightSupportiveDriver; 29import org.netbeans.jemmy.operators.ComponentOperator; 30import org.netbeans.jemmy.operators.Operator; 31 32public class MouseFocusDriver extends LightSupportiveDriver implements FocusDriver { 33 34 private QueueTool queueTool; 35 36 public MouseFocusDriver() { 37 super(new String[]{ 38 "org.netbeans.jemmy.operators.JListOperator", 39 "org.netbeans.jemmy.operators.JScrollBarOperator", 40 "org.netbeans.jemmy.operators.JSliderOperator", 41 "org.netbeans.jemmy.operators.JTableOperator", 42 "org.netbeans.jemmy.operators.JTextComponentOperator", 43 "org.netbeans.jemmy.operators.JTreeOperator", 44 "org.netbeans.jemmy.operators.ListOperator", 45 "org.netbeans.jemmy.operators.ScrollbarOperator", 46 "org.netbeans.jemmy.operators.TextAreaOperator", 47 "org.netbeans.jemmy.operators.TextComponentOperator", 48 "org.netbeans.jemmy.operators.TextFieldOperator"}); 49 queueTool = new QueueTool(); 50 } 51 52 @Override 53 public void giveFocus(final ComponentOperator oper) { 54 if (!oper.hasFocus()) { 55 queueTool.invokeSmoothly(new QueueTool.QueueAction<Void>("Mouse click to get focus") { 56 @Override 57 public Void launch() { 58 DriverManager.getMouseDriver(oper). 59 clickMouse(oper, oper.getCenterXForClick(), oper.getCenterYForClick(), 60 1, Operator.getDefaultMouseButton(), 0, 61 oper.getTimeouts().create("ComponentOperator.MouseClickTimeout")); 62 return null; 63 } 64 }); 65 oper.waitHasFocus(); 66 } 67 } 68} 69