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. 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 package org.netbeans.jemmy.drivers.trees; 26 27 import javax.swing.text.JTextComponent; 28 29 import org.netbeans.jemmy.Timeout; 30 import org.netbeans.jemmy.drivers.DriverManager; 31 import org.netbeans.jemmy.drivers.LightSupportiveDriver; 32 import org.netbeans.jemmy.drivers.TextDriver; 33 import org.netbeans.jemmy.drivers.TreeDriver; 34 import org.netbeans.jemmy.operators.ComponentOperator; 35 import org.netbeans.jemmy.operators.JTextComponentOperator; 36 import org.netbeans.jemmy.operators.JTreeOperator; 37 38 /** 39 * TreeDriver for javax.swing.JTree component type. Uses API calls. 40 * 41 * @author Alexandre Iline(alexandre.iline@oracle.com) 42 */ 43 public class JTreeAPIDriver extends LightSupportiveDriver implements TreeDriver { 44 45 /** 46 * Constructs a JTreeAPIDriver. 47 */ JTreeAPIDriver()48 public JTreeAPIDriver() { 49 super(new String[]{"org.netbeans.jemmy.operators.JTreeOperator"}); 50 } 51 52 @Override selectItem(ComponentOperator oper, int index)53 public void selectItem(ComponentOperator oper, int index) { 54 selectItems(oper, new int[]{index}); 55 } 56 57 @Override selectItems(ComponentOperator oper, int[] indices)58 public void selectItems(ComponentOperator oper, int[] indices) { 59 checkSupported(oper); 60 ((JTreeOperator) oper).clearSelection(); 61 ((JTreeOperator) oper).addSelectionRows(indices); 62 } 63 64 @Override expandItem(ComponentOperator oper, int index)65 public void expandItem(ComponentOperator oper, int index) { 66 checkSupported(oper); 67 ((JTreeOperator) oper).expandRow(index); 68 } 69 70 @Override collapseItem(ComponentOperator oper, int index)71 public void collapseItem(ComponentOperator oper, int index) { 72 checkSupported(oper); 73 ((JTreeOperator) oper).collapseRow(index); 74 } 75 76 @Override editItem(ComponentOperator oper, int index, Object newValue, Timeout waitEditorTime)77 public void editItem(ComponentOperator oper, int index, Object newValue, Timeout waitEditorTime) { 78 JTextComponentOperator textoper = startEditingAndReturnEditor(oper, index, waitEditorTime); 79 TextDriver text = DriverManager.getTextDriver(JTextComponentOperator.class); 80 text.clearText(textoper); 81 text.typeText(textoper, newValue.toString(), 0); 82 ((JTreeOperator) oper).stopEditing(); 83 } 84 85 @Override startEditing(ComponentOperator oper, int index, Timeout waitEditorTime)86 public void startEditing(ComponentOperator oper, int index, Timeout waitEditorTime) { 87 startEditingAndReturnEditor(oper, index, waitEditorTime); 88 } 89 startEditingAndReturnEditor(ComponentOperator oper, int index, Timeout waitEditorTime)90 private JTextComponentOperator startEditingAndReturnEditor(ComponentOperator oper, int index, Timeout waitEditorTime) { 91 checkSupported(oper); 92 JTreeOperator toper = (JTreeOperator) oper; 93 toper.startEditingAtPath(toper.getPathForRow(index)); 94 toper.getTimeouts(). 95 setTimeout("ComponentOperator.WaitComponentTimeout", waitEditorTime.getValue()); 96 return (new JTextComponentOperator((JTextComponent) toper. 97 waitSubComponent(new JTextComponentOperator.JTextComponentFinder()))); 98 } 99 } 100