1 31 32 package org.antlr.xjlib.appkit.menu; 33 34 import javax.swing.*; 35 import javax.swing.event.MenuEvent ; 36 import javax.swing.event.MenuListener ; 37 import java.util.ArrayList ; 38 import java.util.Iterator ; 39 import java.util.List ; 40 41 public class XJMenu extends XJMenuItem { 42 43 protected JMenu jMenu = new JMenu(); 44 protected List <XJMenuItem> items = new ArrayList <XJMenuItem>(); 45 protected XJMainMenuBar mainMenuBar; 46 47 public XJMenu() { 48 jMenu.addMenuListener(new XJMenuListener()); 49 } 50 51 public void setMainMenuBar(XJMainMenuBar mainMenuBar) { 52 this.mainMenuBar = mainMenuBar; 53 for(int index=0; index<items.size(); index++) { 54 Object item = items.get(index); 55 if(item instanceof XJMenu) { 56 XJMenu menu = (XJMenu)item; 57 menu.setMainMenuBar(mainMenuBar); 58 } 59 } 60 } 61 62 public void setTitle(String title) { 63 jMenu.setText(title); 64 } 65 66 public void addSeparator() { 67 items.add(new XJMenuItemSeparator()); 68 jMenu.addSeparator(); 69 } 70 71 public void addItem(XJMenuItem item) { 72 item.setMenu(this); 73 items.add(item); 74 jMenu.add(item.getSwingComponent()); 75 } 76 77 public void addItem(XJMenu menu) { 78 menu.setMenu(this); 79 items.add(menu); 80 jMenu.add(menu.getSwingComponent()); 81 } 82 83 public void insertSeparatorBefore(int menuItemTag) { 84 XJMenuItem menuItem = getItemForTag(menuItemTag); 85 if(menuItem == null) 86 return; 87 88 insertSeparatorAtIndex(items.indexOf(menuItem)); 89 } 90 91 public void insertSeparatorAfter(int menuItemTag) { 92 XJMenuItem menuItem = getItemForTag(menuItemTag); 93 if(menuItem == null) 94 return; 95 96 insertSeparatorAtIndex(items.indexOf(menuItem)+1); 97 } 98 99 public void insertSeparatorAtIndex(int index) { 100 items.add(index, new XJMenuItemSeparator()); 101 jMenu.insertSeparator(index); 102 } 103 104 public void insertItemBefore(XJMenuItem item, int menuItemTag) { 105 XJMenuItem menuItem = getItemForTag(menuItemTag); 106 if(menuItem == null) 107 return; 108 109 insertItemAtIndex(item, items.indexOf(menuItem)); 110 } 111 112 public void insertItemAfter(XJMenuItem item, int menuItemTag) { 113 XJMenuItem menuItem = getItemForTag(menuItemTag); 114 if(menuItem == null) 115 return; 116 117 insertItemAtIndex(item, items.indexOf(menuItem)+1); 118 } 119 120 public void insertItemAtIndex(XJMenuItem item, int index) { 121 items.add(index, item); 122 jMenu.add(item.getSwingComponent(), index); 123 } 124 125 public void removeItem(int index) { 126 jMenu.remove(index); 127 } 128 129 public XJMenuItem getItemForTag(int tag) { 130 Iterator <XJMenuItem> iterator = items.iterator(); 131 while(iterator.hasNext()) { 132 XJMenuItem menuItem = iterator.next(); 133 if(menuItem.getTag() == tag) 134 return menuItem; 135 } 136 return null; 137 } 138 139 public XJMenuItem getItemAtIndex(int index) { 140 if(index >=0 && index < items.size()) 141 return items.get(index); 142 else 143 return null; 144 } 145 146 public int getItemCount() { 147 return jMenu.getItemCount(); 148 } 149 150 public Iterator <XJMenuItem> itemIterator() { 151 return items.iterator(); 152 } 153 154 public void clear() { 155 items.clear(); 156 jMenu.removeAll(); 157 } 158 159 public JComponent getSwingComponent() { 160 return jMenu; 161 } 162 163 public class XJMenuListener implements MenuListener { 164 165 public void menuSelected(MenuEvent e) { 166 if(mainMenuBar != null) 167 mainMenuBar.menuSelected(XJMenu.this); 168 } 169 170 public void menuDeselected(MenuEvent e) { 171 } 172 173 public void menuCanceled(MenuEvent e) { 174 } 175 } 176 } 177 | Popular Tags |