package org.jboss.tools.bpmn2.reddeer; import java.util.ArrayList; import java.util.List; import org.hamcrest.Matcher; import org.jboss.reddeer.eclipse.ui.views.contentoutline.OutlineView; import org.jboss.reddeer.swt.api.Tree; import org.jboss.reddeer.swt.api.TreeItem; import org.jboss.reddeer.swt.impl.tree.DefaultTree; import org.jboss.tools.bpmn2.reddeer.matcher.TreeItemWithText; /** * */ public class DefaultOutlineView extends OutlineView { /** * * @param label */ public void select(String label) { TreeItem itemToSelect = null; open(); itemToSelect = findItem(label); if (itemToSelect == null) { throw new RuntimeException("Cannot find activity with label '" + label + "'"); } itemToSelect.select(); } /** * * @param label * @return */ public TreeItem findItem(String label) { return findItem(label, 0); } /** * * @param label * @param index * @return */ public TreeItem findItem(String label, int index) { List<TreeItem> foundItems = findItems(new TreeItemWithText(label)); if (foundItems.isEmpty()) { throw new RuntimeException("Cannot find TreeItem with text '" + label + "' at index '" + index + "'"); } return foundItems.get(index); } /** * * @param matcher * @return */ public List<TreeItem> findItems(Matcher<TreeItem> matcher) { List<TreeItem> items = new ArrayList<TreeItem>(); Tree tree = new DefaultTree(); List<TreeItem> allItems = tree.getAllItems(); for (TreeItem item : allItems) { if (matcher.matches(item)) { items.add(item); } } return items; } }