package org.jboss.tools.bpmn2.reddeer;
import java.util.ArrayList;
import java.util.List;
import org.jboss.reddeer.common.condition.AbstractWaitCondition;
import org.jboss.reddeer.common.wait.TimePeriod;
import org.jboss.reddeer.common.wait.WaitUntil;
import org.jboss.reddeer.eclipse.ui.views.properties.PropertiesView;
import org.jboss.reddeer.eclipse.ui.views.properties.TabbedPropertyList;
public class WaitingPropertiesView extends PropertiesView {
@Override
public void selectTab(String label) {
activate();
List<String> old = new ArrayList<String>();
try {
old = new TabbedPropertyList().getTabs();
} catch (Exception ex) {
// probably not rendered yet
}
new WaitUntil(new AnotherTabsRendered(old), TimePeriod.NORMAL, false);
super.selectTab(label);
}
private class AnotherTabsRendered extends AbstractWaitCondition {
private List<String> old;
public AnotherTabsRendered(List<String> old) {
this.old = old;
}
@Override
public boolean test() {
List<String> actual = new ArrayList<String>();
try {
actual = new TabbedPropertyList().getTabs();
} catch (Exception ex) {
// probably not rendered yet
}
return !actual.equals(old);
}
@Override
public String description() {
return "Wait for tabs to be rendered";
}
}
}