home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / java / awt / LightweightDispatcher.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  3.7 KB  |  202 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.             this.focus = var1;
  38.             var1.dispatchEvent(new FocusEvent(var1, 1004, false));
  39.             var2 = false;
  40.          } else if (var4 == var1) {
  41.             this.focus = var1;
  42.             var2 = false;
  43.          } else if (var4 == this.focus && this.focus != null) {
  44.             if (this.focus != null) {
  45.                this.focus.dispatchEvent(new FocusEvent(this.focus, 1005, false));
  46.             }
  47.  
  48.             this.focus = var1;
  49.             var1.dispatchEvent(new FocusEvent(var1, 1004, false));
  50.             var2 = false;
  51.          } else {
  52.             this.focus = var1;
  53.          }
  54.       }
  55.  
  56.       return var2;
  57.    }
  58.  
  59.    boolean dispatchEvent(AWTEvent var1) {
  60.       if ((this.eventMask & 60L) != 0L) {
  61.          if (var1 instanceof MouseEvent && (this.eventMask & 48L) != 0L) {
  62.             MouseEvent var4 = (MouseEvent)var1;
  63.             return this.processMouseEvent(var4);
  64.          }
  65.  
  66.          if (var1 instanceof FocusEvent) {
  67.             FocusEvent var3 = (FocusEvent)var1;
  68.             return this.processFocusEvent(var3);
  69.          }
  70.  
  71.          if (var1 instanceof KeyEvent) {
  72.             KeyEvent var2 = (KeyEvent)var1;
  73.             return this.processKeyEvent(var2);
  74.          }
  75.       }
  76.  
  77.       return false;
  78.    }
  79.  
  80.    private boolean processKeyEvent(KeyEvent var1) {
  81.       if (this.focus != null) {
  82.          KeyEvent var2 = new KeyEvent(this.focus, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var1.getKeyCode(), var1.getKeyChar());
  83.          this.focus.dispatchEvent(var2);
  84.          return true;
  85.       } else {
  86.          return false;
  87.       }
  88.    }
  89.  
  90.    private boolean processFocusEvent(FocusEvent var1) {
  91.       if (this.focus != null) {
  92.          int var2 = ((AWTEvent)var1).getID();
  93.          FocusEvent var3 = new FocusEvent(this.focus, var2, var1.isTemporary());
  94.          this.focus.dispatchEvent(var3);
  95.          if (var2 == 1005 && !var1.isTemporary()) {
  96.             this.focus = null;
  97.          }
  98.  
  99.          return true;
  100.       } else {
  101.          return false;
  102.       }
  103.    }
  104.  
  105.    private boolean processMouseEvent(MouseEvent var1) {
  106.       int var2 = ((AWTEvent)var1).getID();
  107.       if (this.mouseEventTarget != null) {
  108.          switch (var2) {
  109.             case 500:
  110.                this.retargetMouseEvent(var2, var1);
  111.                break;
  112.             case 501:
  113.                this.dragging = true;
  114.                this.retargetMouseEvent(var2, var1);
  115.                break;
  116.             case 502:
  117.                this.dragging = false;
  118.                this.retargetMouseEvent(var2, var1);
  119.                Component var3 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
  120.                if (var3 != this.mouseEventTarget) {
  121.                   this.setMouseTarget(var3, var1);
  122.                }
  123.                break;
  124.             case 503:
  125.                Component var4 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
  126.                if (var4 != this.mouseEventTarget) {
  127.                   this.setMouseTarget(var4, var1);
  128.                }
  129.  
  130.                if (this.mouseEventTarget != null) {
  131.                   this.retargetMouseEvent(var2, var1);
  132.                }
  133.                break;
  134.             case 504:
  135.                this.retargetMouseEvent(var2, var1);
  136.                break;
  137.             case 505:
  138.                if (this.dragging) {
  139.                   this.retargetMouseEvent(var2, var1);
  140.                } else {
  141.                   this.setMouseTarget((Component)null, var1);
  142.                }
  143.                break;
  144.             case 506:
  145.                this.retargetMouseEvent(var2, var1);
  146.          }
  147.  
  148.          ((InputEvent)var1).consume();
  149.       } else {
  150.          Component var5 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
  151.          if (var5 != null) {
  152.             this.setMouseTarget(var5, var1);
  153.             if (var2 != 504) {
  154.                this.retargetMouseEvent(var2, var1);
  155.             }
  156.  
  157.             ((InputEvent)var1).consume();
  158.          }
  159.       }
  160.  
  161.       return ((InputEvent)var1).isConsumed();
  162.    }
  163.  
  164.    void setMouseTarget(Component var1, MouseEvent var2) {
  165.       if (this.mouseEventTarget != null) {
  166.          this.retargetMouseEvent(505, var2);
  167.       } else {
  168.          this.nativeCursor = this.nativeContainer.getCursor();
  169.       }
  170.  
  171.       this.mouseEventTarget = var1;
  172.       if (this.mouseEventTarget != null) {
  173.          this.retargetMouseEvent(504, var2);
  174.       } else {
  175.          this.nativeContainer.setCursor(this.nativeCursor);
  176.       }
  177.    }
  178.  
  179.    void retargetMouseEvent(int var1, MouseEvent var2) {
  180.       int var3 = var2.getX();
  181.       int var4 = var2.getY();
  182.  
  183.       Object var5;
  184.       for(var5 = this.mouseEventTarget; var5 != null && var5 != this.nativeContainer; var5 = ((Component)var5).getParent()) {
  185.          var3 -= ((Component)var5).x;
  186.          var4 -= ((Component)var5).y;
  187.       }
  188.  
  189.       if (var5 != null) {
  190.          MouseEvent var6 = new MouseEvent(this.mouseEventTarget, var1, ((InputEvent)var2).getWhen(), ((InputEvent)var2).getModifiers(), var3, var4, var2.getClickCount(), var2.isPopupTrigger());
  191.          this.mouseEventTarget.dispatchEvent(var6);
  192.          if (this.mouseEventTarget != null) {
  193.             Cursor var7 = this.mouseEventTarget.getCursor();
  194.             if (this.nativeContainer.getCursor() != var7) {
  195.                this.nativeContainer.setCursor(var7);
  196.             }
  197.          }
  198.       }
  199.  
  200.    }
  201. }
  202.