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; 26 27 import org.netbeans.jemmy.JemmyException; 28 import org.netbeans.jemmy.JemmyProperties; 29 import org.netbeans.jemmy.operators.ComponentOperator; 30 31 /** 32 * Manages driver set. 33 */ 34 public class DriverManager { 35 36 /** 37 * Symbolic constant - prefix for drivers names. 38 */ 39 public static final String DRIVER_ID = "drivers."; 40 /** 41 * Symbolic constant for tree drivers. 42 */ 43 public static final String TREE_DRIVER_ID = DRIVER_ID + "tree"; 44 /** 45 * Symbolic constant for text drivers. 46 */ 47 public static final String TEXT_DRIVER_ID = DRIVER_ID + "text"; 48 /** 49 * Symbolic constant for key drivers. 50 */ 51 public static final String KEY_DRIVER_ID = DRIVER_ID + "key"; 52 /** 53 * Symbolic constant for mouse drivers. 54 */ 55 public static final String MOUSE_DRIVER_ID = DRIVER_ID + "mouse"; 56 /** 57 * Symbolic constant for scroll drivers. 58 */ 59 public static final String SCROLL_DRIVER_ID = DRIVER_ID + "scroll"; 60 /** 61 * Symbolic constant for button drivers. 62 */ 63 public static final String BUTTON_DRIVER_ID = DRIVER_ID + "button"; 64 /** 65 * Symbolic constant for list drivers. 66 */ 67 public static final String LIST_DRIVER_ID = DRIVER_ID + "list"; 68 /** 69 * Symbolic constant for multiselection list drivers. 70 */ 71 public static final String MULTISELLIST_DRIVER_ID = DRIVER_ID + "multisellist"; 72 /** 73 * Symbolic constant for reorderable list drivers. 74 */ 75 public static final String ORDEREDLIST_DRIVER_ID = DRIVER_ID + "orderedlist"; 76 /** 77 * Symbolic constant for table drivers. 78 */ 79 public static final String TABLE_DRIVER_ID = DRIVER_ID + "table"; 80 /** 81 * Symbolic constant for window drivers. 82 */ 83 public static final String WINDOW_DRIVER_ID = DRIVER_ID + "window"; 84 /** 85 * Symbolic constant for window drivers. 86 */ 87 public static final String FRAME_DRIVER_ID = DRIVER_ID + "frame"; 88 /** 89 * Symbolic constant for window drivers. 90 */ 91 public static final String INTERNAL_FRAME_DRIVER_ID = DRIVER_ID + "internal_frame"; 92 /** 93 * Symbolic constant for frame drivers. 94 */ 95 public static final String FOCUS_DRIVER_ID = DRIVER_ID + "focus"; 96 /** 97 * Symbolic constant for menu drivers. 98 */ 99 public static final String MENU_DRIVER_ID = DRIVER_ID + "menu"; 100 101 //cannot be instantiated! DriverManager()102 private DriverManager() { 103 } 104 105 /** 106 * Searches a driver. 107 * 108 * @param id Driver type id. 109 * @param operatorClass Class to get an driver for. 110 * @param props Instance to get driver from. 111 * @return a driver. 112 * @see #setDriver 113 */ getDriver(String id, Class<?> operatorClass, JemmyProperties props)114 public static Object getDriver(String id, Class<?> operatorClass, JemmyProperties props) { 115 Object result = getADriver(id, operatorClass, props); 116 if (result == null) { 117 return getDriver(id, operatorClass); 118 } else { 119 return result; 120 } 121 } 122 123 /** 124 * Searches a driver. Uses {@code operator.getProperties()} to receive 125 * JemmyProperties instance. 126 * 127 * @param id Driver type id. 128 * @param operator Operator to get an driver for. 129 * @return a driver. 130 * @see #setDriver 131 */ getDriver(String id, ComponentOperator operator)132 public static Object getDriver(String id, ComponentOperator operator) { 133 return getDriver(id, operator.getClass(), operator.getProperties()); 134 } 135 136 /** 137 * Searches a driver. Uses current JemmyProperties. 138 * 139 * @param id Driver type id. 140 * @param operatorClass Class to get an driver for. 141 * @return a driver. 142 * @see #setDriver 143 */ getDriver(String id, Class<?> operatorClass)144 public static Object getDriver(String id, Class<?> operatorClass) { 145 Object result = getADriver(id, operatorClass, JemmyProperties.getProperties()); 146 if (result == null) { 147 throw (new JemmyException("No \"" + id + "\" driver registered for " 148 + operatorClass.getName() + " class!")); 149 } else { 150 return result; 151 } 152 } 153 154 /** 155 * Sets driver for an operator class. 156 * 157 * @param id Driver type id. 158 * @param driver A driver to be installed. 159 * @param operatorClass Class to set driver for. 160 * @see #getDriver 161 */ setDriver(String id, Object driver, Class<?> operatorClass)162 public static void setDriver(String id, Object driver, Class<?> operatorClass) { 163 JemmyProperties. 164 setCurrentProperty(makeID(id, operatorClass), driver); 165 if (Boolean.getBoolean(DRIVER_ID + "trace_output")) { 166 JemmyProperties.getCurrentOutput().printLine("Installing " 167 + driver.getClass().getName() 168 + " drifer for " 169 + operatorClass.getName() 170 + " operators."); 171 } 172 } 173 174 /** 175 * Sets driver for an operator class name. 176 * 177 * @param id Driver type id. 178 * @param driver A driver to be installed. 179 * @param operatorClassName A name of operator class. 180 * @see #getDriver 181 */ setDriver(String id, Object driver, String operatorClassName)182 public static void setDriver(String id, Object driver, String operatorClassName) { 183 JemmyProperties. 184 setCurrentProperty(makeID(id, operatorClassName), driver); 185 if (Boolean.getBoolean(DRIVER_ID + "trace_output")) { 186 JemmyProperties.getCurrentOutput().printLine("Installing " 187 + driver.getClass().getName() 188 + " drifer for " 189 + operatorClassName 190 + " operators."); 191 } 192 } 193 194 /** 195 * Sets driver for all classes supported by driver. 196 * 197 * @param id Driver type id. 198 * @param driver A driver to be installed. 199 * @see #getDriver 200 */ setDriver(String id, Driver driver)201 public static void setDriver(String id, Driver driver) { 202 Class<?>[] supported = driver.getSupported(); 203 for (Class<?> aSupported : supported) { 204 setDriver(id, driver, aSupported); 205 } 206 } 207 208 /** 209 * Sets driver for all classes supported by driver. 210 * 211 * @param id Driver type id. 212 * @param driver A driver to be installed. 213 * @see #getDriver 214 */ setDriver(String id, LightDriver driver)215 public static void setDriver(String id, LightDriver driver) { 216 String[] supported = driver.getSupported(); 217 for (String aSupported : supported) { 218 setDriver(id, driver, aSupported); 219 } 220 } 221 222 /** 223 * Removes driver for operator class. 224 * 225 * @param id Driver type to remove. 226 * @param operatorClass Class to remove driver for. 227 */ removeDriver(String id, Class<?> operatorClass)228 public static void removeDriver(String id, Class<?> operatorClass) { 229 JemmyProperties. 230 removeCurrentProperty(makeID(id, operatorClass)); 231 if (Boolean.getBoolean(DRIVER_ID + "trace_output")) { 232 JemmyProperties.getCurrentOutput().printLine("Uninstalling a drifer for " 233 + operatorClass.getName() 234 + " operators."); 235 } 236 } 237 238 /** 239 * Removes driver for operator class. 240 * 241 * @param id Driver type to remove. 242 * @param operatorClassName A name of operator class. 243 */ removeDriver(String id, String operatorClassName)244 public static void removeDriver(String id, String operatorClassName) { 245 JemmyProperties. 246 removeCurrentProperty(makeID(id, operatorClassName)); 247 if (Boolean.getBoolean(DRIVER_ID + "trace_output")) { 248 JemmyProperties.getCurrentOutput().printLine("Uninstalling a drifer for " 249 + operatorClassName 250 + " operators."); 251 } 252 } 253 254 /** 255 * Removes driver for operator classes. 256 * 257 * @param id Driver type to remove. 258 * @param operatorClasses Classes to remove driver for. 259 */ removeDriver(String id, Class<?>[] operatorClasses)260 public static void removeDriver(String id, Class<?>[] operatorClasses) { 261 for (Class<?> operatorClass : operatorClasses) { 262 removeDriver(id, operatorClass); 263 } 264 } 265 266 /** 267 * Removes driver for operator classes. 268 * 269 * @param id Driver type to remove. 270 * @param operatorClassNames Names of operator classes. 271 */ removeDriver(String id, String[] operatorClassNames)272 public static void removeDriver(String id, String[] operatorClassNames) { 273 for (String operatorClassName : operatorClassNames) { 274 removeDriver(id, operatorClassName); 275 } 276 } 277 278 /** 279 * Removes driver for all supported classes. 280 * 281 * @param id Driver type to remove. 282 */ removeDrivers(String id)283 public static void removeDrivers(String id) { 284 String[] keys = JemmyProperties.getCurrentKeys(); 285 for (String key : keys) { 286 if (key.startsWith(id)) { 287 JemmyProperties. 288 removeCurrentProperty(key); 289 } 290 } 291 } 292 293 /** 294 * Returns {@code TREE_DRIVER_ID} driver. 295 * 296 * @param operatorClass Class to find driver for. 297 * @return a driver 298 * @see #setTreeDriver 299 */ getTreeDriver(Class<?> operatorClass)300 public static TreeDriver getTreeDriver(Class<?> operatorClass) { 301 return (TreeDriver) getDriver(TREE_DRIVER_ID, operatorClass); 302 } 303 304 /** 305 * Returns {@code TREE_DRIVER_ID} driver. 306 * 307 * @param operator Operator to find driver for. 308 * @return a driver 309 * @see #setTreeDriver 310 */ getTreeDriver(ComponentOperator operator)311 public static TreeDriver getTreeDriver(ComponentOperator operator) { 312 return (TreeDriver) getDriver(TREE_DRIVER_ID, operator.getClass()); 313 } 314 315 /** 316 * Defines {@code TREE_DRIVER_ID} driver. 317 * 318 * @param driver a driver 319 * @see #getTreeDriver 320 */ setTreeDriver(TreeDriver driver)321 public static void setTreeDriver(TreeDriver driver) { 322 setDriver(TREE_DRIVER_ID, driver); 323 } 324 325 /** 326 * Returns {@code TEXT_DRIVER_ID} driver. 327 * 328 * @param operatorClass Class to find driver for. 329 * @return a driver 330 * @see #setTextDriver 331 */ getTextDriver(Class<?> operatorClass)332 public static TextDriver getTextDriver(Class<?> operatorClass) { 333 return (TextDriver) getDriver(TEXT_DRIVER_ID, operatorClass); 334 } 335 336 /** 337 * Returns {@code TEXT_DRIVER_ID} driver. 338 * 339 * @param operator Operator to find driver for. 340 * @return a driver 341 * @see #setTextDriver 342 */ getTextDriver(ComponentOperator operator)343 public static TextDriver getTextDriver(ComponentOperator operator) { 344 return (TextDriver) getDriver(TEXT_DRIVER_ID, operator.getClass()); 345 } 346 347 /** 348 * Defines {@code TEXT_DRIVER_ID} driver. 349 * 350 * @param driver a driver 351 * @see #getTextDriver 352 */ setTextDriver(TextDriver driver)353 public static void setTextDriver(TextDriver driver) { 354 setDriver(TEXT_DRIVER_ID, driver); 355 } 356 357 /** 358 * Returns {@code KEY_DRIVER_ID} driver. 359 * 360 * @param operatorClass Class to find driver for. 361 * @return a driver 362 * @see #setKeyDriver 363 */ getKeyDriver(Class<?> operatorClass)364 public static KeyDriver getKeyDriver(Class<?> operatorClass) { 365 return (KeyDriver) getDriver(KEY_DRIVER_ID, operatorClass); 366 } 367 368 /** 369 * Returns {@code KEY_DRIVER_ID} driver. 370 * 371 * @param operator Operator to find driver for. 372 * @return a driver 373 * @see #setKeyDriver 374 */ getKeyDriver(ComponentOperator operator)375 public static KeyDriver getKeyDriver(ComponentOperator operator) { 376 return (KeyDriver) getDriver(KEY_DRIVER_ID, operator.getClass()); 377 } 378 379 /** 380 * Defines {@code KEY_DRIVER_ID} driver. 381 * 382 * @param driver a driver 383 * @see #getKeyDriver 384 */ setKeyDriver(KeyDriver driver)385 public static void setKeyDriver(KeyDriver driver) { 386 setDriver(KEY_DRIVER_ID, driver); 387 } 388 389 /** 390 * Returns {@code MOUSE_DRIVER_ID} driver. 391 * 392 * @param operatorClass Class to find driver for. 393 * @return a driver 394 * @see #setMouseDriver 395 */ getMouseDriver(Class<?> operatorClass)396 public static MouseDriver getMouseDriver(Class<?> operatorClass) { 397 return (MouseDriver) getDriver(MOUSE_DRIVER_ID, operatorClass); 398 } 399 400 /** 401 * Returns {@code MOUSE_DRIVER_ID} driver. 402 * 403 * @param operator Operator to find driver for. 404 * @return a driver 405 * @see #setMouseDriver 406 */ getMouseDriver(ComponentOperator operator)407 public static MouseDriver getMouseDriver(ComponentOperator operator) { 408 return (MouseDriver) getDriver(MOUSE_DRIVER_ID, operator.getClass()); 409 } 410 411 /** 412 * Defines {@code MOUSE_DRIVER_ID} driver. 413 * 414 * @param driver a driver 415 * @see #getMouseDriver 416 */ setMouseDriver(MouseDriver driver)417 public static void setMouseDriver(MouseDriver driver) { 418 setDriver(MOUSE_DRIVER_ID, driver); 419 } 420 421 /** 422 * Returns {@code SCROLL_DRIVER_ID} driver. 423 * 424 * @param operatorClass Class to find driver for. 425 * @return a driver 426 * @see #setScrollDriver 427 */ getScrollDriver(Class<?> operatorClass)428 public static ScrollDriver getScrollDriver(Class<?> operatorClass) { 429 return (ScrollDriver) getDriver(SCROLL_DRIVER_ID, operatorClass); 430 } 431 432 /** 433 * Returns {@code SCROLL_DRIVER_ID} driver. 434 * 435 * @param operator Operator to find driver for. 436 * @return a driver 437 * @see #setScrollDriver 438 */ getScrollDriver(ComponentOperator operator)439 public static ScrollDriver getScrollDriver(ComponentOperator operator) { 440 return (ScrollDriver) getDriver(SCROLL_DRIVER_ID, operator.getClass()); 441 } 442 443 /** 444 * Defines {@code SCROLL_DRIVER_ID} driver. 445 * 446 * @param driver a driver 447 * @see #getScrollDriver 448 */ setScrollDriver(ScrollDriver driver)449 public static void setScrollDriver(ScrollDriver driver) { 450 setDriver(SCROLL_DRIVER_ID, driver); 451 } 452 453 /** 454 * Returns {@code BUTTON_DRIVER_ID} driver. 455 * 456 * @param operatorClass Class to find driver for. 457 * @return a driver 458 * @see #setButtonDriver 459 */ getButtonDriver(Class<?> operatorClass)460 public static ButtonDriver getButtonDriver(Class<?> operatorClass) { 461 return (ButtonDriver) getDriver(BUTTON_DRIVER_ID, operatorClass); 462 } 463 464 /** 465 * Returns {@code BUTTON_DRIVER_ID} driver. 466 * 467 * @param operator Operator to find driver for. 468 * @return a driver 469 * @see #setButtonDriver 470 */ getButtonDriver(ComponentOperator operator)471 public static ButtonDriver getButtonDriver(ComponentOperator operator) { 472 return (ButtonDriver) getDriver(BUTTON_DRIVER_ID, operator.getClass()); 473 } 474 475 /** 476 * Defines {@code BUTTON_DRIVER_ID} driver. 477 * 478 * @param driver a driver 479 * @see #getButtonDriver 480 */ setButtonDriver(ButtonDriver driver)481 public static void setButtonDriver(ButtonDriver driver) { 482 setDriver(BUTTON_DRIVER_ID, driver); 483 } 484 485 /** 486 * Returns {@code LIST_DRIVER_ID} driver. 487 * 488 * @param operatorClass Class to find driver for. 489 * @return a driver 490 * @see #setListDriver 491 */ getListDriver(Class<?> operatorClass)492 public static ListDriver getListDriver(Class<?> operatorClass) { 493 return (ListDriver) getDriver(LIST_DRIVER_ID, operatorClass); 494 } 495 496 /** 497 * Returns {@code LIST_DRIVER_ID} driver. 498 * 499 * @param operator Operator to find driver for. 500 * @return a driver 501 * @see #setListDriver 502 */ getListDriver(ComponentOperator operator)503 public static ListDriver getListDriver(ComponentOperator operator) { 504 return (ListDriver) getDriver(LIST_DRIVER_ID, operator.getClass()); 505 } 506 507 /** 508 * Defines {@code LIST_DRIVER_ID} driver. 509 * 510 * @param driver a driver 511 * @see #getListDriver 512 */ setListDriver(ListDriver driver)513 public static void setListDriver(ListDriver driver) { 514 setDriver(LIST_DRIVER_ID, driver); 515 } 516 517 /** 518 * Returns {@code MULTISELLIST_DRIVER_ID} driver. 519 * 520 * @param operatorClass Class to find driver for. 521 * @return a driver 522 * @see #setMultiSelListDriver 523 */ getMultiSelListDriver(Class<?> operatorClass)524 public static MultiSelListDriver getMultiSelListDriver(Class<?> operatorClass) { 525 return (MultiSelListDriver) getDriver(MULTISELLIST_DRIVER_ID, operatorClass); 526 } 527 528 /** 529 * Returns {@code MULTISELLIST_DRIVER_ID} driver. 530 * 531 * @param operator Operator to find driver for. 532 * @return a driver 533 * @see #setMultiSelListDriver 534 */ getMultiSelListDriver(ComponentOperator operator)535 public static MultiSelListDriver getMultiSelListDriver(ComponentOperator operator) { 536 return (MultiSelListDriver) getDriver(MULTISELLIST_DRIVER_ID, operator.getClass()); 537 } 538 539 /** 540 * Defines {@code MULTISELLIST_DRIVER_ID} driver. 541 * 542 * @param driver a driver 543 * @see #getMultiSelListDriver 544 */ setMultiSelListDriver(MultiSelListDriver driver)545 public static void setMultiSelListDriver(MultiSelListDriver driver) { 546 setDriver(MULTISELLIST_DRIVER_ID, driver); 547 } 548 549 /** 550 * Returns {@code ORDEREDLIST_DRIVER_ID} driver. 551 * 552 * @param operatorClass Class to find driver for. 553 * @return a driver 554 * @see #setOrderedListDriver 555 */ getOrderedListDriver(Class<?> operatorClass)556 public static OrderedListDriver getOrderedListDriver(Class<?> operatorClass) { 557 return (OrderedListDriver) getDriver(ORDEREDLIST_DRIVER_ID, operatorClass); 558 } 559 560 /** 561 * Returns {@code ORDEREDLIST_DRIVER_ID} driver. 562 * 563 * @param operator Operator to find driver for. 564 * @return a driver 565 * @see #setOrderedListDriver 566 */ getOrderedListDriver(ComponentOperator operator)567 public static OrderedListDriver getOrderedListDriver(ComponentOperator operator) { 568 return (OrderedListDriver) getDriver(ORDEREDLIST_DRIVER_ID, operator.getClass()); 569 } 570 571 /** 572 * Defines {@code ORDEREDLIST_DRIVER_ID} driver. 573 * 574 * @param driver a driver 575 * @see #getOrderedListDriver 576 */ setOrderedListDriver(OrderedListDriver driver)577 public static void setOrderedListDriver(OrderedListDriver driver) { 578 setDriver(ORDEREDLIST_DRIVER_ID, driver); 579 } 580 581 /** 582 * Returns {@code TABLE_DRIVER_ID} driver. 583 * 584 * @param operatorClass Class to find driver for. 585 * @return a driver 586 * @see #setTableDriver 587 */ getTableDriver(Class<?> operatorClass)588 public static TableDriver getTableDriver(Class<?> operatorClass) { 589 return (TableDriver) getDriver(TABLE_DRIVER_ID, operatorClass); 590 } 591 592 /** 593 * Returns {@code TABLE_DRIVER_ID} driver. 594 * 595 * @param operator Operator to find driver for. 596 * @return a driver 597 * @see #setTableDriver 598 */ getTableDriver(ComponentOperator operator)599 public static TableDriver getTableDriver(ComponentOperator operator) { 600 return (TableDriver) getDriver(TABLE_DRIVER_ID, operator.getClass()); 601 } 602 603 /** 604 * Defines {@code TABLE_DRIVER_ID} driver. 605 * 606 * @param driver a driver 607 * @see #getTableDriver 608 */ setTableDriver(TableDriver driver)609 public static void setTableDriver(TableDriver driver) { 610 setDriver(TABLE_DRIVER_ID, driver); 611 } 612 613 /** 614 * Returns {@code WINDOW_DRIVER_ID} driver. 615 * 616 * @param operatorClass Class to find driver for. 617 * @return a driver 618 * @see #setWindowDriver 619 */ getWindowDriver(Class<?> operatorClass)620 public static WindowDriver getWindowDriver(Class<?> operatorClass) { 621 return (WindowDriver) getDriver(WINDOW_DRIVER_ID, operatorClass); 622 } 623 624 /** 625 * Returns {@code WINDOW_DRIVER_ID} driver. 626 * 627 * @param operator Operator to find driver for. 628 * @return a driver 629 * @see #setWindowDriver 630 */ getWindowDriver(ComponentOperator operator)631 public static WindowDriver getWindowDriver(ComponentOperator operator) { 632 return (WindowDriver) getDriver(WINDOW_DRIVER_ID, operator.getClass()); 633 } 634 635 /** 636 * Defines {@code WINDOW_DRIVER_ID} driver. 637 * 638 * @param driver a driver 639 * @see #getWindowDriver 640 */ setWindowDriver(WindowDriver driver)641 public static void setWindowDriver(WindowDriver driver) { 642 setDriver(WINDOW_DRIVER_ID, driver); 643 } 644 645 /** 646 * Returns {@code FRAME_DRIVER_ID} driver. 647 * 648 * @param operatorClass Class to find driver for. 649 * @return a driver 650 * @see #setFrameDriver 651 */ getFrameDriver(Class<?> operatorClass)652 public static FrameDriver getFrameDriver(Class<?> operatorClass) { 653 return (FrameDriver) getDriver(FRAME_DRIVER_ID, operatorClass); 654 } 655 656 /** 657 * Returns {@code FRAME_DRIVER_ID} driver. 658 * 659 * @param operator Operator to find driver for. 660 * @return a driver 661 * @see #setFrameDriver 662 */ getFrameDriver(ComponentOperator operator)663 public static FrameDriver getFrameDriver(ComponentOperator operator) { 664 return (FrameDriver) getDriver(FRAME_DRIVER_ID, operator.getClass()); 665 } 666 667 /** 668 * Defines {@code FRAME_DRIVER_ID} driver. 669 * 670 * @param driver a driver 671 * @see #getFrameDriver 672 */ setFrameDriver(FrameDriver driver)673 public static void setFrameDriver(FrameDriver driver) { 674 setDriver(FRAME_DRIVER_ID, driver); 675 } 676 677 /** 678 * Returns {@code INTERNAL_FRAME_DRIVER_ID} driver. 679 * 680 * @param operatorClass Class to find driver for. 681 * @return a driver 682 * @see #setInternalFrameDriver 683 */ getInternalFrameDriver(Class<?> operatorClass)684 public static InternalFrameDriver getInternalFrameDriver(Class<?> operatorClass) { 685 return (InternalFrameDriver) getDriver(INTERNAL_FRAME_DRIVER_ID, operatorClass); 686 } 687 688 /** 689 * Returns {@code INTERNAL_FRAME_DRIVER_ID} driver. 690 * 691 * @param operator Operator to find driver for. 692 * @return a driver 693 * @see #setInternalFrameDriver 694 */ getInternalFrameDriver(ComponentOperator operator)695 public static InternalFrameDriver getInternalFrameDriver(ComponentOperator operator) { 696 return (InternalFrameDriver) getDriver(INTERNAL_FRAME_DRIVER_ID, operator.getClass()); 697 } 698 699 /** 700 * Defines {@code INTERNAL_FRAME_DRIVER_ID} driver. 701 * 702 * @param driver a driver 703 * @see #getInternalFrameDriver 704 */ setInternalFrameDriver(InternalFrameDriver driver)705 public static void setInternalFrameDriver(InternalFrameDriver driver) { 706 setDriver(INTERNAL_FRAME_DRIVER_ID, driver); 707 } 708 709 /** 710 * Returns {@code FOCUS_DRIVER_ID} driver. 711 * 712 * @param operatorClass Class to find driver for. 713 * @return a driver 714 * @see #setFocusDriver 715 */ getFocusDriver(Class<?> operatorClass)716 public static FocusDriver getFocusDriver(Class<?> operatorClass) { 717 return (FocusDriver) getDriver(FOCUS_DRIVER_ID, operatorClass); 718 } 719 720 /** 721 * Returns {@code FOCUS_DRIVER_ID} driver. 722 * 723 * @param operator Operator to find driver for. 724 * @return a driver 725 * @see #setFocusDriver 726 */ getFocusDriver(ComponentOperator operator)727 public static FocusDriver getFocusDriver(ComponentOperator operator) { 728 return (FocusDriver) getDriver(FOCUS_DRIVER_ID, operator.getClass()); 729 } 730 731 /** 732 * Defines {@code FOCUS_DRIVER_ID} driver. 733 * 734 * @param driver a driver 735 * @see #getFocusDriver 736 */ setFocusDriver(FocusDriver driver)737 public static void setFocusDriver(FocusDriver driver) { 738 setDriver(FOCUS_DRIVER_ID, driver); 739 } 740 741 /** 742 * Returns {@code MENU_DRIVER_ID} driver. 743 * 744 * @param operatorClass Class to find driver for. 745 * @return a driver 746 * @see #setMenuDriver 747 */ getMenuDriver(Class<?> operatorClass)748 public static MenuDriver getMenuDriver(Class<?> operatorClass) { 749 return (MenuDriver) getDriver(MENU_DRIVER_ID, operatorClass); 750 } 751 752 /** 753 * Returns {@code MENU_DRIVER_ID} driver. 754 * 755 * @param operator Operator to find driver for. 756 * @return a driver 757 * @see #setMenuDriver 758 */ getMenuDriver(ComponentOperator operator)759 public static MenuDriver getMenuDriver(ComponentOperator operator) { 760 return (MenuDriver) getDriver(MENU_DRIVER_ID, operator.getClass()); 761 } 762 763 /** 764 * Defines {@code MENU_DRIVER_ID} driver. 765 * 766 * @param driver a driver 767 * @see #getMenuDriver 768 */ setMenuDriver(MenuDriver driver)769 public static void setMenuDriver(MenuDriver driver) { 770 setDriver(MENU_DRIVER_ID, driver); 771 } 772 setDriver(String id, Object driver)773 static void setDriver(String id, Object driver) { 774 if (driver instanceof Driver) { 775 setDriver(id, (Driver) driver); 776 } else if (driver instanceof LightDriver) { 777 setDriver(id, (LightDriver) driver); 778 } else { 779 throw (new JemmyException("Driver is neither Driver nor LightDriver " 780 + driver.toString())); 781 } 782 } 783 784 //creates driver id makeID(String id, Class<?> operatorClass)785 private static String makeID(String id, Class<?> operatorClass) { 786 return makeID(id, operatorClass.getName()); 787 } 788 makeID(String id, String operatorClassName)789 private static String makeID(String id, String operatorClassName) { 790 return id + "." + operatorClassName; 791 } 792 793 //returns a driver getADriver(String id, Class<?> operatorClass, JemmyProperties props)794 private static Object getADriver(String id, Class<?> operatorClass, JemmyProperties props) { 795 Class<?> superClass = operatorClass; 796 Object drvr; 797 do { 798 drvr = props. 799 getProperty(makeID(id, superClass)); 800 if (drvr != null) { 801 return drvr; 802 } 803 } while (ComponentOperator.class. 804 isAssignableFrom(superClass = superClass.getSuperclass())); 805 return null; 806 } 807 808 static { 809 new InputDriverInstaller().install(); 810 new DefaultDriverInstaller().install(); 811 } 812 } 813