home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import java.awt.MenuBar;
- import java.awt.MenuComponent;
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
- import netscape.util.Vector;
-
- public class Menu implements Codable {
- java.awt.Menu awtMenu;
- MenuBar awtMenuBar;
- Application application;
- Vector items;
- MenuItem superitem;
- MenuItem prototypeItem;
- Border border;
- Color backgroundColor;
- boolean transparent;
- MenuView menuView;
- static final String ITEMS_KEY = "items";
- static final String SUPERITEM_KEY = "superitem";
- static final String PROTOTYPEITEM_KEY = "prototypeItem";
- static final String BORDER_KEY = "border";
- static final String BACKGROUNDCOLOR_KEY = "backgroundColor";
- static final String TRANSPARENT_KEY = "transparent";
-
- public Menu() {
- this(true);
- }
-
- public Menu(boolean var1) {
- this.transparent = false;
- this.items = new Vector();
- this.backgroundColor = Color.lightGray;
- this.setBorder(new MenuBorder(this));
- if (var1) {
- this.awtMenuBar = new MenuBar();
- } else {
- this.awtMenu = new java.awt.Menu("");
- }
-
- MenuItem var2 = new MenuItem();
- this.setPrototypeItem(var2);
- }
-
- boolean isTopLevel() {
- return this.superitem == null || this.superitem.supermenu() == null;
- }
-
- void setSuperitem(MenuItem var1) {
- this.superitem = var1;
- }
-
- MenuItem superitem() {
- return this.superitem;
- }
-
- public void setPrototypeItem(MenuItem var1) {
- this.prototypeItem = var1;
- }
-
- public MenuItem prototypeItem() {
- return this.prototypeItem;
- }
-
- public void setBackgroundColor(Color var1) {
- this.backgroundColor = var1;
- }
-
- public Color backgroundColor() {
- return this.backgroundColor;
- }
-
- public void setBorder(Border var1) {
- if (var1 == null) {
- this.border = EmptyBorder.emptyBorder();
- } else {
- this.border = var1;
- }
- }
-
- public Border border() {
- return this.border;
- }
-
- public void setTransparent(boolean var1) {
- this.transparent = var1;
- }
-
- public boolean isTransparent() {
- return this.transparent;
- }
-
- MenuItem createItem(boolean var1) {
- MenuItem var2 = (MenuItem)this.prototypeItem().clone();
- if (!var1) {
- var2.foundationMenuItem = new FoundationMenuItem("", var2);
- } else {
- var2.foundationMenuItem = new FoundationCheckMenuItem("", var2);
- var2.setCheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOn.gif"));
- var2.setUncheckedImage(Bitmap.bitmapNamed("netscape/application/RadioButtonOff.gif"));
- var2.setImage(var2.uncheckedImage());
- var2.setSelectedImage(var2.uncheckedImage());
- }
-
- var2.setFont(this.prototypeItem().font());
- return var2;
- }
-
- protected Menu createMenuAsSubmenu() {
- Menu var1 = new Menu(false);
- var1.setPrototypeItem(this.createItem(false));
- var1.setBackgroundColor(this.backgroundColor());
- return var1;
- }
-
- public MenuItem addItemWithSubmenu(String var1) {
- MenuItem var2 = this.createItem(false);
- var2.setTitle(var1);
- Menu var3 = this.createMenuAsSubmenu();
- var2.setSubmenu(var3);
- this.addItemAt(var2, this.itemCount());
- return var2;
- }
-
- public MenuItem addItem(String var1, String var2, Target var3) {
- return this.addItem(var1, '\u0000', var2, var3);
- }
-
- public MenuItem addItem(String var1, String var2, Target var3, boolean var4) {
- return this.addItem(var1, '\u0000', var2, var3, var4);
- }
-
- public MenuItem addItem(String var1, char var2, String var3, Target var4) {
- return this.addItem(var1, var2, var3, var4, false);
- }
-
- public MenuItem addItem(String var1, char var2, String var3, Target var4, boolean var5) {
- return this.addItemAt(var1, var2, var3, var4, var5, this.itemCount());
- }
-
- public MenuItem addItemAt(String var1, char var2, String var3, Target var4, boolean var5, int var6) {
- MenuItem var7 = this.createItem(var5);
- var7.setSubmenu((Menu)null);
- var7.setSupermenu(this);
- var7.setCommandKey(var2);
- var7.setTitle(var1);
- var7.setTarget(var4);
- var7.setCommand(var3);
- this.addItemAt(var7, var6);
- return var7;
- }
-
- public MenuItem addSeparator() {
- Object var1 = null;
- MenuItem var2 = this.createItem(false);
- var2.setSeparator(true);
- this.addItemAt(var2, this.itemCount());
- return var2;
- }
-
- public int indexOfItem(MenuItem var1) {
- return this.items.indexOf(var1);
- }
-
- public int itemCount() {
- return this.items.count();
- }
-
- public MenuItem itemAt(int var1) {
- return (MenuItem)this.items.elementAt(var1);
- }
-
- public void addItemAt(MenuItem var1, int var2) {
- var1.setSupermenu(this);
- if (var1.hasSubmenu()) {
- java.awt.Menu var3 = var1.submenu().awtMenu();
- ((java.awt.MenuItem)var3).setLabel(var1.title());
- ((MenuComponent)var3).setFont(AWTCompatibility.awtFontForFont(var1.font()));
- if (this.isTopLevel()) {
- if (this.awtMenuBar != null) {
- this.awtMenuBar.add(var3);
- }
- } else if (this.awtMenu != null) {
- this.awtMenu.add(var3);
- }
- } else if (!this.isTopLevel() && this.awtMenu != null) {
- if (var1.isSeparator()) {
- this.awtMenu.addSeparator();
- } else {
- this.awtMenu.add(var1.foundationMenuItem());
- }
- }
-
- this.items.insertElementAt(var1, var2);
-
- for(int var4 = 0; var4 < this.itemCount(); ++var4) {
- this.itemAt(var4).setTitle(this.itemAt(var4).title());
- }
-
- }
-
- public void removeItem(MenuItem var1) {
- this.items.removeElement(var1);
- if (this.isTopLevel()) {
- this.awtMenuBar.remove(var1.foundationMenuItem());
- } else {
- this.awtMenu.remove(var1.foundationMenuItem());
- }
- }
-
- public void removeItemAt(int var1) {
- this.items.removeElementAt(var1);
- if (this.isTopLevel()) {
- this.awtMenuBar.remove(var1);
- } else {
- this.awtMenu.remove(var1);
- }
- }
-
- public void replaceItemAt(int var1, MenuItem var2) {
- this.items.replaceElementAt(var1, var2);
- }
-
- public void replaceItem(MenuItem var1, MenuItem var2) {
- int var3 = this.indexOfItem(var1);
- if (var3 != -1) {
- this.replaceItemAt(var3, var2);
- }
-
- }
-
- public void performCommand(String var1, Object var2) {
- if (var2 != null) {
- MenuItem var3 = (MenuItem)var2;
- var3.setState(!var3.state());
- var3.sendCommand();
- }
-
- }
-
- int minItemWidth() {
- int var3 = 0;
-
- for(int var1 = 0; var1 < this.itemCount(); ++var1) {
- int var2 = this.itemAt(var1).minWidth();
- if (var2 > var3) {
- var3 = var2;
- }
- }
-
- return var3;
- }
-
- public boolean handleCommandKeyEvent(KeyEvent var1) {
- boolean var3 = false;
- if (!var1.isControlKeyDown()) {
- return false;
- } else {
- MenuItem var2 = this.itemForKeyEvent(var1);
- if (var2 != null) {
- var2.sendCommand();
- var3 = true;
- }
-
- return var3;
- }
- }
-
- MenuItem itemForKeyEvent(KeyEvent var1) {
- MenuItem var4 = null;
- if (!var1.isControlKeyDown()) {
- return null;
- } else {
- for(int var2 = 0; var2 < this.itemCount() && var4 == null; ++var2) {
- MenuItem var3 = this.itemAt(var2);
- if (var3.isEnabled()) {
- if (var3.hasSubmenu()) {
- var4 = var3.submenu().itemForKeyEvent(var1);
- } else if (var3.commandKey() == var1.key + 64) {
- var4 = var3;
- }
- }
- }
-
- return var4;
- }
- }
-
- java.awt.Menu awtMenu() {
- return this.awtMenu;
- }
-
- MenuBar awtMenuBar() {
- return this.awtMenuBar;
- }
-
- void setApplication(Application var1) {
- this.application = var1;
- }
-
- Application application() {
- return this.application;
- }
-
- public void describeClassInfo(ClassInfo var1) {
- var1.addClass("netscape.application.Menu", 1);
- var1.addField("items", (byte)18);
- var1.addField("superitem", (byte)18);
- var1.addField("prototypeItem", (byte)18);
- var1.addField("border", (byte)18);
- var1.addField("backgroundColor", (byte)18);
- var1.addField("transparent", (byte)0);
- }
-
- public void encode(Encoder var1) throws CodingException {
- var1.encodeObject("items", this.items);
- var1.encodeObject("superitem", this.superitem);
- var1.encodeObject("prototypeItem", this.prototypeItem);
- var1.encodeObject("border", this.border);
- var1.encodeObject("backgroundColor", this.backgroundColor);
- var1.encodeBoolean("transparent", this.transparent);
- }
-
- public void decode(Decoder var1) throws CodingException {
- this.items = (Vector)var1.decodeObject("items");
- this.superitem = (MenuItem)var1.decodeObject("superitem");
- this.prototypeItem = (MenuItem)var1.decodeObject("prototypeItem");
- this.border = (Border)var1.decodeObject("border");
- this.backgroundColor = (Color)var1.decodeObject("backgroundColor");
- this.transparent = var1.decodeBoolean("transparent");
- }
-
- public void finishDecoding() throws CodingException {
- }
- }
-