public void activate() throws TimeoutException {
if (log.isTraceEnabled())
log.trace("Activating " + SWTUtils.toString(getTabItem()));
checkEnabled();
// this runs in sync because tabFolder.setSelection() does not send a notification, and so should not block.
asyncExec(new VoidResult() {
public void run() {
TabItem tabItem = getTabItem();
tabItem.getParent().setSelection(tabItem);
if (log.isDebugEnabled())
log.debug("Activated " + tabItem);