home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / rt.jar / java / awt / Menu.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-20  |  4.9 KB  |  254 lines

  1. package java.awt;
  2.  
  3. import java.awt.event.KeyEvent;
  4. import java.awt.peer.MenuPeer;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.util.Enumeration;
  9. import java.util.Vector;
  10.  
  11. public class Menu extends MenuItem implements MenuContainer {
  12.    Vector items;
  13.    boolean tearOff;
  14.    boolean isHelpMenu;
  15.    private static final String base = "menu";
  16.    private static int nameCounter;
  17.    private static final long serialVersionUID = -8809584163345499784L;
  18.    private int menuSerializedDataVersion;
  19.  
  20.    public Menu() {
  21.       this("", false);
  22.    }
  23.  
  24.    public Menu(String var1) {
  25.       this(var1, false);
  26.    }
  27.  
  28.    public Menu(String var1, boolean var2) {
  29.       super(var1);
  30.       this.items = new Vector();
  31.       this.menuSerializedDataVersion = 1;
  32.       super.name = "menu" + nameCounter++;
  33.       this.tearOff = var2;
  34.    }
  35.  
  36.    public void addNotify() {
  37.       if (super.peer == null) {
  38.          super.peer = Toolkit.getDefaultToolkit().createMenu(this);
  39.       }
  40.  
  41.       int var1 = this.getItemCount();
  42.  
  43.       for(int var2 = 0; var2 < var1; ++var2) {
  44.          MenuItem var3 = this.getItem(var2);
  45.          var3.parent = this;
  46.          var3.addNotify();
  47.       }
  48.  
  49.    }
  50.  
  51.    public void removeNotify() {
  52.       int var1 = this.getItemCount();
  53.  
  54.       for(int var2 = 0; var2 < var1; ++var2) {
  55.          this.getItem(var2).removeNotify();
  56.       }
  57.  
  58.       super.removeNotify();
  59.    }
  60.  
  61.    public boolean isTearOff() {
  62.       return this.tearOff;
  63.    }
  64.  
  65.    public int getItemCount() {
  66.       return this.countItems();
  67.    }
  68.  
  69.    /** @deprecated */
  70.    public int countItems() {
  71.       return this.items.size();
  72.    }
  73.  
  74.    public MenuItem getItem(int var1) {
  75.       return (MenuItem)this.items.elementAt(var1);
  76.    }
  77.  
  78.    public synchronized MenuItem add(MenuItem var1) {
  79.       if (var1.parent != null) {
  80.          var1.parent.remove(var1);
  81.       }
  82.  
  83.       this.items.addElement(var1);
  84.       var1.parent = this;
  85.       MenuPeer var2 = (MenuPeer)super.peer;
  86.       if (var2 != null) {
  87.          var1.addNotify();
  88.          var2.addItem(var1);
  89.       }
  90.  
  91.       return var1;
  92.    }
  93.  
  94.    public void add(String var1) {
  95.       this.add(new MenuItem(var1));
  96.    }
  97.  
  98.    public synchronized void insert(MenuItem var1, int var2) {
  99.       if (var2 < 0) {
  100.          throw new IllegalArgumentException("index less than zero.");
  101.       } else {
  102.          int var3 = this.getItemCount();
  103.          Vector var4 = new Vector();
  104.  
  105.          for(int var5 = var2; var5 < var3; ++var5) {
  106.             var4.addElement(this.getItem(var2));
  107.             this.remove(var2);
  108.          }
  109.  
  110.          this.add(var1);
  111.  
  112.          for(int var6 = 0; var6 < var4.size(); ++var6) {
  113.             this.add((MenuItem)var4.elementAt(var6));
  114.          }
  115.  
  116.       }
  117.    }
  118.  
  119.    public void insert(String var1, int var2) {
  120.       this.insert(new MenuItem(var1), var2);
  121.    }
  122.  
  123.    public void addSeparator() {
  124.       this.add("-");
  125.    }
  126.  
  127.    public void insertSeparator(int var1) {
  128.       if (var1 < 0) {
  129.          throw new IllegalArgumentException("index less than zero.");
  130.       } else {
  131.          int var2 = this.getItemCount();
  132.          Vector var3 = new Vector();
  133.  
  134.          for(int var4 = var1; var4 < var2; ++var4) {
  135.             var3.addElement(this.getItem(var1));
  136.             this.remove(var1);
  137.          }
  138.  
  139.          this.addSeparator();
  140.  
  141.          for(int var5 = 0; var5 < var3.size(); ++var5) {
  142.             this.add((MenuItem)var3.elementAt(var5));
  143.          }
  144.  
  145.       }
  146.    }
  147.  
  148.    public synchronized void remove(int var1) {
  149.       MenuItem var2 = this.getItem(var1);
  150.       this.items.removeElementAt(var1);
  151.       MenuPeer var3 = (MenuPeer)super.peer;
  152.       if (var3 != null) {
  153.          ((MenuComponent)var2).removeNotify();
  154.          var2.parent = null;
  155.          var3.delItem(var1);
  156.       }
  157.  
  158.    }
  159.  
  160.    public synchronized void remove(MenuComponent var1) {
  161.       int var2 = this.items.indexOf(var1);
  162.       if (var2 >= 0) {
  163.          this.remove(var2);
  164.       }
  165.  
  166.    }
  167.  
  168.    public synchronized void removeAll() {
  169.       int var1 = this.getItemCount();
  170.  
  171.       for(int var2 = 0; var2 < var1; ++var2) {
  172.          this.remove(0);
  173.       }
  174.  
  175.    }
  176.  
  177.    boolean handleShortcut(KeyEvent var1) {
  178.       int var2 = this.getItemCount();
  179.  
  180.       for(int var3 = 0; var3 < var2; ++var3) {
  181.          MenuItem var4 = this.getItem(var3);
  182.          if (var4.handleShortcut(var1)) {
  183.             return true;
  184.          }
  185.       }
  186.  
  187.       return false;
  188.    }
  189.  
  190.    MenuItem getShortcutMenuItem(MenuShortcut var1) {
  191.       int var2 = this.getItemCount();
  192.  
  193.       for(int var3 = 0; var3 < var2; ++var3) {
  194.          MenuItem var4 = this.getItem(var3).getShortcutMenuItem(var1);
  195.          if (var4 != null) {
  196.             return var4;
  197.          }
  198.       }
  199.  
  200.       return null;
  201.    }
  202.  
  203.    synchronized Enumeration shortcuts() {
  204.       Vector var1 = new Vector();
  205.       int var2 = this.getItemCount();
  206.  
  207.       for(int var3 = 0; var3 < var2; ++var3) {
  208.          MenuItem var4 = this.getItem(var3);
  209.          if (var4 instanceof Menu) {
  210.             Enumeration var6 = ((Menu)var4).shortcuts();
  211.  
  212.             while(var6.hasMoreElements()) {
  213.                var1.addElement(var6.nextElement());
  214.             }
  215.          } else {
  216.             MenuShortcut var5 = var4.getShortcut();
  217.             if (var5 != null) {
  218.                var1.addElement(var5);
  219.             }
  220.          }
  221.       }
  222.  
  223.       return var1.elements();
  224.    }
  225.  
  226.    void deleteShortcut(MenuShortcut var1) {
  227.       int var2 = this.getItemCount();
  228.  
  229.       for(int var3 = 0; var3 < var2; ++var3) {
  230.          this.getItem(var3).deleteShortcut();
  231.       }
  232.  
  233.    }
  234.  
  235.    private void writeObject(ObjectOutputStream var1) throws ClassNotFoundException, IOException {
  236.       var1.defaultWriteObject();
  237.    }
  238.  
  239.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  240.       var1.defaultReadObject();
  241.  
  242.       for(int var2 = 0; var2 < this.items.size(); ++var2) {
  243.          MenuItem var3 = (MenuItem)this.items.elementAt(var2);
  244.          var3.parent = this;
  245.       }
  246.  
  247.    }
  248.  
  249.    public String paramString() {
  250.       String var1 = ",tearOff=" + this.tearOff + ",isHelpMenu=" + this.isHelpMenu;
  251.       return super.paramString() + var1;
  252.    }
  253. }
  254.