// --------------------------------actionDisconnect--------------------------- private void actionDisconnect() { try { oConn.disconnect(); tConn.join(2000); tMain.join(2000); } catch (Exception e) { } }
public void run() { try { if (myPreviousThread != null) myPreviousThread.join(); Thread.sleep(delay); log("> run MouseMoveThread " + x + ", " + y); while (!hasFocus()) { Thread.sleep(1000); } int x1 = lastMouseX; int x2 = x; int y1 = lastMouseY; int y2 = y; // shrink range by 1 px on both ends // manually move this 1px to trip DND code if (x1 != x2) { int dx = x - lastMouseX; if (dx > 0) { x1 += 1; x2 -= 1; } else { x1 -= 1; x2 += 1; } } if (y1 != y2) { int dy = y - lastMouseY; if (dy > 0) { y1 += 1; y2 -= 1; } else { y1 -= 1; y2 += 1; } } robot.setAutoDelay(Math.max(duration / 100, 1)); robot.mouseMove(x1, y1); int d = 100; for (int t = 0; t <= d; t++) { x1 = (int) easeInOutQuad( (double) t, (double) lastMouseX, (double) x2 - lastMouseX, (double) d); y1 = (int) easeInOutQuad( (double) t, (double) lastMouseY, (double) y2 - lastMouseY, (double) d); robot.mouseMove(x1, y1); } robot.mouseMove(x, y); lastMouseX = x; lastMouseY = y; robot.waitForIdle(); robot.setAutoDelay(1); } catch (Exception e) { log("Bad parameters passed to mouseMove"); e.printStackTrace(); } log("< run MouseMoveThread"); }
public synchronized void stop() { running = false; try { thread.join(); } catch (InterruptedException e) { thread.interrupt(); } }
public void run() { try { if (myPreviousThread != null) myPreviousThread.join(); Thread.sleep(delay); log("> run MousePressThread"); while (!hasFocus()) { Thread.sleep(1000); } robot.mousePress(mask); robot.waitForIdle(); } catch (Exception e) { log("Bad parameters passed to mousePress"); e.printStackTrace(); } log("< run MousePressThread"); }
/** Iterate the physics, call repaint(). */ public void run() { while (true) { repaint(); try { canvas.changeSize(getHeight(), getWidth()); simthread.sleep(10); canvasthread.run(); canvasthread.join(); // this.iters++; } catch (Exception ie) { System.out.println(ie.getMessage() + "!!!"); } // System.out.println(iters + "!!"); } }
public void run() { try { if (myPreviousThread != null) myPreviousThread.join(); // in different order so async works while (!hasFocus()) { Thread.sleep(1000); } Thread.sleep(delay); log("> run KeyPressThread"); _typeKey(charCode, keyCode, alt, ctrl, shift); } catch (Exception e) { log("Bad parameters passed to _typeKey"); e.printStackTrace(); } log("< run KeyPressThread"); }
public void testRequiredLayoutTriggeredWhilePerformingLayoutStillGetsRegistered() throws Exception { for (int i = 0; i < 100; i++) panel.add(new PropPanel(new MockProp())); panel.markAsNeedingLayout(); Thread thread = new Thread( new Runnable() { public void run() { panel.doLayout(); } }); thread.start(); while (panel.getChildren().get(0).needsLayout()) Thread.yield(); panel.markAsNeedingLayout(); thread.join(); assertEquals(true, panel.needsLayout()); }
public void run() { try { if (myPreviousThread != null) myPreviousThread.join(); Thread.sleep(delay); log("> run KeyDownThread"); while (!hasFocus()) { Thread.sleep(1000); } int vkCode = getVKCode(charCode, keyCode); if (charCode >= 32) { // if it is printable, then it lives in our hashmap KeyEvent event = (KeyEvent) charMap.get(new Integer(charCode)); // see if we need to press shift to generate this // character if (event.isShiftDown()) { robot.keyPress(KeyEvent.VK_SHIFT); shift = true; } if (event.isAltGraphDown()) { robot.keyPress(KeyEvent.VK_ALT_GRAPH); altgraph = true; } } else { if (vkCode == KeyEvent.VK_ALT) { alt = true; } else if (vkCode == KeyEvent.VK_CONTROL) { ctrl = true; } else if (vkCode == KeyEvent.VK_SHIFT) { shift = true; } else if (vkCode == KeyEvent.VK_ALT_GRAPH) { altgraph = true; } } if (!isUnsafe(vkCode)) { robot.keyPress(vkCode); } } catch (Exception e) { log("Bad parameters passed to downKey"); e.printStackTrace(); } log("< run KeyDownThread"); }
public void run() { try { if (myPreviousThread != null) myPreviousThread.join(); Thread.sleep(delay); log("> run MouseWheelThread " + amount); while (!hasFocus()) { Thread.sleep(1000); } int dir = 1; if (System.getProperty("os.name").toUpperCase().indexOf("MAC") != -1) { // yay for Apple dir = -1; } robot.setAutoDelay(Math.max(duration / Math.abs(amount), 1)); for (int i = 0; i < Math.abs(amount); i++) { robot.mouseWheel(amount > 0 ? dir : -dir); } robot.setAutoDelay(1); } catch (Exception e) { log("Bad parameters passed to mouseWheel"); e.printStackTrace(); } log("< run MouseWheelThread "); }
public void run() { try { Thread drawthread = new HackThread(drawfun, "Render thread"); drawthread.start(); synchronized (drawfun) { while (state == null) drawfun.wait(); } try { long now, then; long frames[] = new long[128]; int framep = 0, waited[] = new int[128]; while (true) { int fwaited = 0; Debug.cycle(); UI ui = this.ui; then = System.currentTimeMillis(); CPUProfile.Frame curf = null; if (Config.profile) curf = uprof.new Frame(); synchronized (ui) { if (ui.sess != null) ui.sess.glob.ctick(); dispatch(); ui.tick(); if ((ui.root.sz.x != w) || (ui.root.sz.y != h)) ui.root.resize(new Coord(w, h)); } if (curf != null) curf.tick("dsp"); BGL buf = new BGL(); GLState.Applier state = this.state; rootdraw(state, ui, buf); if (curf != null) curf.tick("draw"); synchronized (drawfun) { now = System.currentTimeMillis(); while (bufdraw != null) drawfun.wait(); bufdraw = new Frame(buf, state.cgl); drawfun.notifyAll(); fwaited += System.currentTimeMillis() - now; } ui.audio.cycle(); if (curf != null) curf.tick("aux"); now = System.currentTimeMillis(); long fd = bgmode ? this.bgfd : this.fd; if (now - then < fd) { synchronized (events) { events.wait(fd - (now - then)); } fwaited += System.currentTimeMillis() - now; } frames[framep] = now; waited[framep] = fwaited; for (int i = 0, ckf = framep, twait = 0; i < frames.length; i++) { ckf = (ckf - 1 + frames.length) % frames.length; twait += waited[ckf]; if (now - frames[ckf] > 1000) { fps = i; uidle = ((double) twait) / ((double) (now - frames[ckf])); break; } } framep = (framep + 1) % frames.length; if (curf != null) curf.tick("wait"); if (curf != null) curf.fin(); if (Thread.interrupted()) throw (new InterruptedException()); } } finally { drawthread.interrupt(); drawthread.join(); } } catch (InterruptedException e) { } finally { ui.destroy(); } }
/** * Execute applet events. Here is the state transition diagram * * <pre>{@literal * Note: (XXX) is the action * APPLET_XXX is the state * (applet code loaded) --> APPLET_LOAD -- (applet init called)--> APPLET_INIT -- * (applet start called) --> APPLET_START -- (applet stop called) --> APPLET_STOP -- * (applet destroyed called) --> APPLET_DESTROY --> (applet gets disposed) --> * APPLET_DISPOSE --> ... * }</pre> * * In the legacy lifecycle model. The applet gets loaded, inited and started. So it stays in the * APPLET_START state unless the applet goes away(refresh page or leave the page). So the applet * stop method called and the applet enters APPLET_STOP state. Then if the applet is revisited, it * will call applet start method and enter the APPLET_START state and stay there. * * <p>In the modern lifecycle model. When the applet first time visited, it is same as legacy * lifecycle model. However, when the applet page goes away. It calls applet stop method and * enters APPLET_STOP state and then applet destroyed method gets called and enters APPLET_DESTROY * state. * * <p>This code is also called by AppletViewer. In AppletViewer "Restart" menu, the applet is jump * from APPLET_STOP to APPLET_DESTROY and to APPLET_INIT . * * <p>Also, the applet can jump from APPLET_INIT state to APPLET_DESTROY (in Netscape/Mozilla * case). Same as APPLET_LOAD to APPLET_DISPOSE since all of this are triggered by browser. */ @Override public void run() { Thread curThread = Thread.currentThread(); if (curThread == loaderThread) { // if we are in the loader thread, cause // loading to occur. We may exit this with // status being APPLET_DISPOSE, APPLET_ERROR, // or APPLET_LOAD runLoader(); return; } boolean disposed = false; while (!disposed && !curThread.isInterrupted()) { AppletEvent evt; try { evt = getNextEvent(); } catch (InterruptedException e) { showAppletStatus("bail"); return; } // showAppletStatus("EVENT = " + evt.getID()); try { switch (evt.getID()) { case APPLET_LOAD: if (!okToLoad()) { break; } // This complexity allows loading of applets to be // interruptable. The actual thread loading runs // in a separate thread, so it can be interrupted // without harming the applet thread. // So that we don't have to worry about // concurrency issues, the main applet thread waits // until the loader thread terminates. // (one way or another). if (loaderThread == null) { setLoaderThread(new Thread(null, this, "AppletLoader", 0, false)); loaderThread.start(); // we get to go to sleep while this runs loaderThread.join(); setLoaderThread(null); } else { // REMIND: issue an error -- this case should never // occur. } break; case APPLET_INIT: // AppletViewer "Restart" will jump from destroy method to // init, that is why we need to check status w/ APPLET_DESTROY if (status != APPLET_LOAD && status != APPLET_DESTROY) { showAppletStatus("notloaded"); break; } applet.resize(defaultAppletSize); if (PerformanceLogger.loggingEnabled()) { PerformanceLogger.setTime("Applet Init"); PerformanceLogger.outputLog(); } applet.init(); // Need the default(fallback) font to be created in this AppContext Font f = getFont(); if (f == null || "dialog".equals(f.getFamily().toLowerCase(Locale.ENGLISH)) && f.getSize() == 12 && f.getStyle() == Font.PLAIN) { setFont(new Font(Font.DIALOG, Font.PLAIN, 12)); } // Validate the applet in event dispatch thread // to avoid deadlock. try { final AppletPanel p = this; Runnable r = new Runnable() { @Override public void run() { p.validate(); } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } status = APPLET_INIT; showAppletStatus("inited"); break; case APPLET_START: { if (status != APPLET_INIT && status != APPLET_STOP) { showAppletStatus("notinited"); break; } applet.resize(currentAppletSize); applet.start(); // Validate and show the applet in event dispatch thread // to avoid deadlock. try { final AppletPanel p = this; final Applet a = applet; Runnable r = new Runnable() { @Override public void run() { p.validate(); a.setVisible(true); // Fix for BugTraq ID 4041703. // Set the default focus for an applet. if (hasInitialFocus()) { setDefaultFocus(); } } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } status = APPLET_START; showAppletStatus("started"); break; } case APPLET_STOP: if (status != APPLET_START) { showAppletStatus("notstarted"); break; } status = APPLET_STOP; // Hide the applet in event dispatch thread // to avoid deadlock. try { final Applet a = applet; Runnable r = new Runnable() { @Override public void run() { a.setVisible(false); } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } // During Applet.stop(), any AccessControlException on an involved Class remains in // the "memory" of the AppletClassLoader. If the same instance of the ClassLoader is // reused, the same exception will occur during class loading. Set the // AppletClassLoader's // exceptionStatusSet flag to allow recognition of what had happened // when reusing AppletClassLoader object. try { applet.stop(); } catch (java.security.AccessControlException e) { setExceptionStatus(e); // rethrow exception to be handled as it normally would be. throw e; } showAppletStatus("stopped"); break; case APPLET_DESTROY: if (status != APPLET_STOP && status != APPLET_INIT) { showAppletStatus("notstopped"); break; } status = APPLET_DESTROY; // During Applet.destroy(), any AccessControlException on an involved Class remains in // the "memory" of the AppletClassLoader. If the same instance of the ClassLoader is // reused, the same exception will occur during class loading. Set the // AppletClassLoader's // exceptionStatusSet flag to allow recognition of what had happened // when reusing AppletClassLoader object. try { applet.destroy(); } catch (java.security.AccessControlException e) { setExceptionStatus(e); // rethrow exception to be handled as it normally would be. throw e; } showAppletStatus("destroyed"); break; case APPLET_DISPOSE: if (status != APPLET_DESTROY && status != APPLET_LOAD) { showAppletStatus("notdestroyed"); break; } status = APPLET_DISPOSE; try { final Applet a = applet; Runnable r = new Runnable() { @Override public void run() { remove(a); } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } applet = null; showAppletStatus("disposed"); disposed = true; break; case APPLET_QUIT: return; } } catch (Exception e) { status = APPLET_ERROR; if (e.getMessage() != null) { showAppletStatus("exception2", e.getClass().getName(), e.getMessage()); } else { showAppletStatus("exception", e.getClass().getName()); } showAppletException(e); } catch (ThreadDeath e) { showAppletStatus("death"); return; } catch (Error e) { status = APPLET_ERROR; if (e.getMessage() != null) { showAppletStatus("error2", e.getClass().getName(), e.getMessage()); } else { showAppletStatus("error", e.getClass().getName()); } showAppletException(e); } clearLoadAbortRequest(); } }
void joinAppletThread() throws InterruptedException { if (handler != null) { handler.join(); handler = null; } }