DefaultDriverInstaller.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; 24 25import org.netbeans.jemmy.ClassReference; 26import org.netbeans.jemmy.JemmyException; 27import org.netbeans.jemmy.JemmyProperties; 28import org.netbeans.jemmy.drivers.buttons.ButtonMouseDriver; 29import org.netbeans.jemmy.drivers.focus.APIFocusDriver; 30import org.netbeans.jemmy.drivers.focus.MouseFocusDriver; 31import org.netbeans.jemmy.drivers.lists.ChoiceDriver; 32import org.netbeans.jemmy.drivers.lists.JComboMouseDriver; 33import org.netbeans.jemmy.drivers.lists.JListMouseDriver; 34import org.netbeans.jemmy.drivers.lists.JTabMouseDriver; 35import org.netbeans.jemmy.drivers.lists.JTableHeaderDriver; 36import org.netbeans.jemmy.drivers.lists.ListKeyboardDriver; 37import org.netbeans.jemmy.drivers.menus.DefaultJMenuDriver; 38import org.netbeans.jemmy.drivers.menus.QueueJMenuDriver; 39import org.netbeans.jemmy.drivers.scrolling.JScrollBarDriver; 40import org.netbeans.jemmy.drivers.scrolling.JSliderDriver; 41import org.netbeans.jemmy.drivers.scrolling.JSplitPaneDriver; 42import org.netbeans.jemmy.drivers.scrolling.ScrollPaneDriver; 43import org.netbeans.jemmy.drivers.scrolling.ScrollbarDriver; 44import org.netbeans.jemmy.drivers.tables.JTableMouseDriver; 45import org.netbeans.jemmy.drivers.text.AWTTextKeyboardDriver; 46import org.netbeans.jemmy.drivers.text.SwingTextKeyboardDriver; 47import org.netbeans.jemmy.drivers.trees.JTreeMouseDriver; 48import org.netbeans.jemmy.drivers.windows.DefaultFrameDriver; 49import org.netbeans.jemmy.drivers.windows.DefaultInternalFrameDriver; 50import org.netbeans.jemmy.drivers.windows.DefaultWindowDriver; 51 52/** 53 * Installs all necessary drivers for Jemmy operators except low-level drivers 54 * which are installed by 55 * <a href="InputDriverInstaller.java">InputDriverInstaller</a>. 56 * 57 * @author Alexandre Iline(alexandre.iline@oracle.com) 58 */ 59public class DefaultDriverInstaller extends ArrayDriverInstaller { 60 61 /** 62 * Constructs a DefaultDriverInstaller object. 63 * 64 * @param shortcutEvents Signals whether shortcut mode is used. 65 */ 66 public DefaultDriverInstaller(boolean shortcutEvents) { 67 super(new String[]{ 68 DriverManager.LIST_DRIVER_ID, 69 DriverManager.MULTISELLIST_DRIVER_ID, 70 DriverManager.TREE_DRIVER_ID, 71 DriverManager.TEXT_DRIVER_ID, 72 DriverManager.TEXT_DRIVER_ID, 73 DriverManager.SCROLL_DRIVER_ID, 74 DriverManager.SCROLL_DRIVER_ID, 75 DriverManager.SCROLL_DRIVER_ID, 76 DriverManager.SCROLL_DRIVER_ID, 77 DriverManager.SCROLL_DRIVER_ID, 78 DriverManager.SCROLL_DRIVER_ID, 79 DriverManager.BUTTON_DRIVER_ID, 80 DriverManager.LIST_DRIVER_ID, 81 DriverManager.LIST_DRIVER_ID, 82 DriverManager.MULTISELLIST_DRIVER_ID, 83 DriverManager.LIST_DRIVER_ID, 84 DriverManager.LIST_DRIVER_ID, 85 DriverManager.MULTISELLIST_DRIVER_ID, 86 DriverManager.TABLE_DRIVER_ID, 87 DriverManager.LIST_DRIVER_ID, 88 DriverManager.FRAME_DRIVER_ID, 89 DriverManager.WINDOW_DRIVER_ID, 90 DriverManager.FRAME_DRIVER_ID, 91 DriverManager.INTERNAL_FRAME_DRIVER_ID, 92 DriverManager.WINDOW_DRIVER_ID, 93 DriverManager.FOCUS_DRIVER_ID, 94 DriverManager.FOCUS_DRIVER_ID, 95 DriverManager.MENU_DRIVER_ID, 96 DriverManager.ORDEREDLIST_DRIVER_ID}, 97 new Object[]{ 98 new JTreeMouseDriver(), 99 new JTreeMouseDriver(), 100 new JTreeMouseDriver(), 101 new AWTTextKeyboardDriver(), 102 new SwingTextKeyboardDriver(), 103 new ScrollbarDriver(), 104 new ScrollPaneDriver(), 105 new JScrollBarDriver(), 106 new JSplitPaneDriver(), 107 new JSliderDriver(), 108 createSpinnerDriver(), 109 new ButtonMouseDriver(), 110 new JTabMouseDriver(), 111 new ListKeyboardDriver(), 112 new ListKeyboardDriver(), 113 new JComboMouseDriver(), 114 new JListMouseDriver(), 115 new JListMouseDriver(), 116 new JTableMouseDriver(), 117 new ChoiceDriver(), 118 new DefaultFrameDriver(), 119 new DefaultWindowDriver(), 120 new DefaultInternalFrameDriver(), 121 new DefaultInternalFrameDriver(), 122 new DefaultInternalFrameDriver(), 123 new APIFocusDriver(), 124 new MouseFocusDriver(), 125 (shortcutEvents ? new QueueJMenuDriver() : new DefaultJMenuDriver()), 126 new JTableHeaderDriver()}); 127 } 128 129 /** 130 * Constructs a DefaultDriverInstaller object with shortcut mode flag taken 131 * from {@code JemmyProperties}. 132 */ 133 public DefaultDriverInstaller() { 134 this((JemmyProperties.getCurrentDispatchingModel() 135 & JemmyProperties.SHORTCUT_MODEL_MASK) != 0); 136 } 137 138 private static LightDriver createSpinnerDriver() { 139 if (System.getProperty("java.specification.version").compareTo("1.3") > 0) { 140 try { 141 return ((LightDriver) new ClassReference("org.netbeans.jemmy.drivers.scrolling.JSpinnerDriver"). 142 newInstance(null, null)); 143 } catch (ClassNotFoundException e) { 144 JemmyProperties.getCurrentOutput(). 145 printErrLine("ATTENTION! you are using Jemmy built by Java earlier then 1.4, under " 146 + "Java 1.4. \nImpossible to create JSpinnerDriver"); 147 return createEmptyDriver(); 148 } catch (Exception e) { 149 throw (new JemmyException("Impossible to create JSpinnerDriver although java version is " 150 + System.getProperty("java.version"), 151 e)); 152 } 153 } else { 154 return createEmptyDriver(); 155 } 156 } 157 158 private static LightDriver createEmptyDriver() { 159 return (new LightDriver() { 160 @Override 161 public String[] getSupported() { 162 return new String[]{Object.class.getName()}; 163 } 164 }); 165 } 166} 167