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

  1. package netscape.application;
  2.  
  3. import netscape.util.ClassInfo;
  4. import netscape.util.Codable;
  5. import netscape.util.CodingException;
  6. import netscape.util.Decoder;
  7. import netscape.util.Encoder;
  8. import netscape.util.InconsistencyException;
  9.  
  10. public class MenuItem implements Codable, Cloneable, EventProcessor {
  11.    Menu submenu;
  12.    Menu supermenu;
  13.    java.awt.MenuItem foundationMenuItem;
  14.    String command;
  15.    String title;
  16.    Target target;
  17.    char commandKey;
  18.    Font font;
  19.    Image checkedImage;
  20.    Image uncheckedImage;
  21.    Image image;
  22.    Image selectedImage;
  23.    Color selectedColor;
  24.    Color selectedTextColor;
  25.    Color textColor;
  26.    Color disabledColor;
  27.    boolean selected;
  28.    boolean separator;
  29.    boolean state;
  30.    boolean enabled;
  31.    Object data;
  32.    static final String SUBMENU_KEY = "submenu";
  33.    static final String SUPERMENU_KEY = "supermenu";
  34.    static final String COMMAND_KEY = "command";
  35.    static final String TITLE_KEY = "title";
  36.    static final String TARGET_KEY = "target";
  37.    static final String COMMANDKEY_KEY = "commandKey";
  38.    static final String FONT_KEY = "font";
  39.    static final String CHECKEDIMAGE_KEY = "checkedImage";
  40.    static final String UNCHECKEDIMAGE_KEY = "uncheckedImage";
  41.    static final String IMAGE_KEY = "image";
  42.    static final String SELECTEDIMAGE_KEY = "selectedImage";
  43.    static final String SELECTEDCOLOR_KEY = "selectedColor";
  44.    static final String SELECTEDTEXTCOLOR_KEY = "selectedTextColor";
  45.    static final String TEXTCOLOR_KEY = "textColor";
  46.    static final String DISABLEDCOLOR_KEY = "disabledColor";
  47.    static final String SEPARATOR_KEY = "separator";
  48.    static final String STATE_KEY = "state";
  49.    static final String ENABLED_KEY = "enabled";
  50.    static final String DATA_KEY = "data";
  51.  
  52.    public MenuItem() {
  53.       this("", '\u0000', (String)null, (Target)null, false);
  54.    }
  55.  
  56.    public MenuItem(String var1, String var2, Target var3) {
  57.       this(var1, '\u0000', var2, var3, false);
  58.    }
  59.  
  60.    public MenuItem(String var1, char var2, String var3, Target var4) {
  61.       this(var1, var2, var3, var4, false);
  62.    }
  63.  
  64.    public MenuItem(String var1, String var2, Target var3, boolean var4) {
  65.       this(var1, '\u0000', var2, var3, var4);
  66.    }
  67.  
  68.    public MenuItem(String var1, char var2, String var3, Target var4, boolean var5) {
  69.       this.commandKey = Character.toUpperCase(var2);
  70.       if (!var5) {
  71.          this.foundationMenuItem = new FoundationMenuItem(var1, this);
  72.       } else {
  73.          this.foundationMenuItem = new FoundationCheckMenuItem(var1, this);
  74.          this.setUncheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOff.gif"));
  75.          this.setCheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOn.gif"));
  76.          this.setImage(this.uncheckedImage);
  77.          this.setSelectedImage(this.uncheckedImage);
  78.       }
  79.  
  80.       this.setEnabled(true);
  81.       this.setFont(new Font("Helvetica", 0, 12));
  82.       this.setTitle(var1);
  83.       this.setTarget(var4);
  84.       this.setCommand(var3);
  85.       this.selectedColor = Color.white;
  86.       this.textColor = Color.black;
  87.       this.selectedTextColor = Color.black;
  88.       this.disabledColor = Color.gray;
  89.    }
  90.  
  91.    public Object clone() {
  92.       try {
  93.          return super.clone();
  94.       } catch (CloneNotSupportedException var2) {
  95.          throw new InconsistencyException(this + ": clone() not supported :" + var2);
  96.       }
  97.    }
  98.  
  99.    java.awt.MenuItem foundationMenuItem() {
  100.       return this.foundationMenuItem;
  101.    }
  102.  
  103.    public void setSeparator(boolean var1) {
  104.       this.separator = var1;
  105.       if (var1) {
  106.          this.setEnabled(true);
  107.       }
  108.  
  109.    }
  110.  
  111.    public boolean isSeparator() {
  112.       return this.separator;
  113.    }
  114.  
  115.    public void setData(Object var1) {
  116.       this.data = var1;
  117.    }
  118.  
  119.    public Object data() {
  120.       return this.data;
  121.    }
  122.  
  123.    public void setSubmenu(Menu var1) {
  124.       this.submenu = var1;
  125.       if (this.submenu != null) {
  126.          this.submenu.setSuperitem(this);
  127.       }
  128.  
  129.    }
  130.  
  131.    public Menu submenu() {
  132.       return this.submenu;
  133.    }
  134.  
  135.    public boolean hasSubmenu() {
  136.       return this.submenu != null;
  137.    }
  138.  
  139.    public void setSupermenu(Menu var1) {
  140.       this.supermenu = var1;
  141.    }
  142.  
  143.    public Menu supermenu() {
  144.       return this.supermenu;
  145.    }
  146.  
  147.    public void setCommandKey(char var1) {
  148.       this.commandKey = Character.toUpperCase(var1);
  149.       this.setTitle(this.title);
  150.    }
  151.  
  152.    public char commandKey() {
  153.       return this.commandKey;
  154.    }
  155.  
  156.    public void setState(boolean var1) {
  157.       this.state = var1;
  158.       if (this.foundationMenuItem instanceof FoundationCheckMenuItem) {
  159.          ((FoundationCheckMenuItem)this.foundationMenuItem).setState(this.state);
  160.          if (this.state) {
  161.             this.setImage(this.checkedImage());
  162.             this.setSelectedImage(this.checkedImage());
  163.             return;
  164.          }
  165.  
  166.          this.setImage(this.uncheckedImage());
  167.          this.setSelectedImage(this.uncheckedImage());
  168.       }
  169.  
  170.    }
  171.  
  172.    public boolean state() {
  173.       return this.foundationMenuItem instanceof FoundationCheckMenuItem ? this.state : false;
  174.    }
  175.  
  176.    public void setImage(Image var1) {
  177.       this.image = var1;
  178.    }
  179.  
  180.    public Image image() {
  181.       return this.image;
  182.    }
  183.  
  184.    public void setSelectedImage(Image var1) {
  185.       this.selectedImage = var1;
  186.    }
  187.  
  188.    public Image selectedImage() {
  189.       return this.selectedImage;
  190.    }
  191.  
  192.    public void setCheckedImage(Image var1) {
  193.       this.checkedImage = var1;
  194.       if (this.foundationMenuItem instanceof FoundationCheckMenuItem && this.state()) {
  195.          this.setImage(this.checkedImage);
  196.          this.setSelectedImage(this.checkedImage);
  197.       }
  198.  
  199.    }
  200.  
  201.    public Image checkedImage() {
  202.       return this.checkedImage;
  203.    }
  204.  
  205.    public void setUncheckedImage(Image var1) {
  206.       this.uncheckedImage = var1;
  207.       if (this.foundationMenuItem instanceof FoundationCheckMenuItem && !this.state()) {
  208.          this.setImage(this.uncheckedImage);
  209.          this.setSelectedImage(this.uncheckedImage);
  210.       }
  211.  
  212.    }
  213.  
  214.    public Image uncheckedImage() {
  215.       return this.uncheckedImage;
  216.    }
  217.  
  218.    public void setSelectedColor(Color var1) {
  219.       this.selectedColor = var1;
  220.    }
  221.  
  222.    public Color selectedColor() {
  223.       return this.selectedColor;
  224.    }
  225.  
  226.    public void setSelectedTextColor(Color var1) {
  227.       this.selectedTextColor = var1;
  228.    }
  229.  
  230.    public Color selectedTextColor() {
  231.       return this.selectedTextColor;
  232.    }
  233.  
  234.    public void setTextColor(Color var1) {
  235.       this.textColor = var1;
  236.    }
  237.  
  238.    public Color textColor() {
  239.       return this.textColor;
  240.    }
  241.  
  242.    public void setDisabledColor(Color var1) {
  243.       this.disabledColor = var1;
  244.    }
  245.  
  246.    public Color disabledColor() {
  247.       return this.disabledColor;
  248.    }
  249.  
  250.    public void setSelected(boolean var1) {
  251.       if (!this.isEnabled()) {
  252.          var1 = false;
  253.       }
  254.  
  255.       this.selected = var1;
  256.    }
  257.  
  258.    public boolean isSelected() {
  259.       return this.selected;
  260.    }
  261.  
  262.    public void setCommand(String var1) {
  263.       this.command = var1;
  264.    }
  265.  
  266.    public String command() {
  267.       return this.command;
  268.    }
  269.  
  270.    public void setTarget(Target var1) {
  271.       this.target = var1;
  272.    }
  273.  
  274.    public Target target() {
  275.       return this.target;
  276.    }
  277.  
  278.    public void processEvent(Event var1) {
  279.       this.sendCommand();
  280.    }
  281.  
  282.    public void sendCommand() {
  283.       if (this.target != null) {
  284.          this.target.performCommand(this.command, this);
  285.       }
  286.  
  287.    }
  288.  
  289.    private boolean canUseTabFormatter() {
  290.       return false;
  291.    }
  292.  
  293.    public void setTitle(String var1) {
  294.       String var3 = var1;
  295.       this.title = var1;
  296.       if (this.commandKey() != 0) {
  297.          if (JDK11AirLock.setMenuShortcut(this, this.commandKey())) {
  298.             var3 = var1;
  299.          } else if (this.canUseTabFormatter()) {
  300.             var3 = var1 + "\tCtrl+" + this.commandKey();
  301.          } else {
  302.             StringBuffer var4 = new StringBuffer();
  303.             FontMetrics var2 = this.font().fontMetrics();
  304.             int var7;
  305.             if (this.supermenu() != null) {
  306.                var7 = this.supermenu().minItemWidth();
  307.             } else {
  308.                var7 = this.minWidth();
  309.             }
  310.  
  311.             int var8 = var2.stringWidth(var1);
  312.             var4.append(var1);
  313.             int var5 = (var7 - var8) / var2.stringWidth(" ");
  314.  
  315.             for(int var6 = 0; var6 < var5; ++var6) {
  316.                var4.append(' ');
  317.             }
  318.  
  319.             var3 = var4.toString() + "  Ctrl+" + this.commandKey();
  320.          }
  321.       }
  322.  
  323.       this.foundationMenuItem.setLabel(var3);
  324.    }
  325.  
  326.    public String title() {
  327.       return this.title;
  328.    }
  329.  
  330.    public int minHeight() {
  331.       int var1 = 0;
  332.       if (this.font() != null) {
  333.          var1 = this.font().fontMetrics().stringHeight();
  334.       }
  335.  
  336.       return var1;
  337.    }
  338.  
  339.    public int minWidth() {
  340.       int var1 = 0;
  341.       if (this.image != null) {
  342.          var1 = this.image.width();
  343.       }
  344.  
  345.       if (this.selectedImage != null && this.selectedImage.width() > var1) {
  346.          var1 = this.selectedImage.width();
  347.       }
  348.  
  349.       if (this.font() != null) {
  350.          var1 += this.font().fontMetrics().stringWidth(this.title);
  351.       }
  352.  
  353.       if (var1 > 0) {
  354.          var1 += 11;
  355.       }
  356.  
  357.       var1 += this.commandKeyWidth();
  358.       return var1;
  359.    }
  360.  
  361.    int commandKeyWidth() {
  362.       int var1 = 0;
  363.       if (this.font() != null && this.commandKey() != 0) {
  364.          var1 = this.font().fontMetrics().stringWidth("Ctrl+W");
  365.          var1 += 10;
  366.       }
  367.  
  368.       return var1;
  369.    }
  370.  
  371.    public void setEnabled(boolean var1) {
  372.       this.enabled = var1;
  373.       if (this.hasSubmenu()) {
  374.          this.submenu.awtMenu().enable(var1);
  375.       } else {
  376.          this.foundationMenuItem.enable(var1);
  377.       }
  378.  
  379.       this.requestDraw();
  380.    }
  381.  
  382.    public boolean isEnabled() {
  383.       return this.enabled;
  384.    }
  385.  
  386.    public void setFont(Font var1) {
  387.       this.font = var1;
  388.       java.awt.Font var2 = AWTCompatibility.awtFontForFont(this.font);
  389.       this.foundationMenuItem.setFont(var2);
  390.    }
  391.  
  392.    public Font font() {
  393.       return this.font;
  394.    }
  395.  
  396.    public void requestDraw() {
  397.       if (this.supermenu() != null && this.supermenu().menuView != null) {
  398.          this.supermenu().menuView.drawItemAt(this.supermenu().indexOfItem(this));
  399.       }
  400.  
  401.    }
  402.  
  403.    protected void drawSeparator(Graphics var1, Rect var2) {
  404.       int var3 = var2.y + var2.height / 2;
  405.       int var4 = var2.x + var2.width;
  406.       var1.setColor(Color.gray153);
  407.       var1.drawLine(var2.x, var3 - 1, var4, var3 - 1);
  408.       var1.setColor(Color.gray231);
  409.       var1.drawLine(var2.x, var3, var4, var3);
  410.    }
  411.  
  412.    protected void drawBackground(Graphics var1, Rect var2) {
  413.       if (this.isSelected()) {
  414.          var1.setColor(this.selectedColor);
  415.          var1.fillRect(var2);
  416.       }
  417.  
  418.    }
  419.  
  420.    protected void drawStringInRect(Graphics var1, String var2, Font var3, Rect var4, int var5) {
  421.       int var8 = 0;
  422.       if (this.isEnabled() && !this.isSelected()) {
  423.          var1.setColor(this.textColor);
  424.       } else if (this.isEnabled() && this.isSelected()) {
  425.          var1.setColor(this.selectedTextColor);
  426.       } else {
  427.          var1.setColor(this.disabledColor);
  428.       }
  429.  
  430.       var1.setFont(var3);
  431.       var1.drawStringInRect(var2, var4, var5);
  432.       if (this.commandKey() != 0) {
  433.          Font var9 = this.font();
  434.          if (var9 != null) {
  435.             var8 = var9.fontMetrics().stringWidth("Ctrl+W");
  436.             var8 += 10;
  437.          }
  438.  
  439.          Rect var7 = new Rect(var4.x + var4.width - var8, var4.y, var8, var4.height);
  440.          String var6 = "Ctrl+" + this.commandKey();
  441.          var1.drawStringInRect(var6, var7, 0);
  442.       }
  443.  
  444.    }
  445.  
  446.    public void drawInRect(Graphics var1, Rect var2, boolean var3) {
  447.       if (this.isSeparator()) {
  448.          this.drawSeparator(var1, var2);
  449.       } else {
  450.          this.drawBackground(var1, var2);
  451.          Image var4;
  452.          if (this.isSelected()) {
  453.             var4 = this.selectedImage;
  454.          } else {
  455.             var4 = this.image;
  456.          }
  457.  
  458.          int var7 = 0;
  459.          int var6 = 0;
  460.          if (this.image != null) {
  461.             var6 = this.image.width();
  462.             var7 = this.image.height();
  463.          }
  464.  
  465.          if (this.selectedImage != null) {
  466.             if (this.selectedImage.width() > var6) {
  467.                var6 = this.selectedImage.width();
  468.             }
  469.  
  470.             if (this.selectedImage.height() > var7) {
  471.                var7 = this.selectedImage.height();
  472.             }
  473.          }
  474.  
  475.          if (var4 != null) {
  476.             var4.drawAt(var1, var2.x, var2.y + (var2.height - var7) / 2);
  477.          }
  478.  
  479.          if (this.title != null && this.title.length() > 0) {
  480.             Rect var5 = Rect.newRect(var2.x + 2 + var6, var2.y, var2.width - 2 - var6, var2.height);
  481.             this.drawStringInRect(var1, this.title, this.font(), var5, 0);
  482.             Rect.returnRect(var5);
  483.          }
  484.  
  485.          if (var3 && this.hasSubmenu()) {
  486.             var4 = Bitmap.bitmapNamed("netscape/application/ScrollRightArrow.gif");
  487.             var6 = var4.width();
  488.             var7 = var4.height();
  489.             var4.drawAt(var1, var2.x + var2.width - var6, var2.y + (var2.height - var7) / 2);
  490.          }
  491.  
  492.       }
  493.    }
  494.  
  495.    public void describeClassInfo(ClassInfo var1) {
  496.       var1.addClass("netscape.application.MenuItem", 1);
  497.       var1.addField("submenu", (byte)18);
  498.       var1.addField("supermenu", (byte)18);
  499.       var1.addField("command", (byte)16);
  500.       var1.addField("title", (byte)16);
  501.       var1.addField("target", (byte)18);
  502.       var1.addField("commandKey", (byte)2);
  503.       var1.addField("font", (byte)18);
  504.       var1.addField("checkedImage", (byte)18);
  505.       var1.addField("uncheckedImage", (byte)18);
  506.       var1.addField("image", (byte)18);
  507.       var1.addField("selectedImage", (byte)18);
  508.       var1.addField("selectedColor", (byte)18);
  509.       var1.addField("selectedTextColor", (byte)18);
  510.       var1.addField("textColor", (byte)18);
  511.       var1.addField("disabledColor", (byte)18);
  512.       var1.addField("separator", (byte)0);
  513.       var1.addField("enabled", (byte)0);
  514.       var1.addField("state", (byte)0);
  515.       var1.addField("data", (byte)18);
  516.    }
  517.  
  518.    public void encode(Encoder var1) throws CodingException {
  519.       var1.encodeObject("submenu", this.submenu);
  520.       var1.encodeObject("supermenu", this.supermenu);
  521.       var1.encodeString("command", this.command);
  522.       var1.encodeString("title", this.title);
  523.       var1.encodeObject("target", this.target);
  524.       var1.encodeChar("commandKey", this.commandKey);
  525.       var1.encodeObject("font", this.font);
  526.       var1.encodeObject("checkedImage", this.checkedImage);
  527.       var1.encodeObject("uncheckedImage", this.uncheckedImage);
  528.       var1.encodeObject("image", this.image);
  529.       var1.encodeObject("selectedImage", this.selectedImage);
  530.       var1.encodeObject("selectedColor", this.selectedColor);
  531.       var1.encodeObject("selectedTextColor", this.selectedTextColor);
  532.       var1.encodeObject("textColor", this.textColor);
  533.       var1.encodeObject("disabledColor", this.disabledColor);
  534.       var1.encodeBoolean("separator", this.separator);
  535.       var1.encodeBoolean("enabled", this.enabled);
  536.       var1.encodeBoolean("state", this.state);
  537.       var1.encodeObject("data", this.data);
  538.    }
  539.  
  540.    public void decode(Decoder var1) throws CodingException {
  541.       this.submenu = (Menu)var1.decodeObject("submenu");
  542.       this.supermenu = (Menu)var1.decodeObject("supermenu");
  543.       this.command = var1.decodeString("command");
  544.       this.title = var1.decodeString("title");
  545.       this.target = (Target)var1.decodeObject("target");
  546.       this.commandKey = var1.decodeChar("commandKey");
  547.       this.font = (Font)var1.decodeObject("font");
  548.       this.checkedImage = (Image)var1.decodeObject("checkedImage");
  549.       this.uncheckedImage = (Image)var1.decodeObject("uncheckedImage");
  550.       this.image = (Image)var1.decodeObject("image");
  551.       this.selectedImage = (Image)var1.decodeObject("selectedImage");
  552.       this.selectedColor = (Color)var1.decodeObject("selectedColor");
  553.       this.selectedTextColor = (Color)var1.decodeObject("selectedTextColor");
  554.       this.textColor = (Color)var1.decodeObject("textColor");
  555.       this.disabledColor = (Color)var1.decodeObject("disabledColor");
  556.       this.separator = var1.decodeBoolean("separator");
  557.       this.enabled = var1.decodeBoolean("enabled");
  558.       this.state = var1.decodeBoolean("state");
  559.       this.data = var1.decodeObject("data");
  560.    }
  561.  
  562.    public void finishDecoding() throws CodingException {
  563.    }
  564. }
  565.