home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.peer.MenuPeer;
- import java.util.Vector;
-
- public class Menu extends MenuItem implements MenuContainer {
- Vector items;
- boolean tearOff;
- boolean isHelpMenu;
-
- public Menu(String label) {
- this(label, false);
- }
-
- public Menu(String label, boolean tearOff) {
- super(label);
- this.items = new Vector();
- this.tearOff = tearOff;
- }
-
- public synchronized void addNotify() {
- if (super.peer == null) {
- super.peer = Toolkit.getDefaultToolkit().createMenu(this);
- }
-
- int nitems = this.countItems();
-
- for(int i = 0; i < nitems; ++i) {
- MenuItem mi = this.getItem(i);
- mi.parent = this;
- mi.addNotify();
- }
-
- }
-
- public synchronized void removeNotify() {
- int nitems = this.countItems();
-
- for(int i = 0; i < nitems; ++i) {
- this.getItem(i).removeNotify();
- }
-
- super.removeNotify();
- }
-
- public boolean isTearOff() {
- return this.tearOff;
- }
-
- public int countItems() {
- return this.items.size();
- }
-
- public MenuItem getItem(int index) {
- return (MenuItem)this.items.elementAt(index);
- }
-
- public synchronized MenuItem add(MenuItem mi) {
- if (mi.parent != null) {
- mi.parent.remove(mi);
- }
-
- this.items.addElement(mi);
- mi.parent = this;
- if (super.peer != null) {
- mi.addNotify();
- ((MenuPeer)super.peer).addItem(mi);
- }
-
- return mi;
- }
-
- public void add(String label) {
- this.add(new MenuItem(label));
- }
-
- public void addSeparator() {
- this.add("-");
- }
-
- public synchronized void remove(int index) {
- MenuItem mi = this.getItem(index);
- this.items.removeElementAt(index);
- MenuPeer peer = (MenuPeer)super.peer;
- if (peer != null) {
- ((MenuComponent)mi).removeNotify();
- mi.parent = null;
- peer.delItem(index);
- }
-
- }
-
- public synchronized void remove(MenuComponent item) {
- int index = this.items.indexOf(item);
- if (index >= 0) {
- this.remove(index);
- }
-
- }
- }
-