home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
- import netscape.util.InconsistencyException;
-
- public class MenuItem implements Codable, Cloneable, EventProcessor {
- Menu submenu;
- Menu supermenu;
- java.awt.MenuItem foundationMenuItem;
- String command;
- String title;
- Target target;
- char commandKey;
- Font font;
- Image checkedImage;
- Image uncheckedImage;
- Image image;
- Image selectedImage;
- Color selectedColor;
- Color selectedTextColor;
- Color textColor;
- Color disabledColor;
- boolean selected;
- boolean separator;
- boolean state;
- boolean enabled;
- Object data;
- static final String SUBMENU_KEY = "submenu";
- static final String SUPERMENU_KEY = "supermenu";
- static final String COMMAND_KEY = "command";
- static final String TITLE_KEY = "title";
- static final String TARGET_KEY = "target";
- static final String COMMANDKEY_KEY = "commandKey";
- static final String FONT_KEY = "font";
- static final String CHECKEDIMAGE_KEY = "checkedImage";
- static final String UNCHECKEDIMAGE_KEY = "uncheckedImage";
- static final String IMAGE_KEY = "image";
- static final String SELECTEDIMAGE_KEY = "selectedImage";
- static final String SELECTEDCOLOR_KEY = "selectedColor";
- static final String SELECTEDTEXTCOLOR_KEY = "selectedTextColor";
- static final String TEXTCOLOR_KEY = "textColor";
- static final String DISABLEDCOLOR_KEY = "disabledColor";
- static final String SEPARATOR_KEY = "separator";
- static final String STATE_KEY = "state";
- static final String ENABLED_KEY = "enabled";
- static final String DATA_KEY = "data";
-
- public MenuItem() {
- this("", '\u0000', (String)null, (Target)null, false);
- }
-
- public MenuItem(String var1, String var2, Target var3) {
- this(var1, '\u0000', var2, var3, false);
- }
-
- public MenuItem(String var1, char var2, String var3, Target var4) {
- this(var1, var2, var3, var4, false);
- }
-
- public MenuItem(String var1, String var2, Target var3, boolean var4) {
- this(var1, '\u0000', var2, var3, var4);
- }
-
- public MenuItem(String var1, char var2, String var3, Target var4, boolean var5) {
- this.commandKey = Character.toUpperCase(var2);
- if (!var5) {
- this.foundationMenuItem = new FoundationMenuItem(var1, this);
- } else {
- this.foundationMenuItem = new FoundationCheckMenuItem(var1, this);
- this.setUncheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOff.gif"));
- this.setCheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOn.gif"));
- this.setImage(this.uncheckedImage);
- this.setSelectedImage(this.uncheckedImage);
- }
-
- this.setEnabled(true);
- this.setFont(new Font("Helvetica", 0, 12));
- this.setTitle(var1);
- this.setTarget(var4);
- this.setCommand(var3);
- this.selectedColor = Color.white;
- this.textColor = Color.black;
- this.selectedTextColor = Color.black;
- this.disabledColor = Color.gray;
- }
-
- public Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException var2) {
- throw new InconsistencyException(this + ": clone() not supported :" + var2);
- }
- }
-
- java.awt.MenuItem foundationMenuItem() {
- return this.foundationMenuItem;
- }
-
- public void setSeparator(boolean var1) {
- this.separator = var1;
- if (var1) {
- this.setEnabled(true);
- }
-
- }
-
- public boolean isSeparator() {
- return this.separator;
- }
-
- public void setData(Object var1) {
- this.data = var1;
- }
-
- public Object data() {
- return this.data;
- }
-
- public void setSubmenu(Menu var1) {
- this.submenu = var1;
- if (this.submenu != null) {
- this.submenu.setSuperitem(this);
- }
-
- }
-
- public Menu submenu() {
- return this.submenu;
- }
-
- public boolean hasSubmenu() {
- return this.submenu != null;
- }
-
- public void setSupermenu(Menu var1) {
- this.supermenu = var1;
- }
-
- public Menu supermenu() {
- return this.supermenu;
- }
-
- public void setCommandKey(char var1) {
- this.commandKey = Character.toUpperCase(var1);
- this.setTitle(this.title);
- }
-
- public char commandKey() {
- return this.commandKey;
- }
-
- public void setState(boolean var1) {
- this.state = var1;
- if (this.foundationMenuItem instanceof FoundationCheckMenuItem) {
- ((FoundationCheckMenuItem)this.foundationMenuItem).setState(this.state);
- if (this.state) {
- this.setImage(this.checkedImage());
- this.setSelectedImage(this.checkedImage());
- return;
- }
-
- this.setImage(this.uncheckedImage());
- this.setSelectedImage(this.uncheckedImage());
- }
-
- }
-
- public boolean state() {
- return this.foundationMenuItem instanceof FoundationCheckMenuItem ? this.state : false;
- }
-
- public void setImage(Image var1) {
- this.image = var1;
- }
-
- public Image image() {
- return this.image;
- }
-
- public void setSelectedImage(Image var1) {
- this.selectedImage = var1;
- }
-
- public Image selectedImage() {
- return this.selectedImage;
- }
-
- public void setCheckedImage(Image var1) {
- this.checkedImage = var1;
- if (this.foundationMenuItem instanceof FoundationCheckMenuItem && this.state()) {
- this.setImage(this.checkedImage);
- this.setSelectedImage(this.checkedImage);
- }
-
- }
-
- public Image checkedImage() {
- return this.checkedImage;
- }
-
- public void setUncheckedImage(Image var1) {
- this.uncheckedImage = var1;
- if (this.foundationMenuItem instanceof FoundationCheckMenuItem && !this.state()) {
- this.setImage(this.uncheckedImage);
- this.setSelectedImage(this.uncheckedImage);
- }
-
- }
-
- public Image uncheckedImage() {
- return this.uncheckedImage;
- }
-
- public void setSelectedColor(Color var1) {
- this.selectedColor = var1;
- }
-
- public Color selectedColor() {
- return this.selectedColor;
- }
-
- public void setSelectedTextColor(Color var1) {
- this.selectedTextColor = var1;
- }
-
- public Color selectedTextColor() {
- return this.selectedTextColor;
- }
-
- public void setTextColor(Color var1) {
- this.textColor = var1;
- }
-
- public Color textColor() {
- return this.textColor;
- }
-
- public void setDisabledColor(Color var1) {
- this.disabledColor = var1;
- }
-
- public Color disabledColor() {
- return this.disabledColor;
- }
-
- public void setSelected(boolean var1) {
- if (!this.isEnabled()) {
- var1 = false;
- }
-
- this.selected = var1;
- }
-
- public boolean isSelected() {
- return this.selected;
- }
-
- public void setCommand(String var1) {
- this.command = var1;
- }
-
- public String command() {
- return this.command;
- }
-
- public void setTarget(Target var1) {
- this.target = var1;
- }
-
- public Target target() {
- return this.target;
- }
-
- public void processEvent(Event var1) {
- this.sendCommand();
- }
-
- public void sendCommand() {
- if (this.target != null) {
- this.target.performCommand(this.command, this);
- }
-
- }
-
- private boolean canUseTabFormatter() {
- return false;
- }
-
- public void setTitle(String var1) {
- String var3 = var1;
- this.title = var1;
- if (this.commandKey() != 0) {
- if (JDK11AirLock.setMenuShortcut(this, this.commandKey())) {
- var3 = var1;
- } else if (this.canUseTabFormatter()) {
- var3 = var1 + "\tCtrl+" + this.commandKey();
- } else {
- StringBuffer var4 = new StringBuffer();
- FontMetrics var2 = this.font().fontMetrics();
- int var7;
- if (this.supermenu() != null) {
- var7 = this.supermenu().minItemWidth();
- } else {
- var7 = this.minWidth();
- }
-
- int var8 = var2.stringWidth(var1);
- var4.append(var1);
- int var5 = (var7 - var8) / var2.stringWidth(" ");
-
- for(int var6 = 0; var6 < var5; ++var6) {
- var4.append(' ');
- }
-
- var3 = var4.toString() + " Ctrl+" + this.commandKey();
- }
- }
-
- this.foundationMenuItem.setLabel(var3);
- }
-
- public String title() {
- return this.title;
- }
-
- public int minHeight() {
- int var1 = 0;
- if (this.font() != null) {
- var1 = this.font().fontMetrics().stringHeight();
- }
-
- return var1;
- }
-
- public int minWidth() {
- int var1 = 0;
- if (this.image != null) {
- var1 = this.image.width();
- }
-
- if (this.selectedImage != null && this.selectedImage.width() > var1) {
- var1 = this.selectedImage.width();
- }
-
- if (this.font() != null) {
- var1 += this.font().fontMetrics().stringWidth(this.title);
- }
-
- if (var1 > 0) {
- var1 += 11;
- }
-
- var1 += this.commandKeyWidth();
- return var1;
- }
-
- int commandKeyWidth() {
- int var1 = 0;
- if (this.font() != null && this.commandKey() != 0) {
- var1 = this.font().fontMetrics().stringWidth("Ctrl+W");
- var1 += 10;
- }
-
- return var1;
- }
-
- public void setEnabled(boolean var1) {
- this.enabled = var1;
- if (this.hasSubmenu()) {
- this.submenu.awtMenu().enable(var1);
- } else {
- this.foundationMenuItem.enable(var1);
- }
-
- this.requestDraw();
- }
-
- public boolean isEnabled() {
- return this.enabled;
- }
-
- public void setFont(Font var1) {
- this.font = var1;
- java.awt.Font var2 = AWTCompatibility.awtFontForFont(this.font);
- this.foundationMenuItem.setFont(var2);
- }
-
- public Font font() {
- return this.font;
- }
-
- public void requestDraw() {
- if (this.supermenu() != null && this.supermenu().menuView != null) {
- this.supermenu().menuView.drawItemAt(this.supermenu().indexOfItem(this));
- }
-
- }
-
- protected void drawSeparator(Graphics var1, Rect var2) {
- int var3 = var2.y + var2.height / 2;
- int var4 = var2.x + var2.width;
- var1.setColor(Color.gray153);
- var1.drawLine(var2.x, var3 - 1, var4, var3 - 1);
- var1.setColor(Color.gray231);
- var1.drawLine(var2.x, var3, var4, var3);
- }
-
- protected void drawBackground(Graphics var1, Rect var2) {
- if (this.isSelected()) {
- var1.setColor(this.selectedColor);
- var1.fillRect(var2);
- }
-
- }
-
- protected void drawStringInRect(Graphics var1, String var2, Font var3, Rect var4, int var5) {
- int var8 = 0;
- if (this.isEnabled() && !this.isSelected()) {
- var1.setColor(this.textColor);
- } else if (this.isEnabled() && this.isSelected()) {
- var1.setColor(this.selectedTextColor);
- } else {
- var1.setColor(this.disabledColor);
- }
-
- var1.setFont(var3);
- var1.drawStringInRect(var2, var4, var5);
- if (this.commandKey() != 0) {
- Font var9 = this.font();
- if (var9 != null) {
- var8 = var9.fontMetrics().stringWidth("Ctrl+W");
- var8 += 10;
- }
-
- Rect var7 = new Rect(var4.x + var4.width - var8, var4.y, var8, var4.height);
- String var6 = "Ctrl+" + this.commandKey();
- var1.drawStringInRect(var6, var7, 0);
- }
-
- }
-
- public void drawInRect(Graphics var1, Rect var2, boolean var3) {
- if (this.isSeparator()) {
- this.drawSeparator(var1, var2);
- } else {
- this.drawBackground(var1, var2);
- Image var4;
- if (this.isSelected()) {
- var4 = this.selectedImage;
- } else {
- var4 = this.image;
- }
-
- int var7 = 0;
- int var6 = 0;
- if (this.image != null) {
- var6 = this.image.width();
- var7 = this.image.height();
- }
-
- if (this.selectedImage != null) {
- if (this.selectedImage.width() > var6) {
- var6 = this.selectedImage.width();
- }
-
- if (this.selectedImage.height() > var7) {
- var7 = this.selectedImage.height();
- }
- }
-
- if (var4 != null) {
- var4.drawAt(var1, var2.x, var2.y + (var2.height - var7) / 2);
- }
-
- if (this.title != null && this.title.length() > 0) {
- Rect var5 = Rect.newRect(var2.x + 2 + var6, var2.y, var2.width - 2 - var6, var2.height);
- this.drawStringInRect(var1, this.title, this.font(), var5, 0);
- Rect.returnRect(var5);
- }
-
- if (var3 && this.hasSubmenu()) {
- var4 = Bitmap.bitmapNamed("netscape/application/ScrollRightArrow.gif");
- var6 = var4.width();
- var7 = var4.height();
- var4.drawAt(var1, var2.x + var2.width - var6, var2.y + (var2.height - var7) / 2);
- }
-
- }
- }
-
- public void describeClassInfo(ClassInfo var1) {
- var1.addClass("netscape.application.MenuItem", 1);
- var1.addField("submenu", (byte)18);
- var1.addField("supermenu", (byte)18);
- var1.addField("command", (byte)16);
- var1.addField("title", (byte)16);
- var1.addField("target", (byte)18);
- var1.addField("commandKey", (byte)2);
- var1.addField("font", (byte)18);
- var1.addField("checkedImage", (byte)18);
- var1.addField("uncheckedImage", (byte)18);
- var1.addField("image", (byte)18);
- var1.addField("selectedImage", (byte)18);
- var1.addField("selectedColor", (byte)18);
- var1.addField("selectedTextColor", (byte)18);
- var1.addField("textColor", (byte)18);
- var1.addField("disabledColor", (byte)18);
- var1.addField("separator", (byte)0);
- var1.addField("enabled", (byte)0);
- var1.addField("state", (byte)0);
- var1.addField("data", (byte)18);
- }
-
- public void encode(Encoder var1) throws CodingException {
- var1.encodeObject("submenu", this.submenu);
- var1.encodeObject("supermenu", this.supermenu);
- var1.encodeString("command", this.command);
- var1.encodeString("title", this.title);
- var1.encodeObject("target", this.target);
- var1.encodeChar("commandKey", this.commandKey);
- var1.encodeObject("font", this.font);
- var1.encodeObject("checkedImage", this.checkedImage);
- var1.encodeObject("uncheckedImage", this.uncheckedImage);
- var1.encodeObject("image", this.image);
- var1.encodeObject("selectedImage", this.selectedImage);
- var1.encodeObject("selectedColor", this.selectedColor);
- var1.encodeObject("selectedTextColor", this.selectedTextColor);
- var1.encodeObject("textColor", this.textColor);
- var1.encodeObject("disabledColor", this.disabledColor);
- var1.encodeBoolean("separator", this.separator);
- var1.encodeBoolean("enabled", this.enabled);
- var1.encodeBoolean("state", this.state);
- var1.encodeObject("data", this.data);
- }
-
- public void decode(Decoder var1) throws CodingException {
- this.submenu = (Menu)var1.decodeObject("submenu");
- this.supermenu = (Menu)var1.decodeObject("supermenu");
- this.command = var1.decodeString("command");
- this.title = var1.decodeString("title");
- this.target = (Target)var1.decodeObject("target");
- this.commandKey = var1.decodeChar("commandKey");
- this.font = (Font)var1.decodeObject("font");
- this.checkedImage = (Image)var1.decodeObject("checkedImage");
- this.uncheckedImage = (Image)var1.decodeObject("uncheckedImage");
- this.image = (Image)var1.decodeObject("image");
- this.selectedImage = (Image)var1.decodeObject("selectedImage");
- this.selectedColor = (Color)var1.decodeObject("selectedColor");
- this.selectedTextColor = (Color)var1.decodeObject("selectedTextColor");
- this.textColor = (Color)var1.decodeObject("textColor");
- this.disabledColor = (Color)var1.decodeObject("disabledColor");
- this.separator = var1.decodeBoolean("separator");
- this.enabled = var1.decodeBoolean("enabled");
- this.state = var1.decodeBoolean("state");
- this.data = var1.decodeObject("data");
- }
-
- public void finishDecoding() throws CodingException {
- }
- }
-