package abbot.tester.swt; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.TreeListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; /* $codepro.preprocessor.if version >= 3.1 $ */ import org.eclipse.swt.widgets.TreeColumn; /* $codepro.preprocessor.endif $ */ /** * Provides widget-specific actions, assertions, and getter methods for * widgets of type Tree. */ public class TreeTester extends CompositeTester { public static final String copyright = "Licensed Materials -- Property of IBM\n"+ "(c) Copyright International Business Machines Corporation, 2003\nUS Government "+ "Users Restricted Rights - Use, duplication or disclosure restricted by GSA "+ "ADP Schedule Contract with IBM Corp."; /** * Proxy for * {@link Tree#addSelectionListener(SelectionListener)}. */ public void addSelectionListener(final Tree t, final SelectionListener listener) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.addSelectionListener(listener); } }); } /** * Proxy for * {@link Tree#addTreeListener(TreeListener)}. */ public void addTreeListener(final Tree t, final TreeListener listener) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.addTreeListener(listener); } }); } /** * Proxy for * {@link Tree#removeSelectionListener(SelectionListener)}. */ public void removeSelectionListener(final Tree t, final SelectionListener listener) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.removeSelectionListener(listener); } }); } /** * Proxy for * {@link Tree#removeTreeListener(TreeListener)}. */ public void removeTreeListener(final Tree t, final TreeListener listener) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.removeTreeListener(listener); } }); } /** * Proxy for {@link Tree#getColumnCount()}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public int getColumnCount(final Tree tree) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.getColumnCount()); } }); return result.intValue(); } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#getColumn(int)}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public TreeColumn getColumn(final Tree tree, final int index) { TreeColumn result = (TreeColumn) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return tree.getColumn(index); } }); return result; } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#getColumns()}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public TreeColumn [] getColumns(final Tree t) { List result = (List) Robot.syncExec(t.getDisplay(), new RunnableWithResult() { public Object runWithResult() { TreeColumn [] items = t.getColumns(); List list = new ArrayList(items.length); for (int i = 0; i < items.length; i++) { list.add(items[i]); } return list; } }); TreeColumn [] items = new TreeColumn [result.size()]; for (int i = 0; i < items.length; i++) { items[i] = (TreeColumn)result.get(i); } return items; } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#getGridLineWidth()()}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public int getGridLineWidth(final Tree tree) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.getGridLineWidth()); } }); return result.intValue(); } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#getHeaderHeight()()}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public int getHeaderHeight(final Tree tree) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.getHeaderHeight()); } }); return result.intValue(); } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#getHeaderVisible()()}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public boolean getHeaderVisible(final Tree tree) { Boolean result = (Boolean) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Boolean(tree.getHeaderVisible()); } }); return result.booleanValue(); } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#getItem(org.eclipse.swt.graphics.Point)}. * <p/> * @param tree the tree under test. * @param point the point under which the item to find. * @return the tree item under the point. */ public TreeItem getItem(final Tree tree, final Point point){ TreeItem result = (TreeItem) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return tree.getItem(point); } }); return result; } /** * Proxy for {@link Tree#getItemCount()}. * <p/> * @param tree the tree under test. * @return the number of items in the tree. */ public int getItemCount(final Tree tree) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.getItemCount()); } }); return result.intValue(); } /** * Proxy for {@link Tree#getItemHeight()}. * <p/> * @param tree the tree under test. * @return the height of the items. */ public int getItemHeight(final Tree tree) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.getItemHeight()); } }); return result.intValue(); } /** * Proxy for {@link Tree#getItems()}. * <p/> * @param tree the tree under test. * @return the children. */ public TreeItem[] getItems(final Tree tree) { TreeItem result[] = (TreeItem[]) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return tree.getItems(); } }); return result; } /** * Proxy for {@link TreeItem#getItems()}. * <p/> * @param tree the tree under test. * @return the children. */ public TreeItem[] getItems(final TreeItem treeItem) { TreeItem result[] = (TreeItem[]) Robot.syncExec(treeItem.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return treeItem.getItems(); } }); return result; } /** * Proxy for {@link Tree#getParentItem()}. * <p/> * @param tree the tree under test. * @return the parent tree item. */ public TreeItem getParentItem(final Tree tree) { TreeItem result = (TreeItem) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return tree.getParentItem(); } }); return result; } public boolean isSelected(Tree tree, TreeItem item) { TreeItem[] items = getSelection(tree); for (int i = 0; i < items.length; i++) { if (items[i] == item) return true; } return false; } /** * Proxy for {@link Tree#getSelection()}. * <p/> * @param tree the tree under test. * @return the selected items. */ public TreeItem[] getSelection(final Tree tree) { TreeItem[] result = (TreeItem[]) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return tree.getSelection(); } }); return result; } /** * Proxy for {@link Tree#getSelectionCount()}. * <p/> * @param tree the tree under test. * @return the number of selected items. */ public int getSelectionCount(final Tree tree) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.getSelectionCount()); } }); return result.intValue(); } /** * Proxy for {@link Tree#getTopItem()}. * <p/> * @param tree the tree under test. * @return the top item. */ public TreeItem getTopItem(final Tree tree) { TreeItem result = (TreeItem) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return tree.getTopItem(); } }); return result; } /** * Proxy for {@link Tree#indexOf(TreeColumn)}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public int indexOf(final Tree tree, final TreeColumn column) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.indexOf(column)); } }); return result.intValue(); } /* $codepro.preprocessor.endif $ */ /** * Proxy for {@link Tree#indexOf(TreeItem)}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public int indexOf(final Tree tree, final TreeItem item) { Integer result = (Integer) Robot.syncExec(tree.getDisplay(), new RunnableWithResult(){ public Object runWithResult(){ return new Integer(tree.indexOf(item)); } }); return result.intValue(); } /* $codepro.preprocessor.endif $ */ /** * Proxy for * {@link Tree#selectAll()}. */ public void selectAll(final Tree t) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.selectAll(); } }); } /** * Proxy for * {@link Tree#showColumn(TreeColumn)}. */ /* $codepro.preprocessor.if version >= 3.1 $ */ public void showColumn(final Tree t, final TreeColumn column) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.showColumn(column); } }); } /* $codepro.preprocessor.endif $ */ /** * Proxy for * {@link Tree#showItem(TreeItem)}. */ public void showItem(final Tree t, final TreeItem item) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.showItem(item); } }); } /** * Proxy for * {@link Tree#showSelection()}. */ public void showSelection(final Tree t) { Robot.syncExec(t.getDisplay(), null, new Runnable() { public void run() { t.showSelection(); } }); } /** Checks if the SWT.CHECK style bit is set for the given tree **/ public boolean isCheckStyleBitSet(final Tree tree) { Boolean result = (Boolean) Robot.syncExec(tree.getDisplay(),new RunnableWithResult(){ public Boolean runWithResult(){ return (tree.getStyle() & SWT.CHECK) != 0; } }); return result; } }