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 }