home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.event.ComponentEvent;
- import java.awt.event.FocusEvent;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.io.Serializable;
-
- class LightweightDispatcher implements Serializable {
- private static final long serialVersionUID = 5184291520170872969L;
- private Container nativeContainer;
- private Component focus;
- private transient Component mouseEventTarget;
- private boolean dragging;
- private Cursor nativeCursor;
- private long eventMask;
- private static final long PROXY_EVENT_MASK = 60L;
- private static final long MOUSE_MASK = 48L;
-
- LightweightDispatcher(Container var1) {
- this.nativeContainer = var1;
- this.focus = null;
- this.mouseEventTarget = null;
- this.eventMask = 0L;
- }
-
- void enableEvents(long var1) {
- this.eventMask |= var1;
- }
-
- boolean setFocusRequest(Component var1) {
- boolean var2 = true;
- Window var3 = this.nativeContainer.getWindow();
- if (var3 != null && var1 != null) {
- Component var4 = var3.getFocusOwner();
- if (var4 == null) {
- this.focus = var1;
- } else if (var4 == this.nativeContainer) {
- this.focus = var1;
- Toolkit.getEventQueue().postEventAtHead(new FocusEvent(var1, 1004, false));
- var2 = false;
- } else if (var4 == var1) {
- this.focus = var1;
- var2 = false;
- } else if (var4 == this.focus) {
- Toolkit.getEventQueue().postEventAtHead(new FocusEvent(var1, 1004, false));
- if (this.focus != null) {
- Toolkit.getEventQueue().postEventAtHead(new FocusEvent(this.focus, 1005, false));
- }
-
- this.focus = var1;
- var2 = false;
- } else {
- this.focus = var1;
- }
- }
-
- return var2;
- }
-
- boolean dispatchEvent(AWTEvent var1) {
- if ((this.eventMask & 60L) != 0L) {
- if (var1 instanceof MouseEvent && (this.eventMask & 48L) != 0L) {
- MouseEvent var4 = (MouseEvent)var1;
- return this.processMouseEvent(var4);
- }
-
- if (var1 instanceof FocusEvent) {
- FocusEvent var3 = (FocusEvent)var1;
- return this.processFocusEvent(var3);
- }
-
- if (var1 instanceof KeyEvent) {
- KeyEvent var2 = (KeyEvent)var1;
- return this.processKeyEvent(var2);
- }
- }
-
- return false;
- }
-
- private boolean processKeyEvent(KeyEvent var1) {
- if (this.focus != null) {
- Component var2 = ((ComponentEvent)var1).getComponent();
- ((AWTEvent)var1).setSource(this.focus);
- this.focus.dispatchEvent(var1);
- ((AWTEvent)var1).setSource(var2);
- return ((InputEvent)var1).isConsumed();
- } else {
- return false;
- }
- }
-
- private boolean processFocusEvent(FocusEvent var1) {
- if (this.focus != null) {
- int var2 = ((AWTEvent)var1).getID();
- FocusEvent var3 = new FocusEvent(this.focus, var2, var1.isTemporary());
- this.focus.dispatchEvent(var3);
- if (var2 == 1005 && !var1.isTemporary()) {
- this.focus = null;
- }
-
- return true;
- } else {
- return false;
- }
- }
-
- private boolean processMouseEvent(MouseEvent var1) {
- int var2 = ((AWTEvent)var1).getID();
- if (this.mouseEventTarget != null) {
- switch (var2) {
- case 500:
- this.retargetMouseEvent(var2, var1);
- break;
- case 501:
- this.dragging = true;
- this.retargetMouseEvent(var2, var1);
- break;
- case 502:
- this.dragging = false;
- this.retargetMouseEvent(var2, var1);
- Component var3 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
- if (var3 != this.mouseEventTarget) {
- this.setMouseTarget(var3, var1);
- }
- break;
- case 503:
- Component var4 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
- if (var4 != this.mouseEventTarget) {
- this.setMouseTarget(var4, var1);
- }
-
- if (this.mouseEventTarget != null) {
- this.retargetMouseEvent(var2, var1);
- }
- break;
- case 504:
- this.retargetMouseEvent(var2, var1);
- break;
- case 505:
- if (this.dragging) {
- this.retargetMouseEvent(var2, var1);
- } else {
- this.setMouseTarget((Component)null, var1);
- }
- break;
- case 506:
- this.retargetMouseEvent(var2, var1);
- }
-
- ((InputEvent)var1).consume();
- } else {
- Component var5 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY());
- if (var5 != null) {
- if ((var2 == 506 || var2 == 502) && !this.dragging) {
- return ((InputEvent)var1).isConsumed();
- }
-
- this.setMouseTarget(var5, var1);
- if (var2 != 504) {
- this.retargetMouseEvent(var2, var1);
- }
-
- ((InputEvent)var1).consume();
- }
- }
-
- return ((InputEvent)var1).isConsumed();
- }
-
- void setMouseTarget(Component var1, MouseEvent var2) {
- if (this.mouseEventTarget != null) {
- this.retargetMouseEvent(505, var2);
- } else {
- this.nativeCursor = this.nativeContainer.getCursor();
- }
-
- this.mouseEventTarget = var1;
- if (this.mouseEventTarget != null) {
- this.retargetMouseEvent(504, var2);
- } else {
- this.nativeContainer.setCursor(this.nativeCursor);
- }
- }
-
- void retargetMouseEvent(int var1, MouseEvent var2) {
- int var3 = var2.getX();
- int var4 = var2.getY();
-
- Object var5;
- for(var5 = this.mouseEventTarget; var5 != null && var5 != this.nativeContainer; var5 = ((Component)var5).getParent()) {
- var3 -= ((Component)var5).x;
- var4 -= ((Component)var5).y;
- }
-
- if (var5 != null) {
- MouseEvent var6 = new MouseEvent(this.mouseEventTarget, var1, ((InputEvent)var2).getWhen(), ((InputEvent)var2).getModifiers(), var3, var4, var2.getClickCount(), var2.isPopupTrigger());
- this.mouseEventTarget.dispatchEvent(var6);
- if (this.mouseEventTarget != null) {
- Cursor var7 = this.mouseEventTarget.getCursor();
- if (this.nativeContainer.getCursor() != var7) {
- this.nativeContainer.setCursor(var7);
- }
- }
- }
-
- }
- }
-