home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing;
-
- import java.awt.AWTEvent;
- import java.awt.Component;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.util.EventObject;
- import java.util.Vector;
-
- public class MenuSelectionManager {
- private static final MenuSelectionManager instance = new MenuSelectionManager();
- Vector selection = new Vector();
-
- public static MenuSelectionManager defaultManager() {
- return instance;
- }
-
- public void setSelectedPath(MenuElement[] var1) {
- int var4 = this.selection.size();
- int var5 = 0;
- if (var1 == null) {
- var1 = new MenuElement[0];
- }
-
- int var2 = 0;
-
- for(int var3 = var1.length; var2 < var3 && var2 < var4 && (MenuElement)this.selection.elementAt(var2) == var1[var2]; ++var2) {
- ++var5;
- }
-
- for(int var6 = var4 - 1; var6 >= var5; --var6) {
- ((MenuElement)this.selection.elementAt(var6)).menuSelectionChanged(false);
- this.selection.removeElementAt(var6);
- }
-
- var2 = var5;
-
- for(int var8 = var1.length; var2 < var8; ++var2) {
- var1[var2].menuSelectionChanged(true);
- this.selection.addElement(var1[var2]);
- }
-
- }
-
- public MenuElement[] getSelectedPath() {
- MenuElement[] var1 = new MenuElement[this.selection.size()];
- int var2 = 0;
-
- for(int var3 = this.selection.size(); var2 < var3; ++var2) {
- var1[var2] = (MenuElement)this.selection.elementAt(var2);
- }
-
- return var1;
- }
-
- public void clearSelectedPath() {
- this.setSelectedPath((MenuElement[])null);
- }
-
- public void processMouseEvent(MouseEvent var1) {
- Point var4 = var1.getPoint();
- Component var17 = (Component)((EventObject)var1).getSource();
- if (!var17.isShowing()) {
- System.err.println("Received a mouse event from a non-showing Component " + var17);
- } else {
- SwingUtilities.convertPointToScreen(var4, var17);
- int var2 = var4.x;
- int var3 = var4.y;
- Vector var15 = (Vector)this.selection.clone();
- int var16 = var15.size();
-
- for(int var5 = var16 - 1; var5 >= 0; --var5) {
- MenuElement var12 = (MenuElement)var15.elementAt(var5);
- MenuElement[] var13 = var12.getSubElements();
- MenuElement[] var14 = null;
- int var6 = 0;
-
- for(int var7 = var13.length; var6 < var7; ++var6) {
- if (var13[var6] != null) {
- Component var8 = var13[var6].getComponent();
- if (var8.isShowing()) {
- int var10;
- int var11;
- if (var8 instanceof JComponent) {
- var10 = ((JComponent)var8).getWidth();
- var11 = ((JComponent)var8).getHeight();
- } else {
- Rectangle var9 = var8.getBounds();
- var10 = var9.width;
- var11 = var9.height;
- }
-
- var4.x = var2;
- var4.y = var3;
- SwingUtilities.convertPointFromScreen(var4, var8);
- if (var5 < var16 - 1 && var15.elementAt(var5 + 1) == var13[var6] || var4.x >= 0 && var4.x < var10 && var4.y >= 0 && var4.y < var11) {
- if (var14 == null) {
- var14 = new MenuElement[var5 + 2];
-
- for(int var18 = 0; var18 <= var5; ++var18) {
- var14[var18] = (MenuElement)var15.elementAt(var18);
- }
- }
-
- var14[var5 + 1] = var13[var6];
- var13[var6].processMouseEvent(new MouseEvent(var8, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var4.x, var4.y, var1.getClickCount(), var1.isPopupTrigger()), var14, this);
- }
- }
- }
- }
- }
-
- }
- }
-
- public Component componentForPoint(Component var1, Point var2) {
- Point var5 = var2;
- SwingUtilities.convertPointToScreen(var2, var1);
- int var3 = var2.x;
- int var4 = var2.y;
- Vector var15 = (Vector)this.selection.clone();
- int var16 = var15.size();
-
- for(int var6 = var16 - 1; var6 >= 0; --var6) {
- MenuElement var13 = (MenuElement)var15.elementAt(var6);
- MenuElement[] var14 = var13.getSubElements();
- int var7 = 0;
-
- for(int var8 = var14.length; var7 < var8; ++var7) {
- if (var14[var7] != null) {
- Component var9 = var14[var7].getComponent();
- if (var9.isShowing()) {
- int var11;
- int var12;
- if (var9 instanceof JComponent) {
- var11 = ((JComponent)var9).getWidth();
- var12 = ((JComponent)var9).getHeight();
- } else {
- Rectangle var10 = var9.getBounds();
- var11 = var10.width;
- var12 = var10.height;
- }
-
- var5.x = var3;
- var5.y = var4;
- SwingUtilities.convertPointFromScreen(var5, var9);
- if (var5.x >= 0 && var5.x < var11 && var5.y >= 0 && var5.y < var12) {
- return var9;
- }
- }
- }
- }
- }
-
- return null;
- }
-
- public void processKeyEvent(KeyEvent var1) {
- Vector var2 = (Vector)this.selection.clone();
- int var3 = var2.size();
-
- for(int var4 = var3 - 1; var4 >= 0; --var4) {
- MenuElement var7 = (MenuElement)var2.elementAt(var4);
- MenuElement[] var8 = var7.getSubElements();
- MenuElement[] var9 = null;
- int var5 = 0;
-
- for(int var6 = var8.length; var5 < var6; ++var5) {
- if (var8[var5] != null) {
- Component var10 = var8[var5].getComponent();
- if (var10.isShowing()) {
- if (var9 == null) {
- var9 = new MenuElement[var4 + 2];
-
- for(int var11 = 0; var11 <= var4; ++var11) {
- var9[var11] = (MenuElement)var2.elementAt(var11);
- }
- }
-
- var9[var4 + 1] = var8[var5];
- var8[var5].processKeyEvent(var1, var9, this);
- if (((InputEvent)var1).isConsumed()) {
- return;
- }
- }
- }
- }
- }
-
- }
-
- public boolean isComponentPartOfCurrentMenu(Component var1) {
- if (this.selection.size() > 0) {
- MenuElement var2 = (MenuElement)this.selection.elementAt(0);
- return this.isComponentPartOfCurrentMenu(var2, var1);
- } else {
- return false;
- }
- }
-
- private boolean isComponentPartOfCurrentMenu(MenuElement var1, Component var2) {
- if (var1 == null) {
- return false;
- } else if (var1.getComponent() == var2) {
- return true;
- } else {
- MenuElement[] var3 = var1.getSubElements();
- int var4 = 0;
-
- for(int var5 = var3.length; var4 < var5; ++var4) {
- if (this.isComponentPartOfCurrentMenu(var3[var4], var2)) {
- return true;
- }
- }
-
- return false;
- }
- }
- }
-