home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 January / PCO0198.ISO / 1&1 / java.z / java_301 / java / awt / Menu.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-10-20  |  2.6 KB  |  101 lines

  1. package java.awt;
  2.  
  3. import java.awt.peer.MenuPeer;
  4. import java.util.Vector;
  5.  
  6. public class Menu extends MenuItem implements MenuContainer {
  7.    Vector items;
  8.    boolean tearOff;
  9.    boolean isHelpMenu;
  10.  
  11.    public Menu(String label) {
  12.       this(label, false);
  13.    }
  14.  
  15.    public Menu(String label, boolean tearOff) {
  16.       super(label);
  17.       this.items = new Vector();
  18.       this.tearOff = tearOff;
  19.    }
  20.  
  21.    public synchronized void addNotify() {
  22.       if (super.peer == null) {
  23.          super.peer = Toolkit.getDefaultToolkit().createMenu(this);
  24.       }
  25.  
  26.       int nitems = this.countItems();
  27.  
  28.       for(int i = 0; i < nitems; ++i) {
  29.          MenuItem mi = this.getItem(i);
  30.          mi.parent = this;
  31.          mi.addNotify();
  32.       }
  33.  
  34.    }
  35.  
  36.    public synchronized void removeNotify() {
  37.       int nitems = this.countItems();
  38.  
  39.       for(int i = 0; i < nitems; ++i) {
  40.          this.getItem(i).removeNotify();
  41.       }
  42.  
  43.       super.removeNotify();
  44.    }
  45.  
  46.    public boolean isTearOff() {
  47.       return this.tearOff;
  48.    }
  49.  
  50.    public int countItems() {
  51.       return this.items.size();
  52.    }
  53.  
  54.    public MenuItem getItem(int index) {
  55.       return (MenuItem)this.items.elementAt(index);
  56.    }
  57.  
  58.    public synchronized MenuItem add(MenuItem mi) {
  59.       if (mi.parent != null) {
  60.          mi.parent.remove(mi);
  61.       }
  62.  
  63.       this.items.addElement(mi);
  64.       mi.parent = this;
  65.       if (super.peer != null) {
  66.          mi.addNotify();
  67.          ((MenuPeer)super.peer).addItem(mi);
  68.       }
  69.  
  70.       return mi;
  71.    }
  72.  
  73.    public void add(String label) {
  74.       this.add(new MenuItem(label));
  75.    }
  76.  
  77.    public void addSeparator() {
  78.       this.add("-");
  79.    }
  80.  
  81.    public synchronized void remove(int index) {
  82.       MenuItem mi = this.getItem(index);
  83.       this.items.removeElementAt(index);
  84.       MenuPeer peer = (MenuPeer)super.peer;
  85.       if (peer != null) {
  86.          ((MenuComponent)mi).removeNotify();
  87.          mi.parent = null;
  88.          peer.delItem(index);
  89.       }
  90.  
  91.    }
  92.  
  93.    public synchronized void remove(MenuComponent item) {
  94.       int index = this.items.indexOf(item);
  95.       if (index >= 0) {
  96.          this.remove(index);
  97.       }
  98.  
  99.    }
  100. }
  101.