/*******************************************************************************
* Copyright (c) 2009 SWTBot Committers and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Toby Weston - initial API and implementation (Bug 259860)
*******************************************************************************/
package org.eclipse.swtbot.swt.finder.widgets;
import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.withMnemonic;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.TrayItem;
import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
import org.eclipse.swtbot.swt.finder.finders.EventContextMenuFinder;
import org.hamcrest.Matcher;
/**
* Represents a tray item.
*
* @author Toby Weston (Bug 259860)
* @version $Id$
*/
public class SWTBotTrayItem extends AbstractSWTBot<TrayItem> {
/**
* Constructs a new instance with the given widget.
*
* @param widget the tray item.
* @throws WidgetNotFoundException if the widget is <code>null</code> or widget has been disposed.
*/
public SWTBotTrayItem(TrayItem widget) throws WidgetNotFoundException {
super(widget);
}
public SWTBotMenu contextMenu(String label) throws WidgetNotFoundException {
EventContextMenuFinder finder = new EventContextMenuFinder();
try {
finder.register();
notify(SWT.MenuDetect);
Matcher<MenuItem> withMnemonic = withMnemonic(label);
List<MenuItem> menus = finder.findMenus(withMnemonic);
if (menus.isEmpty())
throw new WidgetNotFoundException("Could not find a menu item");
return new SWTBotMenu(menus.get(0));
} finally {
finder.unregister();
}
}
/**
* Convenience API for {@link #contextMenu(String)}
*/
public SWTBotMenu menu(String label) {
return contextMenu(label);
}
}