package org.jboss.tools.switchyard.reddeer.condition; import java.util.ArrayList; import java.util.List; import org.hamcrest.Matcher; import org.jboss.reddeer.common.condition.AbstractWaitCondition; import org.jboss.reddeer.swt.api.Table; import org.jboss.reddeer.swt.api.TableItem; public class TableHasRow extends AbstractWaitCondition { private Table table; private Matcher<String> matcher; private List<TableItem> items; public TableHasRow(Table table, Matcher<String> matcher) { this.table = table; this.matcher = matcher; this.items = new ArrayList<TableItem>(); } @Override public boolean test() { items = table.getItems(); for (TableItem item : items) { if (!item.getSWTWidget().isDisposed() && matcher.matches(item.getText())) { item.select(); return true; } } return false; } @Override public String description() { StringBuffer message = new StringBuffer(); message.append("an item matching ").append(matcher.toString()).append(" in\n"); for (TableItem item : items) { String text = null; if (!item.getSWTWidget().isDisposed()) { text = item.getText(); } message.append("\t").append(text).append("\n"); } return message.toString(); } }