home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / CFJava.cab / CFJavaRuntime.cab / netscape / application / Menu.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-10-01  |  9.3 KB  |  340 lines

  1. package netscape.application;
  2.  
  3. import java.awt.MenuBar;
  4. import java.awt.MenuComponent;
  5. import netscape.util.ClassInfo;
  6. import netscape.util.Codable;
  7. import netscape.util.CodingException;
  8. import netscape.util.Decoder;
  9. import netscape.util.Encoder;
  10. import netscape.util.Vector;
  11.  
  12. public class Menu implements Codable {
  13.    java.awt.Menu awtMenu;
  14.    MenuBar awtMenuBar;
  15.    Application application;
  16.    Vector items;
  17.    MenuItem superitem;
  18.    MenuItem prototypeItem;
  19.    Border border;
  20.    Color backgroundColor;
  21.    boolean transparent;
  22.    MenuView menuView;
  23.    static final String ITEMS_KEY = "items";
  24.    static final String SUPERITEM_KEY = "superitem";
  25.    static final String PROTOTYPEITEM_KEY = "prototypeItem";
  26.    static final String BORDER_KEY = "border";
  27.    static final String BACKGROUNDCOLOR_KEY = "backgroundColor";
  28.    static final String TRANSPARENT_KEY = "transparent";
  29.  
  30.    public Menu() {
  31.       this(true);
  32.    }
  33.  
  34.    public Menu(boolean var1) {
  35.       this.transparent = false;
  36.       this.items = new Vector();
  37.       this.backgroundColor = Color.lightGray;
  38.       this.setBorder(new MenuBorder(this));
  39.       if (var1) {
  40.          this.awtMenuBar = new MenuBar();
  41.       } else {
  42.          this.awtMenu = new java.awt.Menu("");
  43.       }
  44.  
  45.       MenuItem var2 = new MenuItem();
  46.       this.setPrototypeItem(var2);
  47.    }
  48.  
  49.    boolean isTopLevel() {
  50.       return this.superitem == null || this.superitem.supermenu() == null;
  51.    }
  52.  
  53.    void setSuperitem(MenuItem var1) {
  54.       this.superitem = var1;
  55.    }
  56.  
  57.    MenuItem superitem() {
  58.       return this.superitem;
  59.    }
  60.  
  61.    public void setPrototypeItem(MenuItem var1) {
  62.       this.prototypeItem = var1;
  63.    }
  64.  
  65.    public MenuItem prototypeItem() {
  66.       return this.prototypeItem;
  67.    }
  68.  
  69.    public void setBackgroundColor(Color var1) {
  70.       this.backgroundColor = var1;
  71.    }
  72.  
  73.    public Color backgroundColor() {
  74.       return this.backgroundColor;
  75.    }
  76.  
  77.    public void setBorder(Border var1) {
  78.       if (var1 == null) {
  79.          this.border = EmptyBorder.emptyBorder();
  80.       } else {
  81.          this.border = var1;
  82.       }
  83.    }
  84.  
  85.    public Border border() {
  86.       return this.border;
  87.    }
  88.  
  89.    public void setTransparent(boolean var1) {
  90.       this.transparent = var1;
  91.    }
  92.  
  93.    public boolean isTransparent() {
  94.       return this.transparent;
  95.    }
  96.  
  97.    MenuItem createItem(boolean var1) {
  98.       MenuItem var2 = (MenuItem)this.prototypeItem().clone();
  99.       if (!var1) {
  100.          var2.foundationMenuItem = new FoundationMenuItem("", var2);
  101.       } else {
  102.          var2.foundationMenuItem = new FoundationCheckMenuItem("", var2);
  103.          var2.setCheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOn.gif"));
  104.          var2.setUncheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOff.gif"));
  105.          var2.setImage(var2.uncheckedImage());
  106.          var2.setSelectedImage(var2.uncheckedImage());
  107.       }
  108.  
  109.       var2.setFont(this.prototypeItem().font());
  110.       return var2;
  111.    }
  112.  
  113.    protected Menu createMenuAsSubmenu() {
  114.       Menu var1 = new Menu(false);
  115.       var1.setPrototypeItem(this.createItem(false));
  116.       var1.setBackgroundColor(this.backgroundColor());
  117.       return var1;
  118.    }
  119.  
  120.    public MenuItem addItemWithSubmenu(String var1) {
  121.       MenuItem var2 = this.createItem(false);
  122.       var2.setTitle(var1);
  123.       Menu var3 = this.createMenuAsSubmenu();
  124.       var2.setSubmenu(var3);
  125.       this.addItemAt(var2, this.itemCount());
  126.       return var2;
  127.    }
  128.  
  129.    public MenuItem addItem(String var1, String var2, Target var3) {
  130.       return this.addItem(var1, '\u0000', var2, var3);
  131.    }
  132.  
  133.    public MenuItem addItem(String var1, String var2, Target var3, boolean var4) {
  134.       return this.addItem(var1, '\u0000', var2, var3, var4);
  135.    }
  136.  
  137.    public MenuItem addItem(String var1, char var2, String var3, Target var4) {
  138.       return this.addItem(var1, var2, var3, var4, false);
  139.    }
  140.  
  141.    public MenuItem addItem(String var1, char var2, String var3, Target var4, boolean var5) {
  142.       return this.addItemAt(var1, var2, var3, var4, var5, this.itemCount());
  143.    }
  144.  
  145.    public MenuItem addItemAt(String var1, char var2, String var3, Target var4, boolean var5, int var6) {
  146.       MenuItem var7 = this.createItem(var5);
  147.       var7.setSubmenu((Menu)null);
  148.       var7.setSupermenu(this);
  149.       var7.setCommandKey(var2);
  150.       var7.setTitle(var1);
  151.       var7.setTarget(var4);
  152.       var7.setCommand(var3);
  153.       this.addItemAt(var7, var6);
  154.       return var7;
  155.    }
  156.  
  157.    public MenuItem addSeparator() {
  158.       Object var1 = null;
  159.       MenuItem var2 = this.createItem(false);
  160.       var2.setSeparator(true);
  161.       this.addItemAt(var2, this.itemCount());
  162.       return var2;
  163.    }
  164.  
  165.    public int indexOfItem(MenuItem var1) {
  166.       return this.items.indexOf(var1);
  167.    }
  168.  
  169.    public int itemCount() {
  170.       return this.items.count();
  171.    }
  172.  
  173.    public MenuItem itemAt(int var1) {
  174.       return (MenuItem)this.items.elementAt(var1);
  175.    }
  176.  
  177.    public void addItemAt(MenuItem var1, int var2) {
  178.       var1.setSupermenu(this);
  179.       if (var1.hasSubmenu()) {
  180.          java.awt.Menu var3 = var1.submenu().awtMenu();
  181.          ((java.awt.MenuItem)var3).setLabel(var1.title());
  182.          ((MenuComponent)var3).setFont(AWTCompatibility.awtFontForFont(var1.font()));
  183.          if (this.isTopLevel()) {
  184.             if (this.awtMenuBar != null) {
  185.                this.awtMenuBar.add(var3);
  186.             }
  187.          } else if (this.awtMenu != null) {
  188.             this.awtMenu.add(var3);
  189.          }
  190.       } else if (!this.isTopLevel() && this.awtMenu != null) {
  191.          if (var1.isSeparator()) {
  192.             this.awtMenu.addSeparator();
  193.          } else {
  194.             this.awtMenu.add(var1.foundationMenuItem());
  195.          }
  196.       }
  197.  
  198.       this.items.insertElementAt(var1, var2);
  199.  
  200.       for(int var4 = 0; var4 < this.itemCount(); ++var4) {
  201.          this.itemAt(var4).setTitle(this.itemAt(var4).title());
  202.       }
  203.  
  204.    }
  205.  
  206.    public void removeItem(MenuItem var1) {
  207.       this.items.removeElement(var1);
  208.       if (this.isTopLevel()) {
  209.          this.awtMenuBar.remove(var1.foundationMenuItem());
  210.       } else {
  211.          this.awtMenu.remove(var1.foundationMenuItem());
  212.       }
  213.    }
  214.  
  215.    public void removeItemAt(int var1) {
  216.       this.items.removeElementAt(var1);
  217.       if (this.isTopLevel()) {
  218.          this.awtMenuBar.remove(var1);
  219.       } else {
  220.          this.awtMenu.remove(var1);
  221.       }
  222.    }
  223.  
  224.    public void replaceItemAt(int var1, MenuItem var2) {
  225.       this.items.replaceElementAt(var1, var2);
  226.    }
  227.  
  228.    public void replaceItem(MenuItem var1, MenuItem var2) {
  229.       int var3 = this.indexOfItem(var1);
  230.       if (var3 != -1) {
  231.          this.replaceItemAt(var3, var2);
  232.       }
  233.  
  234.    }
  235.  
  236.    public void performCommand(String var1, Object var2) {
  237.       if (var2 != null) {
  238.          MenuItem var3 = (MenuItem)var2;
  239.          var3.setState(!var3.state());
  240.          var3.sendCommand();
  241.       }
  242.  
  243.    }
  244.  
  245.    int minItemWidth() {
  246.       int var3 = 0;
  247.  
  248.       for(int var1 = 0; var1 < this.itemCount(); ++var1) {
  249.          int var2 = this.itemAt(var1).minWidth();
  250.          if (var2 > var3) {
  251.             var3 = var2;
  252.          }
  253.       }
  254.  
  255.       return var3;
  256.    }
  257.  
  258.    public boolean handleCommandKeyEvent(KeyEvent var1) {
  259.       boolean var3 = false;
  260.       if (!var1.isControlKeyDown()) {
  261.          return false;
  262.       } else {
  263.          MenuItem var2 = this.itemForKeyEvent(var1);
  264.          if (var2 != null) {
  265.             var2.sendCommand();
  266.             var3 = true;
  267.          }
  268.  
  269.          return var3;
  270.       }
  271.    }
  272.  
  273.    MenuItem itemForKeyEvent(KeyEvent var1) {
  274.       MenuItem var4 = null;
  275.       if (!var1.isControlKeyDown()) {
  276.          return null;
  277.       } else {
  278.          for(int var2 = 0; var2 < this.itemCount() && var4 == null; ++var2) {
  279.             MenuItem var3 = this.itemAt(var2);
  280.             if (var3.isEnabled()) {
  281.                if (var3.hasSubmenu()) {
  282.                   var4 = var3.submenu().itemForKeyEvent(var1);
  283.                } else if (var3.commandKey() == var1.key + 64) {
  284.                   var4 = var3;
  285.                }
  286.             }
  287.          }
  288.  
  289.          return var4;
  290.       }
  291.    }
  292.  
  293.    java.awt.Menu awtMenu() {
  294.       return this.awtMenu;
  295.    }
  296.  
  297.    MenuBar awtMenuBar() {
  298.       return this.awtMenuBar;
  299.    }
  300.  
  301.    void setApplication(Application var1) {
  302.       this.application = var1;
  303.    }
  304.  
  305.    Application application() {
  306.       return this.application;
  307.    }
  308.  
  309.    public void describeClassInfo(ClassInfo var1) {
  310.       var1.addClass("netscape.application.Menu", 1);
  311.       var1.addField("items", (byte)18);
  312.       var1.addField("superitem", (byte)18);
  313.       var1.addField("prototypeItem", (byte)18);
  314.       var1.addField("border", (byte)18);
  315.       var1.addField("backgroundColor", (byte)18);
  316.       var1.addField("transparent", (byte)0);
  317.    }
  318.  
  319.    public void encode(Encoder var1) throws CodingException {
  320.       var1.encodeObject("items", this.items);
  321.       var1.encodeObject("superitem", this.superitem);
  322.       var1.encodeObject("prototypeItem", this.prototypeItem);
  323.       var1.encodeObject("border", this.border);
  324.       var1.encodeObject("backgroundColor", this.backgroundColor);
  325.       var1.encodeBoolean("transparent", this.transparent);
  326.    }
  327.  
  328.    public void decode(Decoder var1) throws CodingException {
  329.       this.items = (Vector)var1.decodeObject("items");
  330.       this.superitem = (MenuItem)var1.decodeObject("superitem");
  331.       this.prototypeItem = (MenuItem)var1.decodeObject("prototypeItem");
  332.       this.border = (Border)var1.decodeObject("border");
  333.       this.backgroundColor = (Color)var1.decodeObject("backgroundColor");
  334.       this.transparent = var1.decodeBoolean("transparent");
  335.    }
  336.  
  337.    public void finishDecoding() throws CodingException {
  338.    }
  339. }
  340.