/******************************************************************************* * Copyright Technophobia Ltd 2012 * * This file is part of the Substeps Eclipse Plugin. * * The Substeps Eclipse Plugin is free software: you can redistribute it and/or modify * it under the terms of the Eclipse Public License v1.0. * * The Substeps Eclipse Plugin is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Eclipse Public License for more details. * * You should have received a copy of the Eclipse Public License * along with the Substeps Eclipse Plugin. If not, see <http://www.eclipse.org/legal/epl-v10.html>. ******************************************************************************/ package com.technophobia.substeps.test.component.general; import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException; import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import com.technophobia.substeps.test.component.AbstractSWTLocatable; import com.technophobia.substeps.test.component.SWTComponent; public class TreeItemSWTComponent extends AbstractSWTLocatable<SWTBotTreeItem> implements SWTComponent<SWTBotTreeItem> { private final String nodeName; private final SWTComponent<? extends AbstractSWTBot<?>> parent; public TreeItemSWTComponent(final String nodeName, final TreeSWTComponent parent) { this.nodeName = nodeName; this.parent = parent; } protected TreeItemSWTComponent(final String nodeName, final TreeItemSWTComponent parent) { this.nodeName = nodeName; this.parent = parent; } public TreeItemSWTComponent select(final String newNodeName) { locate().select(newNodeName); return new TreeItemSWTComponent(newNodeName, this); } public void expand() { locate().expand(); } public void doubleClick() { locate().doubleClick(); } public void clickDelete() { locate().contextMenu("Delete").click(); } public boolean isItemExist(final String subItemName) { try { final SWTBotTreeItem subItem = locate().getNode(subItemName); return subItem != null; } catch (final WidgetNotFoundException ex) { return false; } } @Override public SWTBotTreeItem doLocate() { final AbstractSWTBot<?> locatedParent = parent.locate(); if (locatedParent instanceof SWTBotTree) { return ((SWTBotTree) locatedParent).getTreeItem(nodeName); } else if (locatedParent instanceof SWTBotTreeItem) { return ((SWTBotTreeItem) locatedParent).getNode(nodeName); } else { throw new IllegalStateException("Expected a tree item, but got a " + locatedParent.getClass()); } } }