package abbot.tester.swt;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
/**
* Provides widget-specific actions, assertions, and getter methods for
* widgets of type TabFolder.
*/
public class TabFolderTester 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 TabFolder.addSelectionListener(SelectionListener listener).
*/
public void addSelectionListener(final TabFolder t, final SelectionListener listener) {
Robot.syncExec(t.getDisplay(), null, new Runnable() {
public void run() {
t.addSelectionListener(listener);
}
});
}
/**
* Proxy for {@link TabFolder#getClientArea()}.
*/
public Rectangle getClientArea(final TabFolder t) {
Rectangle result = (Rectangle) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
return t.getClientArea();
}
});
return result;
}
/**
* Proxy for {@link TabFolder#getItem(int)}.
*/
public TabItem getItem(final TabFolder t, final int index) {
TabItem result = (TabItem) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
return t.getItem(index);
}
});
return result;
}
/**
* Proxy for {@link TabFolder#getItemCount()}.
*/
public int getItemCount(final TabFolder t) {
Integer result = (Integer) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
return new Integer(t.getItemCount());
}
});
return result.intValue();
}
/**
* Proxy for {@link TabFolder#getItems()}.
*/
public TabItem [] getItems(final TabFolder t) {
List result = (List) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
TabItem [] items = t.getItems();
List list = new ArrayList(items.length);
//!pq: fix to actually *add* the items...
list.addAll(Arrays.asList(items));
return list;
}
});
TabItem [] items = new TabItem [result.size()];
for (int i = 0; i < items.length; i++) {
items[i] = (TabItem)result.get(i);
}
return items;
}
/**
* Proxy for {@link TabFolder#getSelection()}.
*/
public TabItem [] getSelection(final TabFolder t) {
TabItem [] result = (TabItem []) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
return t.getSelection();
}
});
return result;
}
/**
* Returns the first selected TabItem, or null, if no items are selected.
*
* @param t
* @return
*/
public TabItem getSelectionItem(final TabFolder t) {
TabItem [] array = getSelection(t);
if (array.length > 0) return array[0];
return null;
}
/**
* Proxy for {@link TabFolder#getSelectionIndex()}.
*/
public int getSelectionIndex(final TabFolder t) {
Integer result = (Integer) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
return new Integer(t.getSelectionIndex());
}
});
return result.intValue();
}
/**
* Proxy for {@link TabFolder#indexOf(TabItem)}.
*/
public int indexOf(final TabFolder t, final TabItem item) {
Integer result = (Integer) Robot.syncExec(t.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
return new Integer(t.indexOf(item));
}
});
return result.intValue();
}
/**
* Proxy for {@link TabFolder.setSelection(int).
*/
public void setSelection(final TabFolder t, final int index) {
Robot.syncExec(t.getDisplay(), null, new Runnable() {
public void run() {
t.setSelection(index);
}
});
}
/**
* Proxy for {@link TabFolder.removeSelectionListener(SelectionListener listener).
*/
public void removeSelectionListener(final TabFolder t, final SelectionListener listener) {
Robot.syncExec(t.getDisplay(), null, new Runnable() {
public void run() {
t.removeSelectionListener(listener);
}
});
}
}