public Object pushMenu(ComponentOperator oper, PathChooser chooser) {
Timeout maxTime = oper.getTimeouts().create("ComponentOperator.WaitComponentTimeout");
JMenuBar bar = (JMenuBar)(oper.getSource());
activateMenu(bar);
MenuElement menuObject;
maxTime.start();
while(!chooser.checkPathComponent(0, (menuObject = getSelectedElement(bar)))) {
pressKey(KeyEvent.VK_RIGHT, 0);
releaseKey(KeyEvent.VK_RIGHT, 0);
if(maxTime.expired()) {
throw(new TimeoutExpiredException("AppleMenuDriver: can not find an appropriate menu!"));
}
}
for(int depth = 1; depth < chooser.getDepth(); depth++) {
// TODO - wait for menu item
int elementIndex = getDesiredElementIndex(menuObject, chooser, depth);
if(elementIndex == -1) {
throw(new JemmyException("Unable to find menu (menuitem): " + ((DescriptablePathChooser)chooser).getDescription()));
}
for(int i = ((depth == 1) ? 0 : 1); i<=elementIndex; i++) {
pressKey(KeyEvent.VK_DOWN, 0);
releaseKey(KeyEvent.VK_DOWN, 0);
}
if(depth == chooser.getDepth() - 1) {
pressKey(KeyEvent.VK_ENTER, 0);
releaseKey(KeyEvent.VK_ENTER, 0);
return(null);
} else {
pressKey(KeyEvent.VK_RIGHT, 0);
releaseKey(KeyEvent.VK_RIGHT, 0);
menuObject = menuObject.getSubElements()[0].getSubElements()[elementIndex];
}
}
return menuObject;
}