001 package nl.cwi.sen1.util;
002
003 import java.awt.Component;
004
005 import javax.swing.Action;
006 import javax.swing.JMenu;
007 import javax.swing.JMenuBar;
008
009 import nl.cwi.sen1.configapi.Factory;
010 import nl.cwi.sen1.configapi.types.ActionDescription;
011 import nl.cwi.sen1.configapi.types.ActionDescriptionList;
012 import nl.cwi.sen1.configapi.types.Event;
013 import toolbus.AbstractTool;
014 import aterm.ATerm;
015 import aterm.ATermFactory;
016 import aterm.pure.PureFactory;
017
018 public class StudioMenuBar {
019 protected MenuBuilder menuBuilder;
020
021 protected ATerm id;
022
023 private JMenu menu;
024
025 public StudioMenuBar(ATermFactory factory, AbstractTool bridge) {
026 menuBuilder = new MenuBuilder(bridge);
027 this.id = factory.parse("studio-menubar");
028 this.menu = new JMenu();
029 }
030
031 public void add(ActionDescriptionList list) {
032 add(list, null);
033 }
034
035 public void add(ActionDescriptionList list, Action action) {
036 menuBuilder.fill(menu, id, list, action);
037 }
038
039 public void add(Event event, Action action) {
040 Factory f = Factory.getInstance((PureFactory) id.getFactory());
041 ActionDescription d = f.makeActionDescription_Description(id, event);
042 ActionDescriptionList l = f.makeActionDescriptionList(d);
043 add(l, action);
044 }
045
046 public void add(Event event) {
047 add(event, null);
048 }
049
050 public void add(JMenu menu) {
051 this.menu.add(menu);
052 }
053
054 public JMenuBar getMenuBar() {
055 JMenuBar bar = new JMenuBar();
056 for (Component d : this.menu.getMenuComponents()) {
057 bar.add(d);
058 }
059 return bar;
060 }
061 }