home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 4 / Macwelt DVD 4.cdr / Entwickler / Mac-OS / oxygen / oxygen.app / Contents / Resources / Java / jh.jar / javax / help / CSH$DisplayHelpAfterTracking.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-24  |  5.8 KB  |  256 lines

  1. package javax.help;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Cursor;
  7. import java.awt.Frame;
  8. import java.awt.MenuComponent;
  9. import java.awt.MenuContainer;
  10. import java.awt.MenuItem;
  11. import java.awt.Window;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import java.util.Enumeration;
  15. import java.util.Hashtable;
  16. import java.util.Stack;
  17. import java.util.Vector;
  18. import javax.help.Map.ID;
  19. import javax.swing.JPopupMenu;
  20. import javax.swing.MenuElement;
  21. import javax.swing.SwingUtilities;
  22. import javax.swing.UIManager;
  23.  
  24. public class CSH$DisplayHelpAfterTracking implements ActionListener {
  25.    // $FF: renamed from: hb javax.help.HelpBroker
  26.    private HelpBroker field_0;
  27.    private Hashtable cursors;
  28.    private Stack cursorStack;
  29.  
  30.    public CSH$DisplayHelpAfterTracking(HelpBroker var1) {
  31.       if (var1 == null) {
  32.          throw new NullPointerException("hb");
  33.       } else {
  34.          this.field_0 = var1;
  35.       }
  36.    }
  37.  
  38.    public void actionPerformed(ActionEvent var1) {
  39.       SwingHelpUtilities.installUIDefaults();
  40.       Cursor var2 = (Cursor)UIManager.get("HelpOnItemCursor");
  41.       if (var2 != null) {
  42.          Vector var4 = null;
  43.          this.cursors = null;
  44.          if (var2 != null) {
  45.             this.cursors = new Hashtable();
  46.             var4 = this.getTopContainers(var1.getSource());
  47.             Enumeration var5 = var4.elements();
  48.  
  49.             while(var5.hasMoreElements()) {
  50.                this.setCursor((Container)var5.nextElement(), var2);
  51.             }
  52.          }
  53.  
  54.          Object var12 = CSH.trackCSEvents();
  55.          Component var6 = (Component)var1.getSource();
  56.  
  57.          try {
  58.             Window var7 = (Window)SwingUtilities.getAncestorOfClass(Class.forName("java.awt.Window"), var6);
  59.             if (this.field_0 instanceof DefaultHelpBroker) {
  60.                ((DefaultHelpBroker)this.field_0).setActivationWindow(var7);
  61.             }
  62.          } catch (ClassNotFoundException var11) {
  63.          }
  64.  
  65.          String var13 = null;
  66.          HelpSet var8 = null;
  67.          if (var12 != null && var12 instanceof Component) {
  68.             var13 = CSH.getHelpIDString((Component)var12);
  69.             var8 = CSH.getHelpSet((Component)var12);
  70.          } else if (var12 != null && var12 instanceof MenuItem) {
  71.             var13 = CSH.getHelpIDString((MenuItem)var12);
  72.             var8 = CSH.getHelpSet((MenuItem)var12);
  73.          }
  74.  
  75.          if (var8 == null) {
  76.             var8 = this.field_0.getHelpSet();
  77.          }
  78.  
  79.          try {
  80.             Map.ID var9 = ID.create(var13, var8);
  81.             if (var9 == null) {
  82.                var9 = var8.getHomeID();
  83.             }
  84.  
  85.             this.field_0.setCurrentID(var9);
  86.             this.field_0.setDisplayed(true);
  87.          } catch (Exception var10) {
  88.          }
  89.  
  90.          if (var4 != null) {
  91.             Enumeration var14 = var4.elements();
  92.  
  93.             while(var14.hasMoreElements()) {
  94.                this.resetAndRestoreCursors((Container)var14.nextElement());
  95.             }
  96.          }
  97.  
  98.          this.cursors = null;
  99.       }
  100.    }
  101.  
  102.    private Vector getTopContainers(Object var1) {
  103.       Vector var2 = new Vector();
  104.       Component var3 = null;
  105.       if (var1 instanceof Component) {
  106.          var3 = this.getTopComponentForComponent((Component)var1);
  107.       } else if (var1 instanceof MenuItem) {
  108.          var3 = this.getTopComponentForMenuItem((MenuItem)var1);
  109.       }
  110.  
  111.       if (var3 instanceof Applet) {
  112.          Enumeration var4 = ((Applet)var3).getAppletContext().getApplets();
  113.  
  114.          while(var4.hasMoreElements()) {
  115.             var2.add(var4.nextElement());
  116.          }
  117.       }
  118.  
  119.       Frame[] var8 = Frame.getFrames();
  120.  
  121.       for(int var5 = 0; var5 < var8.length; ++var5) {
  122.          Window[] var6 = var8[var5].getOwnedWindows();
  123.  
  124.          for(int var7 = 0; var7 < var6.length; ++var7) {
  125.             var2.add(var6[var7]);
  126.          }
  127.  
  128.          if (!var2.contains(var8[var5])) {
  129.             var2.add(var8[var5]);
  130.          }
  131.       }
  132.  
  133.       return var2;
  134.    }
  135.  
  136.    private Component getTopComponentForComponent(Component var1) {
  137.       for(Object var2 = var1; var2 != null; var2 = ((Component)var2).getParent()) {
  138.          var1 = var2;
  139.          if (var2 instanceof Window || var2 instanceof Applet) {
  140.             break;
  141.          }
  142.  
  143.          if (var2 instanceof MenuElement) {
  144.             if (var2 instanceof JPopupMenu) {
  145.                var2 = ((JPopupMenu)var2).getInvoker();
  146.             } else {
  147.                var2 = ((MenuElement)var2).getComponent();
  148.             }
  149.          }
  150.       }
  151.  
  152.       return (Component)var1;
  153.    }
  154.  
  155.    private Component getTopComponentForMenuItem(MenuItem var1) {
  156.       MenuContainer var2 = var1.getParent();
  157.  
  158.       MenuContainer var3;
  159.       for(var3 = var2; var3 != null && !(var3 instanceof Component); var3 = ((MenuComponent)var3).getParent()) {
  160.       }
  161.  
  162.       if (var3 == null) {
  163.          return null;
  164.       } else {
  165.          Component var4 = this.getTopComponentForComponent((Component)var3);
  166.          return var4;
  167.       }
  168.    }
  169.  
  170.    private void setCursor(Component var1, Cursor var2) {
  171.       CSH.access$100("setCursor");
  172.       if (var1 != null) {
  173.          this.cursorStack = new Stack();
  174.          this.setAndStoreCursors(var1, var2);
  175.          this.cursorStack = null;
  176.       }
  177.    }
  178.  
  179.    private void setAndStoreCursors(Component var1, Cursor var2) {
  180.       boolean var3 = false;
  181.       Cursor var4 = var1.getCursor();
  182.       if (this.cursorStack.empty()) {
  183.          this.cursorStack.push(var4);
  184.          this.cursors.put(var1, var4);
  185.          var3 = true;
  186.          CSH.access$100("store cursor " + var4 + " on " + var1);
  187.       } else if (var4 != (Cursor)this.cursorStack.peek()) {
  188.          this.cursorStack.push(var4);
  189.          this.cursors.put(var1, var4);
  190.          var3 = true;
  191.          CSH.access$100("store cursor " + var4 + " on " + var1);
  192.       }
  193.  
  194.       if (var1 instanceof Container) {
  195.          Container var5 = (Container)var1;
  196.          int var6 = var5.getComponentCount();
  197.          Component[] var7 = var5.getComponents();
  198.  
  199.          for(int var8 = 0; var8 < var6; ++var8) {
  200.             Component var9 = var7[var8];
  201.             if (var1 != null) {
  202.                this.setAndStoreCursors(var9, var2);
  203.             }
  204.          }
  205.       }
  206.  
  207.       var1.setCursor(var2);
  208.       CSH.access$100("set cursor on " + var1);
  209.       if (var3) {
  210.          this.cursorStack.pop();
  211.       }
  212.  
  213.    }
  214.  
  215.    private void resetAndRestoreCursors(Component var1) {
  216.       CSH.access$100("resetAndRestoreCursors");
  217.       if (var1 != null) {
  218.          this.cursorStack = new Stack();
  219.          this.restoreCursors(var1);
  220.          this.cursorStack = null;
  221.       }
  222.    }
  223.  
  224.    private void restoreCursors(Component var1) {
  225.       boolean var2 = false;
  226.       Cursor var3 = (Cursor)this.cursors.get(var1);
  227.       if (var3 != null) {
  228.          this.cursorStack.push(var3);
  229.          var1.setCursor(var3);
  230.          CSH.access$100("restored cursor " + var3 + " on " + var1);
  231.          var2 = true;
  232.       } else if (!this.cursorStack.empty()) {
  233.          var1.setCursor((Cursor)this.cursorStack.peek());
  234.          CSH.access$100("restored cursor " + (Cursor)this.cursorStack.peek() + " on " + var1);
  235.       }
  236.  
  237.       if (var1 instanceof Container) {
  238.          Container var4 = (Container)var1;
  239.          int var5 = var4.getComponentCount();
  240.          Component[] var6 = var4.getComponents();
  241.  
  242.          for(int var7 = 0; var7 < var5; ++var7) {
  243.             Component var8 = var6[var7];
  244.             if (var1 != null) {
  245.                this.restoreCursors(var8);
  246.             }
  247.          }
  248.       }
  249.  
  250.       if (var2) {
  251.          this.cursorStack.pop();
  252.       }
  253.  
  254.    }
  255. }
  256.