home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / EventDispatchThread.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.7 KB  |  148 lines

  1. package java.awt;
  2.  
  3. import java.awt.event.InputEvent;
  4. import java.lang.reflect.Method;
  5. import java.security.AccessController;
  6. import java.util.EventObject;
  7. import sun.awt.DebugHelper;
  8. import sun.security.action.GetPropertyAction;
  9.  
  10. class EventDispatchThread extends Thread {
  11.    private static final DebugHelper dbg;
  12.    private EventQueue theQueue;
  13.    private boolean doDispatch = true;
  14.    private static final String handlerPropName = "sun.awt.exception.handler";
  15.    private static String handlerClassName;
  16.    private static String NO_HANDLER;
  17.    // $FF: synthetic field
  18.    static Class class$java$awt$EventDispatchThread;
  19.    // $FF: synthetic field
  20.    static Class class$java$lang$Throwable;
  21.  
  22.    EventDispatchThread(String var1, EventQueue var2) {
  23.       super(var1);
  24.       this.theQueue = var2;
  25.    }
  26.  
  27.    public void stopDispatching() {
  28.       this.doDispatch = false;
  29.       this.theQueue.postEventPrivate(new EmptyEvent(this));
  30.       if (Thread.currentThread() != this) {
  31.          try {
  32.             ((Thread)this).join();
  33.          } catch (InterruptedException var2) {
  34.          }
  35.       }
  36.  
  37.    }
  38.  
  39.    public void run() {
  40.       this.pumpEvents(new 1(this));
  41.    }
  42.  
  43.    void pumpEvents(Conditional var1) {
  44.       this.pumpEventsForHierarchy(var1, (Component)null);
  45.    }
  46.  
  47.    void pumpEventsForHierarchy(Conditional var1, Component var2) {
  48.       while(this.doDispatch && var1.evaluate()) {
  49.          if (((Thread)this).isInterrupted() || !this.pumpOneEventForHierarchy(var2)) {
  50.             this.doDispatch = false;
  51.          }
  52.       }
  53.  
  54.    }
  55.  
  56.    boolean pumpOneEventForHierarchy(Component var1) {
  57.       try {
  58.          AWTEvent var2 = this.theQueue.getNextEvent();
  59.          if (var1 != null) {
  60.             while(var2 instanceof InputEvent) {
  61.                Object var3 = (Component)((EventObject)var2).getSource();
  62.                if (var1 instanceof Container) {
  63.                   while(var3 != var1 && var3 != null) {
  64.                      var3 = ((Component)var3).getParent();
  65.                   }
  66.                }
  67.  
  68.                if (var3 == var1) {
  69.                   break;
  70.                }
  71.  
  72.                var2 = this.theQueue.getNextEvent();
  73.             }
  74.          }
  75.  
  76.          this.theQueue.dispatchEvent(var2);
  77.          return true;
  78.       } catch (ThreadDeath var5) {
  79.          return false;
  80.       } catch (InterruptedException var6) {
  81.          return false;
  82.       } catch (Throwable var7) {
  83.          if (!this.handleException(var7)) {
  84.             System.err.println("Exception occurred during event dispatching:");
  85.             var7.printStackTrace();
  86.          }
  87.  
  88.          return true;
  89.       }
  90.    }
  91.  
  92.    private boolean handleException(Throwable var1) {
  93.       try {
  94.          if (handlerClassName == NO_HANDLER) {
  95.             return false;
  96.          } else {
  97.             if (handlerClassName == null) {
  98.                handlerClassName = (String)AccessController.doPrivileged(new GetPropertyAction("sun.awt.exception.handler"));
  99.                if (handlerClassName == null) {
  100.                   handlerClassName = NO_HANDLER;
  101.                   return false;
  102.                }
  103.             }
  104.  
  105.             Method var2;
  106.             Object var3;
  107.             try {
  108.                ClassLoader var4 = Thread.currentThread().getContextClassLoader();
  109.                Class var5 = Class.forName(handlerClassName, true, var4);
  110.                var2 = var5.getMethod("handle", class$java$lang$Throwable == null ? (class$java$lang$Throwable = class$("java.lang.Throwable")) : class$java$lang$Throwable);
  111.                var3 = var5.newInstance();
  112.             } catch (Throwable var6) {
  113.                handlerClassName = NO_HANDLER;
  114.                return false;
  115.             }
  116.  
  117.             var2.invoke(var3, var1);
  118.             return true;
  119.          }
  120.       } catch (Throwable var7) {
  121.          return false;
  122.       }
  123.    }
  124.  
  125.    boolean isDispatching(EventQueue var1) {
  126.       return this.theQueue.equals(var1);
  127.    }
  128.  
  129.    EventQueue getEventQueue() {
  130.       return this.theQueue;
  131.    }
  132.  
  133.    // $FF: synthetic method
  134.    static Class class$(String var0) {
  135.       try {
  136.          return Class.forName(var0);
  137.       } catch (ClassNotFoundException var2) {
  138.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  139.       }
  140.    }
  141.  
  142.    static {
  143.       dbg = DebugHelper.create(class$java$awt$EventDispatchThread == null ? (class$java$awt$EventDispatchThread = class$("java.awt.EventDispatchThread")) : class$java$awt$EventDispatchThread);
  144.       handlerClassName = null;
  145.       NO_HANDLER = new String();
  146.    }
  147. }
  148.