home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / awt / LightweightDispatcher.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.9 KB  |  211 lines

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