home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / java / awt / LightweightDispatcher.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  3.9 KB  |  199 lines

  1. package java.awt;
  2.  
  3. import java.awt.event.FocusEvent;
  4. import java.awt.event.InputEvent;
  5. import java.awt.event.KeyEvent;
  6. import java.awt.event.MouseEvent;
  7. import java.io.Serializable;
  8.  
  9. class LightweightDispatcher implements Serializable {
  10.    private static final long serialVersionUID = 5184291520170872969L;
  11.    private Container nativeContainer;
  12.    private Component focus;
  13.    private transient Component mouseEventTarget;
  14.    private boolean dragging;
  15.    private Cursor nativeCursor;
  16.    private long eventMask;
  17.    private static final long PROXY_EVENT_MASK = 60L;
  18.    private static final long MOUSE_MASK = 48L;
  19.  
  20.    LightweightDispatcher(Container var1) {
  21.       this.nativeContainer = var1;
  22.       this.focus = null;
  23.       this.mouseEventTarget = null;
  24.       this.eventMask = 0L;
  25.    }
  26.  
  27.    void enableEvents(long var1) {
  28.       this.eventMask |= var1;
  29.    }
  30.  
  31.    boolean setFocusRequest(Component var1) {
  32.       boolean var2 = true;
  33.       Window var3 = this.nativeContainer.getWindow();
  34.       if (var3 != null && var1 != null) {
  35.          Component var4 = var3.getFocusOwner();
  36.          if (var4 == this.nativeContainer) {
  37.             var1.dispatchEvent(new FocusEvent(var1, 1004, false));
  38.             var2 = false;
  39.          } else if (var4 == var1) {
  40.             var2 = false;
  41.          } else if (var4 == this.focus) {
  42.             if (this.focus != null) {
  43.                this.focus.dispatchEvent(new FocusEvent(this.focus, 1005, false));
  44.             }
  45.  
  46.             var1.dispatchEvent(new FocusEvent(var1, 1004, false));
  47.             var2 = false;
  48.          }
  49.       }
  50.  
  51.       this.focus = var1;
  52.       return var2;
  53.    }
  54.  
  55.    boolean dispatchEvent(AWTEvent var1) {
  56.       if ((this.eventMask & 60L) != 0L) {
  57.          if (var1 instanceof MouseEvent && (this.eventMask & 48L) != 0L) {
  58.             MouseEvent var4 = (MouseEvent)var1;
  59.             return this.processMouseEvent(var4);
  60.          }
  61.  
  62.          if (var1 instanceof FocusEvent) {
  63.             FocusEvent var3 = (FocusEvent)var1;
  64.             return this.processFocusEvent(var3);
  65.          }
  66.  
  67.          if (var1 instanceof KeyEvent) {
  68.             KeyEvent var2 = (KeyEvent)var1;
  69.             return this.processKeyEvent(var2);
  70.          }
  71.       }
  72.  
  73.       return false;
  74.    }
  75.  
  76.    private boolean processKeyEvent(KeyEvent var1) {
  77.       if (this.focus != null) {
  78.          KeyEvent var2 = new KeyEvent(this.focus, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var1.getKeyCode(), var1.getKeyChar());
  79.          this.focus.dispatchEvent(var2);
  80.          return true;
  81.       } else {
  82.          return false;
  83.       }
  84.    }
  85.  
  86.    private boolean processFocusEvent(FocusEvent var1) {
  87.       if (this.focus != null) {
  88.          int var2 = ((AWTEvent)var1).getID();
  89.          FocusEvent var3 = new FocusEvent(this.focus, var2, var1.isTemporary());
  90.          this.focus.dispatchEvent(var3);
  91.          if (var2 == 1005 && !var1.isTemporary()) {
  92.             this.focus = null;
  93.          }
  94.  
  95.          return true;
  96.       } else {
  97.          return false;
  98.       }
  99.    }
  100.  
  101.    private boolean processMouseEvent(MouseEvent var1) {
  102.       int var2 = ((AWTEvent)var1).getID();
  103.       if (this.mouseEventTarget != null) {
  104.          switch (var2) {
  105.             case 500:
  106.                this.retargetMouseEvent(var2, var1);
  107.                break;
  108.             case 501:
  109.                this.dragging = true;
  110.                this.retargetMouseEvent(var2, var1);
  111.                break;
  112.             case 502:
  113.                this.dragging = false;
  114.                this.retargetMouseEvent(var2, var1);
  115.                Component var3 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
  116.                if (var3 != this.mouseEventTarget) {
  117.                   this.setMouseTarget(var3, var1);
  118.                }
  119.                break;
  120.             case 503:
  121.                Component var4 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
  122.                if (var4 != this.mouseEventTarget) {
  123.                   this.setMouseTarget(var4, var1);
  124.                }
  125.  
  126.                if (this.mouseEventTarget != null) {
  127.                   this.retargetMouseEvent(var2, var1);
  128.                }
  129.                break;
  130.             case 504:
  131.                this.retargetMouseEvent(var2, var1);
  132.                break;
  133.             case 505:
  134.                if (this.dragging) {
  135.                   this.retargetMouseEvent(var2, var1);
  136.                } else {
  137.                   this.setMouseTarget((Component)null, var1);
  138.                }
  139.                break;
  140.             case 506:
  141.                this.retargetMouseEvent(var2, var1);
  142.          }
  143.  
  144.          ((InputEvent)var1).consume();
  145.       } else {
  146.          Component var5 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
  147.          if (var5 != null) {
  148.             this.setMouseTarget(var5, var1);
  149.             if (var2 != 504) {
  150.                this.retargetMouseEvent(var2, var1);
  151.             }
  152.  
  153.             ((InputEvent)var1).consume();
  154.          }
  155.       }
  156.  
  157.       return ((InputEvent)var1).isConsumed();
  158.    }
  159.  
  160.    void setMouseTarget(Component var1, MouseEvent var2) {
  161.       if (this.mouseEventTarget != null) {
  162.          this.retargetMouseEvent(505, var2);
  163.       } else {
  164.          this.nativeCursor = this.nativeContainer.getCursor();
  165.       }
  166.  
  167.       this.mouseEventTarget = var1;
  168.       if (this.mouseEventTarget != null) {
  169.          this.retargetMouseEvent(504, var2);
  170.       } else {
  171.          this.nativeContainer.setCursor(this.nativeCursor);
  172.       }
  173.    }
  174.  
  175.    void retargetMouseEvent(int var1, MouseEvent var2) {
  176.       Point var3 = getTranslatedPoint(var2.getX(), var2.getY(), this.nativeContainer, this.mouseEventTarget);
  177.       if (var3 != null) {
  178.          MouseEvent var4 = new MouseEvent(this.mouseEventTarget, var1, ((InputEvent)var2).getWhen(), ((InputEvent)var2).getModifiers(), var3.x, var3.y, var2.getClickCount(), var2.isPopupTrigger());
  179.          this.mouseEventTarget.dispatchEvent(var4);
  180.          Cursor var5 = this.mouseEventTarget.getCursor();
  181.          if (this.nativeContainer.getCursor() != var5) {
  182.             this.nativeContainer.setCursor(var5);
  183.          }
  184.       }
  185.  
  186.    }
  187.  
  188.    static Point getTranslatedPoint(int var0, int var1, Component var2, Component var3) {
  189.       Object var4;
  190.       for(var4 = var3; var4 != null && var4 != var2; var4 = ((Component)var4).getParent()) {
  191.          Rectangle var5 = ((Component)var4).getBounds();
  192.          var0 -= var5.x;
  193.          var1 -= var5.y;
  194.       }
  195.  
  196.       return var4 != null ? new Point(var0, var1) : null;
  197.    }
  198. }
  199.