package org.jboss.tools.drools.reddeer.util;
import java.util.List;
import org.apache.log4j.Logger;
import org.hamcrest.Matcher;
import org.jboss.reddeer.swt.api.Table;
import org.jboss.reddeer.swt.api.TableItem;
import org.jboss.reddeer.swt.api.Tree;
import org.jboss.reddeer.swt.api.TreeItem;
public final class ItemLookup {
private static final Logger LOGGER = Logger.getLogger(ItemLookup.class);
public static TreeItem getItemInTree(Tree tree, Matcher<String>... matchers) {
List<TreeItem> treeItems = tree.getItems();
TreeItem result = null;
for (int i = 0; i < matchers.length; i++) {
for (TreeItem item : treeItems) {
// this is done because of the debug view - getText() on unseen lines returns empty string
item.select();
if (matchers[i].matches(item.getText())) {
if (i == matchers.length - 1) {
result = item;
} else {
treeItems = item.getItems();
}
break;
}
}
}
return result;
}
public static TableItem getItemInTable(Table table, Matcher<String>... matchers) {
List<TableItem> tableItems = table.getItems();
TableItem result = null;
for (int i = 0; i < matchers.length; i++) {
LOGGER.debug(tableItems);
for (TableItem item : tableItems) {
item.select();
if (matchers[i].matches(item.getText())) {
if (i == matchers.length - 1) {
result = item;
} else {
item.doubleClick();
tableItems = table.getItems();
}
break;
}
}
}
return result;
}
}