home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 31 / SUPERCDa.iso / Inet / HotJava / hjava.exe / Windows / resource / jre / lib / rt.jar / java / awt / Menu.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-11  |  5.2 KB  |  317 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.       this.tearOff = var2;
  33.    }
  34.  
  35.    String constructComponentName() {
  36.       return "menu" + nameCounter++;
  37.    }
  38.  
  39.    public void addNotify() {
  40.       Object var1 = ((MenuComponent)this).getTreeLock();
  41.       synchronized(var1){}
  42.  
  43.       try {
  44.          if (super.peer == null) {
  45.             super.peer = Toolkit.getDefaultToolkit().createMenu(this);
  46.          }
  47.  
  48.          int var3 = this.getItemCount();
  49.  
  50.          for(int var4 = 0; var4 < var3; ++var4) {
  51.             MenuItem var5 = this.getItem(var4);
  52.             var5.parent = this;
  53.             var5.addNotify();
  54.          }
  55.       } catch (Throwable var7) {
  56.          throw var7;
  57.       }
  58.  
  59.    }
  60.  
  61.    public void removeNotify() {
  62.       Object var1 = ((MenuComponent)this).getTreeLock();
  63.       synchronized(var1){}
  64.  
  65.       try {
  66.          int var3 = this.getItemCount();
  67.  
  68.          for(int var4 = 0; var4 < var3; ++var4) {
  69.             this.getItem(var4).removeNotify();
  70.          }
  71.  
  72.          super.removeNotify();
  73.       } catch (Throwable var6) {
  74.          throw var6;
  75.       }
  76.  
  77.    }
  78.  
  79.    public boolean isTearOff() {
  80.       return this.tearOff;
  81.    }
  82.  
  83.    public int getItemCount() {
  84.       return this.countItems();
  85.    }
  86.  
  87.    /** @deprecated */
  88.    public int countItems() {
  89.       return this.items.size();
  90.    }
  91.  
  92.    public MenuItem getItem(int var1) {
  93.       return (MenuItem)this.items.elementAt(var1);
  94.    }
  95.  
  96.    public MenuItem add(MenuItem var1) {
  97.       Object var3 = ((MenuComponent)this).getTreeLock();
  98.       synchronized(var3){}
  99.  
  100.       MenuItem var2;
  101.       try {
  102.          if (var1.parent != null) {
  103.             var1.parent.remove(var1);
  104.          }
  105.  
  106.          this.items.addElement(var1);
  107.          var1.parent = this;
  108.          MenuPeer var5 = (MenuPeer)super.peer;
  109.          if (var5 != null) {
  110.             var1.addNotify();
  111.             var5.addItem(var1);
  112.          }
  113.  
  114.          var2 = var1;
  115.       } catch (Throwable var7) {
  116.          throw var7;
  117.       }
  118.  
  119.       return var2;
  120.    }
  121.  
  122.    public void add(String var1) {
  123.       this.add(new MenuItem(var1));
  124.    }
  125.  
  126.    public void insert(MenuItem var1, int var2) {
  127.       Object var3 = ((MenuComponent)this).getTreeLock();
  128.       synchronized(var3){}
  129.  
  130.       try {
  131.          if (var2 < 0) {
  132.             throw new IllegalArgumentException("index less than zero.");
  133.          }
  134.  
  135.          int var5 = this.getItemCount();
  136.          Vector var6 = new Vector();
  137.  
  138.          for(int var7 = var2; var7 < var5; ++var7) {
  139.             var6.addElement(this.getItem(var2));
  140.             this.remove(var2);
  141.          }
  142.  
  143.          this.add(var1);
  144.  
  145.          for(int var8 = 0; var8 < var6.size(); ++var8) {
  146.             this.add((MenuItem)var6.elementAt(var8));
  147.          }
  148.       } catch (Throwable var10) {
  149.          throw var10;
  150.       }
  151.  
  152.    }
  153.  
  154.    public void insert(String var1, int var2) {
  155.       this.insert(new MenuItem(var1), var2);
  156.    }
  157.  
  158.    public void addSeparator() {
  159.       this.add("-");
  160.    }
  161.  
  162.    public void insertSeparator(int var1) {
  163.       Object var2 = ((MenuComponent)this).getTreeLock();
  164.       synchronized(var2){}
  165.  
  166.       try {
  167.          if (var1 < 0) {
  168.             throw new IllegalArgumentException("index less than zero.");
  169.          }
  170.  
  171.          int var4 = this.getItemCount();
  172.          Vector var5 = new Vector();
  173.  
  174.          for(int var6 = var1; var6 < var4; ++var6) {
  175.             var5.addElement(this.getItem(var1));
  176.             this.remove(var1);
  177.          }
  178.  
  179.          this.addSeparator();
  180.  
  181.          for(int var7 = 0; var7 < var5.size(); ++var7) {
  182.             this.add((MenuItem)var5.elementAt(var7));
  183.          }
  184.       } catch (Throwable var9) {
  185.          throw var9;
  186.       }
  187.  
  188.    }
  189.  
  190.    public void remove(int var1) {
  191.       Object var2 = ((MenuComponent)this).getTreeLock();
  192.       synchronized(var2){}
  193.  
  194.       try {
  195.          MenuItem var4 = this.getItem(var1);
  196.          this.items.removeElementAt(var1);
  197.          MenuPeer var5 = (MenuPeer)super.peer;
  198.          if (var5 != null) {
  199.             ((MenuComponent)var4).removeNotify();
  200.             var4.parent = null;
  201.             var5.delItem(var1);
  202.          }
  203.       } catch (Throwable var7) {
  204.          throw var7;
  205.       }
  206.  
  207.    }
  208.  
  209.    public void remove(MenuComponent var1) {
  210.       Object var2 = ((MenuComponent)this).getTreeLock();
  211.       synchronized(var2){}
  212.  
  213.       try {
  214.          int var4 = this.items.indexOf(var1);
  215.          if (var4 >= 0) {
  216.             this.remove(var4);
  217.          }
  218.       } catch (Throwable var6) {
  219.          throw var6;
  220.       }
  221.  
  222.    }
  223.  
  224.    public void removeAll() {
  225.       Object var1 = ((MenuComponent)this).getTreeLock();
  226.       synchronized(var1){}
  227.  
  228.       try {
  229.          int var3 = this.getItemCount();
  230.  
  231.          for(int var4 = 0; var4 < var3; ++var4) {
  232.             this.remove(0);
  233.          }
  234.       } catch (Throwable var6) {
  235.          throw var6;
  236.       }
  237.  
  238.    }
  239.  
  240.    boolean handleShortcut(KeyEvent var1) {
  241.       int var2 = this.getItemCount();
  242.  
  243.       for(int var3 = 0; var3 < var2; ++var3) {
  244.          MenuItem var4 = this.getItem(var3);
  245.          if (var4.handleShortcut(var1)) {
  246.             return true;
  247.          }
  248.       }
  249.  
  250.       return false;
  251.    }
  252.  
  253.    MenuItem getShortcutMenuItem(MenuShortcut var1) {
  254.       int var2 = this.getItemCount();
  255.  
  256.       for(int var3 = 0; var3 < var2; ++var3) {
  257.          MenuItem var4 = this.getItem(var3).getShortcutMenuItem(var1);
  258.          if (var4 != null) {
  259.             return var4;
  260.          }
  261.       }
  262.  
  263.       return null;
  264.    }
  265.  
  266.    synchronized Enumeration shortcuts() {
  267.       Vector var1 = new Vector();
  268.       int var2 = this.getItemCount();
  269.  
  270.       for(int var3 = 0; var3 < var2; ++var3) {
  271.          MenuItem var4 = this.getItem(var3);
  272.          if (var4 instanceof Menu) {
  273.             Enumeration var6 = ((Menu)var4).shortcuts();
  274.  
  275.             while(var6.hasMoreElements()) {
  276.                var1.addElement(var6.nextElement());
  277.             }
  278.          } else {
  279.             MenuShortcut var5 = var4.getShortcut();
  280.             if (var5 != null) {
  281.                var1.addElement(var5);
  282.             }
  283.          }
  284.       }
  285.  
  286.       return var1.elements();
  287.    }
  288.  
  289.    void deleteShortcut(MenuShortcut var1) {
  290.       int var2 = this.getItemCount();
  291.  
  292.       for(int var3 = 0; var3 < var2; ++var3) {
  293.          this.getItem(var3).deleteShortcut();
  294.       }
  295.  
  296.    }
  297.  
  298.    private void writeObject(ObjectOutputStream var1) throws ClassNotFoundException, IOException {
  299.       var1.defaultWriteObject();
  300.    }
  301.  
  302.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  303.       var1.defaultReadObject();
  304.  
  305.       for(int var2 = 0; var2 < this.items.size(); ++var2) {
  306.          MenuItem var3 = (MenuItem)this.items.elementAt(var2);
  307.          var3.parent = this;
  308.       }
  309.  
  310.    }
  311.  
  312.    public String paramString() {
  313.       String var1 = ",tearOff=" + this.tearOff + ",isHelpMenu=" + this.isHelpMenu;
  314.       return super.paramString() + var1;
  315.    }
  316. }
  317.