/**
   * Applies Open On (F3) on textToSelect within editor with editorTitle and checks if
   * expectedOpenedFileName was opened
   *
   * @param editorTitle
   * @param textToSelect
   * @param selectionOffset
   * @param selectionLength
   * @param textToSelectIndex
   * @param expectedOpenedFileName
   */
  public static SWTBotEditor checkOpenOnFileIsOpened(
      SWTBotExt bot,
      String editorTitle,
      String textToSelect,
      int selectionOffset,
      int selectionLength,
      int textToSelectIndex,
      String expectedOpenedFileName) {

    SWTBotEclipseEditor sourceEditor =
        SWTJBTExt.selectTextInSourcePane(
            bot, editorTitle, textToSelect, selectionOffset, selectionLength, textToSelectIndex);

    bot.sleep(Timing.time3S());

    sourceEditor.setFocus();
    // process UI Events
    UIThreadRunnable.syncExec(
        new VoidResult() {
          @Override
          public void run() {}
        });
    bot.sleep(Timing.time3S());
    new SWTUtilExt(bot).waitForNonIgnoredJobs();

    KeyboardHelper.typeKeyCodeUsingAWT(KeyEvent.VK_F3);
    // process UI Events
    UIThreadRunnable.syncExec(
        new VoidResult() {
          @Override
          public void run() {}
        });
    bot.sleep(Timing.time3S());
    new SWTUtilExt(bot).waitForNonIgnoredJobs();

    return checkActiveEditorTitle(bot, expectedOpenedFileName);
  }
 /** Test manage Drools Rules */
 @Test
 public void testManageDroolsRules() {
   createDroolsRule(DroolsAllBotTests.TEST_DROOLS_RULE_NAME);
   bot.sleep(Timing.time3S());
   debugDroolsRule(DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME);
 }
 /**
  * Adds External Jar File to Project Build Path. If External Jar File already exists and
  * 'overwriteIfExists' parameter is set to true, it is overwritten
  *
  * @param externalJarLocation
  * @param projectName
  * @return
  */
 public static String addExternalJar(
     final String externalJarLocation, final String projectName, boolean overwriteIfExists) {
   assertTrue(
       "External Jar Location cannot be empty but is " + externalJarLocation,
       externalJarLocation != null && externalJarLocation.length() > 0);
   SWTBotExt bot = new SWTEclipseExt().openPropertiesOfProject(projectName);
   bot.shell(IDELabel.Shell.PROPERTIES_FOR + " " + projectName).activate().bot();
   bot.tree()
       .expandNode(IDELabel.JavaBuildPathPropertiesEditor.JAVA_BUILD_PATH_TREE_ITEM_LABEL)
       .select();
   bot.sleep(Timing.time3S());
   bot.tabItem(IDELabel.JavaBuildPathPropertiesEditor.LIBRARIES_TAB_LABEL).activate();
   final SWTBotButton btn = bot.button(IDELabel.Button.ADD_VARIABLE);
   btn.click();
   bot.sleep(Timing.time2S());
   // workaround because first click is not working when test is run via maven
   try {
     bot.shell(IDELabel.Shell.NEW_VARIABLE_CLASS_PATH_ENTRY).activate();
   } catch (WidgetNotFoundException wnfe) {
     btn.click();
     bot.sleep(Timing.time2S());
     bot.shell(IDELabel.Shell.NEW_VARIABLE_CLASS_PATH_ENTRY).activate();
   }
   String jarFileName = new File(externalJarLocation).getName();
   String variableEntryName = jarFileName.toUpperCase() + "_LOCATION";
   boolean externalJarExists = false;
   for (int i = 0; i < bot.table().rowCount(); i++) {
     if (bot.table().getTableItem(i).getText().split(" - ")[0].equals(variableEntryName)) {
       bot.table().getTableItem(i).select();
       externalJarExists = true;
       break;
     }
   }
   bot.button(IDELabel.Button.CONFIGURE_VARIABLES).click();
   bot.shell(IDELabel.Shell.PREFERENCES_FILTERED).activate();
   if (externalJarExists && overwriteIfExists) {
     bot.button(IDELabel.Button.EDIT).click();
     bot.shell(IDELabel.Shell.EDIT_VARIABLE_ENTRY).activate();
     bot.textWithLabel(IDELabel.NewVariableEntryDialog.PATH_TEXT_LABEL)
         .setText(externalJarLocation);
   } else {
     bot.button(IDELabel.Button.NEW).click();
     bot.shell(IDELabel.Shell.NEW_VARIABLE_ENTRY).activate();
     bot.textWithLabel(IDELabel.NewVariableEntryDialog.NAME_TEXT_LABEL).setText(variableEntryName);
     bot.textWithLabel(IDELabel.NewVariableEntryDialog.PATH_TEXT_LABEL)
         .setText(externalJarLocation);
   }
   bot.clickButton(IDELabel.Button.OK).click();
   String result = TableHelper.getSelectionText(bot.table());
   bot.waitUntil(new ActiveShellTitleMatches(bot, "Preferences \\(Filtered\\)"), Timing.time3S());
   bot.clickButton(IDELabel.Button.OK).click();
   bot.waitUntil(
       new ActiveShellTitleMatches(bot, IDELabel.Shell.NEW_VARIABLE_CLASS_PATH_ENTRY),
       Timing.time3S());
   bot.clickButton(IDELabel.Button.OK).click();
   bot.waitUntil(
       new ActiveShellTitleMatches(bot, IDELabel.Shell.PROPERTIES_FOR + " " + projectName),
       Timing.time3S());
   bot.clickButton(IDELabel.Button.OK).click();
   new SWTUtilExt(bot).waitForNonIgnoredJobs();
   return result;
 }