APIDriverInstaller.java revision 13978:1993af50385d
1181834Sroberto/* 2181834Sroberto * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 3181834Sroberto * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4181834Sroberto * 5181834Sroberto * This code is free software; you can redistribute it and/or modify it 6290001Sglebius * under the terms of the GNU General Public License version 2 only, as 7290001Sglebius * published by the Free Software Foundation. 8290001Sglebius * 9290001Sglebius * This code is distributed in the hope that it will be useful, but WITHOUT 10181834Sroberto * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11290001Sglebius * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12290001Sglebius * version 2 for more details (a copy is included in the LICENSE file that 13290001Sglebius * accompanied this code). 14290001Sglebius * 15290001Sglebius * You should have received a copy of the GNU General Public License version 16181834Sroberto * 2 along with this work; if not, write to the Free Software Foundation, 17181834Sroberto * 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.JTabAPIDriver; 35import org.netbeans.jemmy.drivers.lists.JTableHeaderDriver; 36import org.netbeans.jemmy.drivers.lists.ListKeyboardDriver; 37import org.netbeans.jemmy.drivers.menus.AppleMenuDriver; 38import org.netbeans.jemmy.drivers.menus.DefaultJMenuDriver; 39import org.netbeans.jemmy.drivers.menus.QueueJMenuDriver; 40import org.netbeans.jemmy.drivers.scrolling.JScrollBarAPIDriver; 41import org.netbeans.jemmy.drivers.scrolling.JSliderAPIDriver; 42import org.netbeans.jemmy.drivers.scrolling.JSplitPaneDriver; 43import org.netbeans.jemmy.drivers.scrolling.ScrollPaneDriver; 44import org.netbeans.jemmy.drivers.scrolling.ScrollbarDriver; 45import org.netbeans.jemmy.drivers.tables.JTableMouseDriver; 46import org.netbeans.jemmy.drivers.text.AWTTextKeyboardDriver; 47import org.netbeans.jemmy.drivers.text.SwingTextKeyboardDriver; 48import org.netbeans.jemmy.drivers.trees.JTreeAPIDriver; 49import org.netbeans.jemmy.drivers.windows.DefaultFrameDriver; 50import org.netbeans.jemmy.drivers.windows.DefaultInternalFrameDriver; 51import org.netbeans.jemmy.drivers.windows.DefaultWindowDriver; 52 53/** 54 * Installs all necessary drivers for Jemmy operators except low-level drivers 55 * which are installed by 56 * <a href="InputDriverInstaller.java">InputDriverInstaller</a>. 57 * 58 * @author Alexandre Iline(alexandre.iline@oracle.com) 59 */ 60public class APIDriverInstaller extends ArrayDriverInstaller { 61 62 /** 63 * Constructs a DefaultDriverInstaller object. 64 * 65 * @param shortcutEvents Signals whether shortcut mode is used. 66 */ 67 public APIDriverInstaller(boolean shortcutEvents) { 68 super(new String[]{ 69 DriverManager.LIST_DRIVER_ID, 70 DriverManager.MULTISELLIST_DRIVER_ID, 71 DriverManager.TREE_DRIVER_ID, 72 DriverManager.TEXT_DRIVER_ID, 73 DriverManager.TEXT_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.SCROLL_DRIVER_ID, 80 DriverManager.BUTTON_DRIVER_ID, 81 DriverManager.LIST_DRIVER_ID, 82 DriverManager.LIST_DRIVER_ID, 83 DriverManager.MULTISELLIST_DRIVER_ID, 84 DriverManager.LIST_DRIVER_ID, 85 DriverManager.LIST_DRIVER_ID, 86 DriverManager.MULTISELLIST_DRIVER_ID, 87 DriverManager.TABLE_DRIVER_ID, 88 DriverManager.LIST_DRIVER_ID, 89 DriverManager.FRAME_DRIVER_ID, 90 DriverManager.WINDOW_DRIVER_ID, 91 DriverManager.FRAME_DRIVER_ID, 92 DriverManager.INTERNAL_FRAME_DRIVER_ID, 93 DriverManager.WINDOW_DRIVER_ID, 94 DriverManager.FOCUS_DRIVER_ID, 95 DriverManager.FOCUS_DRIVER_ID, 96 DriverManager.MENU_DRIVER_ID, 97 DriverManager.MENU_DRIVER_ID, 98 DriverManager.ORDEREDLIST_DRIVER_ID}, 99 new Object[]{ 100 new JTreeAPIDriver(), 101 new JTreeAPIDriver(), 102 new JTreeAPIDriver(), 103 new AWTTextKeyboardDriver(), 104 new SwingTextKeyboardDriver(), 105 new ScrollbarDriver(), 106 new ScrollPaneDriver(), 107 new JScrollBarAPIDriver(), 108 new JSplitPaneDriver(), 109 new JSliderAPIDriver(), 110 createSpinnerDriver(), 111 new ButtonMouseDriver(), 112 new JTabAPIDriver(), 113 new ListKeyboardDriver(), 114 new ListKeyboardDriver(), 115 new JComboMouseDriver(), 116 new JListMouseDriver(), 117 new JListMouseDriver(), 118 new JTableMouseDriver(), 119 new ChoiceDriver(), 120 new DefaultFrameDriver(), 121 new DefaultWindowDriver(), 122 new DefaultInternalFrameDriver(), 123 new DefaultInternalFrameDriver(), 124 new DefaultInternalFrameDriver(), 125 new APIFocusDriver(), 126 new MouseFocusDriver(), 127 (shortcutEvents ? new QueueJMenuDriver() : new DefaultJMenuDriver()), 128 ((System.getProperty("apple.laf.useScreenMenuBar") != null 129 && System.getProperty("apple.laf.useScreenMenuBar").equals("true")) ? new AppleMenuDriver() 130 : (shortcutEvents ? new QueueJMenuDriver() : new DefaultJMenuDriver())), 131 new JTableHeaderDriver()}); 132 } 133 134 /** 135 * Constructs a DefaultDriverInstaller object with shortcut mode flag taken 136 * from {@code JemmyProperties}. 137 */ 138 public APIDriverInstaller() { 139 this((JemmyProperties.getCurrentDispatchingModel() 140 & JemmyProperties.SHORTCUT_MODEL_MASK) != 0); 141 } 142 143 private static LightDriver createSpinnerDriver() { 144 if (System.getProperty("java.specification.version").compareTo("1.3") > 0) { 145 try { 146 return ((LightDriver) new ClassReference("org.netbeans.jemmy.drivers.scrolling.JSpinnerDriver"). 147 newInstance(null, null)); 148 } catch (ClassNotFoundException e) { 149 JemmyProperties.getCurrentOutput(). 150 printErrLine("ATTENTION! you are using Jemmy built by Java earlier then 1.4, under " 151 + "Java 1.4. \nImpossible to create JSpinnerDriver"); 152 return createEmptyDriver(); 153 } catch (Exception e) { 154 throw (new JemmyException("Impossible to create JSpinnerDriver although java version is " 155 + System.getProperty("java.version"), 156 e)); 157 } 158 } else { 159 return createEmptyDriver(); 160 } 161 } 162 163 private static LightDriver createEmptyDriver() { 164 return (new LightDriver() { 165 @Override 166 public String[] getSupported() { 167 return new String[]{Object.class.getName()}; 168 } 169 }); 170 } 171} 172