1 package org.columba.core.gui.menu; 19 20 import java.util.Enumeration ; 21 import java.util.Hashtable ; 22 23 import javax.swing.Action ; 24 import javax.swing.JMenu ; 25 import javax.swing.JMenuItem ; 26 import javax.swing.JPopupMenu ; 27 import javax.swing.JSeparator ; 28 29 30 public class ExtendablePopupMenu extends JPopupMenu { 31 32 private MenuModel model; 33 34 private Hashtable map = new Hashtable (); 35 36 private String id; 37 38 public ExtendablePopupMenu(String id, String label) { 39 super(label); 40 this.id = id; 41 42 model = new MenuModel(id); 43 44 map.put(id, this); 45 } 46 47 public ExtendablePopupMenu(String id) { 48 super(); 49 50 this.id = id; 51 52 model = new MenuModel(id); 53 54 map.put(id, this); 55 } 56 57 public MenuModel getMenuModel() { 58 return model; 59 } 60 61 64 public JMenuItem add(Action action) { 65 model.add(action); 66 67 return super.add(action); 68 } 69 70 73 public JMenuItem add(JMenuItem menuItem) { 74 model.add(menuItem); 75 76 return super.add(menuItem); 77 } 78 79 82 public void addSeparator() { 83 model.addSeparator(); 84 85 super.addSeparator(); 86 } 87 88 91 public void insert(Action action, int pos) { 92 model.insert(action, pos); 93 94 super.insert(action, pos); 95 } 96 97 public void addPlaceholder(String placeholderId) { 98 model.appendPlaceholder(placeholderId); 99 } 100 101 public void insertPlaceholder(String placeholderId, int pos) { 102 model.insertPlaceholder(placeholderId, pos); 103 } 104 105 public void insert(Action action, String placeholderId) { 106 int index = model.insert(action, placeholderId); 107 super.insert(action, index); 108 } 109 110 public void insert(JMenuItem menuItem, String placeholderId) { 111 int index = model.insert(menuItem, placeholderId); 112 super.insert(menuItem, index); 113 } 114 115 public void insertSeparator(String placeholderId) { 116 int index = model.insertSeparator(placeholderId); 117 super.insert(new JSeparator (), index); 118 } 119 120 public void add(ExtendableMenu submenu) { 121 122 map.put(submenu.getId(), submenu); 123 124 model.addSubmenu(submenu.getMenuModel()); 125 126 super.add((JMenu ) submenu); 127 } 128 129 132 public String getId() { 133 return id; 134 } 135 136 public Enumeration getSubmenuEnumeration() { 137 return map.elements(); 138 } 139 } 140 | Popular Tags |