package org.javabuilders.gtk.handler.type;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Set;
import org.gnome.gtk.Menu;
import org.gnome.gtk.MenuBar;
import org.gnome.gtk.MenuItem;
import org.gnome.gtk.MenuShell;
import org.gnome.gtk.Widget;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.BuilderConfig;
import org.javabuilders.Node;
import org.javabuilders.gtk.GtkConstants;
import org.javabuilders.handler.ITypeHandlerFinishProcessor;
/**
* MenuBar handler
* @author Jacek Furmankiewicz
*
*/
public class MenuShellFinishProcessor implements ITypeHandlerFinishProcessor {
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeHandlerFinishProcessor#finish(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.util.Map)
*/
public void finish(BuilderConfig config, BuildProcess process,
Node current, String key, Map<String, Object> typeDefinition)
throws BuildException {
MenuShell bar = (MenuShell) current.getMainObject();
if (bar instanceof MenuBar) {
Set<Node> nodes = current.getContentNodes(MenuItem.class);
for(Node node : nodes) {
processMenuItem(bar, node);
}
}
current.getCustomProperties().put(GtkConstants.INTERNAL_LAYOUT_HANDLED, true);
}
private void processMenuItem(MenuShell parent, Node node) {
MenuItem mi = (MenuItem) node.getMainObject();
parent.append(mi);
Set<Node> items = node.getContentNodes(Menu.class);
for(Node item : items) {
Menu menu = (Menu) item.getMainObject();
menu = new Menu();
menu.append(new MenuItem("TEST"));
mi.setSubmenu(menu);
}
}
}