package org.robotframework.swing.list;
import org.netbeans.jemmy.Waitable;
public class ListFindItemIndexWaitable implements Waitable {
private String itemIdentifier;
private CellTextExtractor itemTextExtractor;
public ListFindItemIndexWaitable(CellTextExtractor itemTextExtractor, String itemIdentifier) {
this.itemTextExtractor = itemTextExtractor;
this.itemIdentifier = itemIdentifier;
}
public Object actionProduced(Object obj) {
int index = findItemIndexWithRenderer(itemIdentifier);
if (index == -1)
return null;
return new Integer(index);
}
private int findItemIndexWithRenderer(String expectedText) {
for (int itemIndex = 0, itemCount = itemTextExtractor.itemCount(); itemIndex < itemCount; itemIndex++) {
String text = itemTextExtractor.getTextFromRenderedComponent(itemIndex);
if (expectedText.equals(text))
return itemIndex;
}
throw new RuntimeException("Couldn't find text '" + expectedText + "'");
}
public String getDescription() {
return "Couldn't find item: '"+itemIdentifier+"' from the list.";
}
}