package abbot.tester.swt;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class MenuTester extends WidgetTester {
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.";
public static final String POPUP_ROOT_FLAG = "POPUP_ROOT";
public static final String ROOT_FLAG ="MENU_ROOT";
// TODO Put methods from WidgetTester into MenuTester and add getters
/* Use the Menu's parentItem to getText */
public String getText(final Menu menu){
String result = (String) Robot.syncExec(menu.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
String s = "";
MenuItem parentItem = menu.getParentItem();
if(parentItem != null){
s = parentItem.getText();
}
if (s == null || s.equals("")) {
if ((menu.getStyle() & SWT.POP_UP) > 0) {
s = POPUP_ROOT_FLAG;
} else {
s = ROOT_FLAG;
}
}
return s;
}
});
return result;
}
/**
* Proxy for {@link Menu#getParentItem().toString()}. <p/>
*/
public String toString(final Menu m) {
String result = (String) Robot.syncExec(m.getDisplay(),
new RunnableWithResult() {
public Object runWithResult() {
String s = "";
MenuItem parentItem = m.getParentItem();
if(parentItem != null){
s = parentItem.toString();
}
return s;
}
});
return result;
}
/**
* Proxy for {@link Menu#getDefaultItem()}.
* <p/>
* @param menu the menu under test.
* @return the default item.
*/
public MenuItem getDefaultItem(final Menu menu){
MenuItem result = (MenuItem) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getDefaultItem();
}
});
return result;
}
/**
* Proxy for {@link Menu#getEnabled()}.
* <p/>
* @param menu the menu under test.
* @return true if the menu is enabled.
*/
public boolean getEnabled(final Menu menu){
Boolean result = (Boolean) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return Boolean.valueOf(menu.getEnabled());
}
});
return result.booleanValue();
}
/**
* Proxy for {@link Menu#getItem(int)}.
* <p/>
* @param menu the menu under test.
* @param index the index of the item to get.
* @return the item at the index given.
*/
public MenuItem getItem(final Menu menu, final int index){
MenuItem result = (MenuItem) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getItem(index);
}
});
return result;
}
/**
* Proxy for {@link Menu#getParentItem()}.
* <p/>
* @param menu the menu under test.
* @return the parent item.
*/
public MenuItem getParentItem(final Menu menu){
MenuItem result = (MenuItem) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getParentItem();
}
});
return result;
}
/**
* Proxy for {@link Menu#getItemCount()()}.
* <p/>
* @param menu the menu under test.
* @return the number of items under this menu.
*/
public int getItemCount(final Menu menu){
Integer result = (Integer) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return new Integer(menu.getItemCount());
}
});
return result.intValue();
}
/**
* Proxy for {@link Menu#getItems()}.
* <p/>
* @param menu the menu under test.
* @return the children.
*/
public MenuItem[] getItems(final Menu menu){
MenuItem[] result = (MenuItem[]) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getItems();
}
});
return result;
}
/**
* Proxy for {@link Menu#getParent()}.
* <p/>
* @param menu the menu under test.
* @return the parent.
*/
public Decorations getParent(final Menu menu){
Decorations result = (Decorations) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getParent();
}
});
return result;
}
/**
* Proxy for {@link Menu#getParentMenu()}.
* <p/>
* @param menu the menu under test.
* @return the parent menu.
*/
public Menu getParentMenu(final Menu menu){
Menu result = (Menu) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getParentMenu();
}
});
return result;
}
/**
* Proxy for {@link Menu#getShell()}.
* <p/>
* @param menu the menu under test.
* @return the shell of the menu.
*/
public Shell getShell(final Menu menu){
Shell result = (Shell) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return menu.getShell();
}
});
return result;
}
/**
* Proxy for {@link Menu#getVisible()}.
* <p/>
* @param menu the menu under test.
* @return the menu's visibility state.
*/
public boolean getVisible(final Menu menu){
Boolean result = (Boolean) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return Boolean.valueOf(menu.getVisible());
}
});
return result.booleanValue();
}
/**
* Proxy for {@link Menu#indexOf(org.eclipse.swt.widgets.MenuItem)}.
* <p/>
* @param menu the menu under test.
* @param menuItem the item to check.
* @return the index of the item given.
*/
public int indexOf(final Menu menu, final MenuItem menuItem) {
Integer result = (Integer) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return new Integer(menu.indexOf(menuItem));
}
});
return result.intValue();
}
/**
* Proxy for {@link Menu#isEnabled()}.
* <p/>
* @param menu the menu under test.
* @return true if the menu is enabled.
*/
public boolean isEnabled(final Menu menu){
Boolean result = (Boolean) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return Boolean.valueOf(menu.isEnabled());
}
});
return result.booleanValue();
}
/**
* Proxy for {@link Menu#isVisible()}.
* <p/>
* @param menu the menu under test.
* @return the menu's visibility state.
*/
public boolean isVisible(final Menu menu){
Boolean result = (Boolean) Robot.syncExec(menu.getDisplay(), new RunnableWithResult(){
public Object runWithResult(){
return Boolean.valueOf(menu.isVisible());
}
});
return result.booleanValue();
}
/**
* Factory method.
*/
public static MenuTester getMenuTester() {
return (MenuTester)(getTester(Menu.class));
}
}