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;
- import java.util.EventObject;
-
- class LightweightDispatcher implements Serializable, EventQueueListener {
- private static final long serialVersionUID = 5184291520170872969L;
- private static final int LWD_MOUSE_DRAGGED_OVER = 2000;
- private Container nativeContainer;
- private Component focus;
- private transient Component mouseEventTarget;
- private transient Component targetLastEntered;
- private transient boolean isMouseInNativeContainer = false;
- private boolean dragging;
- private Cursor nativeCursor;
- private long eventMask;
- private static final long PROXY_EVENT_MASK = 60L;
- private static final long MOUSE_MASK = 48L;
- // $FF: synthetic field
- static Class class$java$awt$event$MouseEvent;
-
- 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;
- var1.dispatchEvent(new FocusEvent(var1, 1004, false));
- var2 = false;
- } else if (var4 == var1) {
- this.focus = var1;
- var2 = false;
- } else if (var4 == this.focus) {
- if (this.focus != null) {
- this.focus.dispatchEvent(new FocusEvent(this.focus, 1005, false));
- }
-
- this.focus = var1;
- var1.dispatchEvent(new FocusEvent(var1, 1004, false));
- 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();
- Component var3 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY(), true);
- this.trackMouseEnterExit(var3, var1);
- if (this.mouseEventTarget == null && (var2 == 503 || var2 == 501)) {
- Component var4 = var3 != this.nativeContainer ? var3 : null;
- this.setMouseTarget(var4, var1);
- }
-
- if (this.mouseEventTarget != null) {
- switch (var2) {
- case 500:
- this.retargetMouseEvent(this.mouseEventTarget, var2, var1);
- break;
- case 501:
- this.dragging = true;
- this.retargetMouseEvent(this.mouseEventTarget, var2, var1);
- break;
- case 502:
- this.dragging = false;
- this.retargetMouseEvent(this.mouseEventTarget, var2, var1);
- Component var6 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY(), false);
- this.setMouseTarget(var6, var1);
- break;
- case 503:
- Component var5 = this.nativeContainer.getMouseEventTarget(var1.getX(), var1.getY(), false);
- this.setMouseTarget(var5, var1);
- this.retargetMouseEvent(this.mouseEventTarget, var2, var1);
- case 504:
- default:
- break;
- case 505:
- if (!this.dragging) {
- this.setMouseTarget((Component)null, var1);
- }
- break;
- case 506:
- if (this.dragging) {
- this.retargetMouseEvent(this.mouseEventTarget, var2, var1);
- }
- }
-
- ((InputEvent)var1).consume();
- }
-
- return ((InputEvent)var1).isConsumed();
- }
-
- private void setMouseTarget(Component var1, MouseEvent var2) {
- if (var1 != this.mouseEventTarget) {
- this.mouseEventTarget = var1;
- }
-
- }
-
- private void trackMouseEnterExit(Component var1, MouseEvent var2) {
- Component var3 = null;
- int var4 = ((AWTEvent)var2).getID();
- if (var4 != 505 && var4 != 506 && var4 != 2000 && !this.isMouseInNativeContainer) {
- this.isMouseInNativeContainer = true;
- this.startListeningForOtherDrags();
- } else if (var4 == 505) {
- this.isMouseInNativeContainer = false;
- this.stopListeningForOtherDrags();
- }
-
- if (this.isMouseInNativeContainer) {
- var3 = var1;
- }
-
- if (this.targetLastEntered != var3) {
- this.retargetMouseEvent(this.targetLastEntered, 505, var2);
- if (var4 == 505) {
- ((InputEvent)var2).consume();
- }
-
- this.retargetMouseEvent(var3, 504, var2);
- if (var4 == 504) {
- ((InputEvent)var2).consume();
- }
-
- this.targetLastEntered = var3;
- }
- }
-
- private void startListeningForOtherDrags() {
- Toolkit.getEventQueue().addEventQueueListener(this);
- }
-
- private void stopListeningForOtherDrags() {
- Toolkit.getEventQueue().removeEventQueueListener(this);
- Toolkit.getEventQueue().removeEvents(class$java$awt$event$MouseEvent != null ? class$java$awt$event$MouseEvent : (class$java$awt$event$MouseEvent = class$("java.awt.event.MouseEvent")), 2000);
- }
-
- public void eventPosted(AWTEvent var1) {
- boolean var2 = var1 instanceof MouseEvent && var1.id == 506 && ((EventObject)var1).getSource() != this.nativeContainer;
- if (var2) {
- Toolkit.getEventQueue().postEvent(new TrackEnterExitEvent(this, this.nativeContainer, (MouseEvent)var1));
- }
- }
-
- void retargetMouseEvent(Component var1, int var2, MouseEvent var3) {
- if (var1 != null) {
- int var4 = var3.getX();
- int var5 = var3.getY();
-
- Object var6;
- for(var6 = var1; var6 != null && var6 != this.nativeContainer; var6 = ((Component)var6).getParent()) {
- var4 -= ((Component)var6).x;
- var5 -= ((Component)var6).y;
- }
-
- if (var6 != null) {
- MouseEvent var7 = new MouseEvent(var1, var2, ((InputEvent)var3).getWhen(), ((InputEvent)var3).getModifiers(), var4, var5, var3.getClickCount(), var3.isPopupTrigger());
- if (var1 == this.nativeContainer) {
- ((Container)var1).dispatchEventToSelf(var7);
- } else {
- var1.dispatchEvent(var7);
- }
-
- Cursor var8 = var1.getCursor();
- if (this.nativeContainer.getCursor() != var8) {
- this.nativeContainer.setCursor(var8);
- }
- }
-
- }
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- // $FF: synthetic method
- static Container access$0(LightweightDispatcher var0) {
- return var0.nativeContainer;
- }
-
- // $FF: synthetic method
- static int access$1() {
- return 2000;
- }
-
- // $FF: synthetic method
- static void access$2(LightweightDispatcher var0, Component var1, MouseEvent var2) {
- var0.trackMouseEnterExit(var1, var2);
- }
- }
-