X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fio%2FAWTTerminal.java;h=27ba80aa12b7180accfd394e9c340627fe32a9f6;hb=92554d64c21c6a477fd23a06ca3a64a542b622a3;hp=d7716c6c8cb299f17a62d148555c7a5ff0225c45;hpb=30bd4abd2a85c162bdf0a1cc687b366345182bc1;p=fanfix.git diff --git a/src/jexer/io/AWTTerminal.java b/src/jexer/io/AWTTerminal.java index d7716c6..27ba80a 100644 --- a/src/jexer/io/AWTTerminal.java +++ b/src/jexer/io/AWTTerminal.java @@ -45,7 +45,6 @@ import java.util.List; import java.util.LinkedList; import jexer.TKeypress; -import jexer.bits.Color; import jexer.event.TCommandEvent; import jexer.event.TInputEvent; import jexer.event.TKeypressEvent; @@ -82,6 +81,11 @@ public final class AWTTerminal implements ComponentListener, KeyListener, return sessionInfo; } + /** + * The listening object that run() wakes up on new input. + */ + private Object listener; + /** * The event queue, filled up by a thread reading on input. */ @@ -121,9 +125,12 @@ public final class AWTTerminal implements ComponentListener, KeyListener, /** * Constructor sets up state for getEvent(). * + * @param listener the object this backend needs to wake up when new + * input comes in * @param screen the top-level AWT frame */ - public AWTTerminal(final AWTScreen screen) { + public AWTTerminal(final Object listener, final AWTScreen screen) { + this.listener = listener; this.screen = screen; mouse1 = false; mouse2 = false; @@ -163,26 +170,6 @@ public final class AWTTerminal implements ComponentListener, KeyListener, } } - /** - * Return any events in the IO queue due to timeout. - * - * @param queue list to append new events to - */ - public void getIdleEvents(final List queue) { - - // Insert any polling action here... - - // Return any events that showed up - synchronized (eventQueue) { - if (eventQueue.size() > 0) { - synchronized (queue) { - queue.addAll(eventQueue); - } - eventQueue.clear(); - } - } - } - /** * Pass AWT keystrokes into the event queue. * @@ -375,6 +362,9 @@ public final class AWTTerminal implements ComponentListener, KeyListener, case 0x0A: keypress = kbEnter; break; + case 0x1B: + keypress = kbEsc; + break; case 0x0D: keypress = kbEnter; break; @@ -394,9 +384,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, synchronized (eventQueue) { eventQueue.add(new TKeypressEvent(keypress)); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -431,9 +420,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, synchronized (eventQueue) { eventQueue.add(new TCommandEvent(cmAbort)); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -521,9 +509,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, sessionInfo.getWindowWidth(), sessionInfo.getWindowHeight()); eventQueue.add(windowResize); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -550,8 +537,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, mouse1 = eventMouse1; mouse2 = eventMouse2; mouse3 = eventMouse3; - int x = sessionInfo.textColumn(mouse.getX()); - int y = sessionInfo.textRow(mouse.getY()); + int x = screen.textColumn(mouse.getX()); + int y = screen.textRow(mouse.getY()); TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION, x, y, x, y, mouse1, mouse2, mouse3, false, false); @@ -559,9 +546,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, synchronized (eventQueue) { eventQueue.add(mouseEvent); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -572,17 +558,16 @@ public final class AWTTerminal implements ComponentListener, KeyListener, */ @Override public void mouseMoved(final MouseEvent mouse) { - int x = sessionInfo.textColumn(mouse.getX()); - int y = sessionInfo.textRow(mouse.getY()); + int x = screen.textColumn(mouse.getX()); + int y = screen.textRow(mouse.getY()); TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION, x, y, x, y, mouse1, mouse2, mouse3, false, false); synchronized (eventQueue) { eventQueue.add(mouseEvent); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -639,8 +624,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, mouse1 = eventMouse1; mouse2 = eventMouse2; mouse3 = eventMouse3; - int x = sessionInfo.textColumn(mouse.getX()); - int y = sessionInfo.textRow(mouse.getY()); + int x = screen.textColumn(mouse.getX()); + int y = screen.textRow(mouse.getY()); TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_DOWN, x, y, x, y, mouse1, mouse2, mouse3, false, false); @@ -648,9 +633,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, synchronized (eventQueue) { eventQueue.add(mouseEvent); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -686,8 +670,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, mouse3 = false; eventMouse3 = true; } - int x = sessionInfo.textColumn(mouse.getX()); - int y = sessionInfo.textRow(mouse.getY()); + int x = screen.textColumn(mouse.getX()); + int y = screen.textRow(mouse.getY()); TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_UP, x, y, x, y, eventMouse1, eventMouse2, eventMouse3, false, false); @@ -695,9 +679,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, synchronized (eventQueue) { eventQueue.add(mouseEvent); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } } @@ -726,8 +709,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, mouse1 = eventMouse1; mouse2 = eventMouse2; mouse3 = eventMouse3; - int x = sessionInfo.textColumn(mouse.getX()); - int y = sessionInfo.textRow(mouse.getY()); + int x = screen.textColumn(mouse.getX()); + int y = screen.textRow(mouse.getY()); if (mouse.getWheelRotation() > 0) { mouseWheelDown = true; } @@ -741,9 +724,8 @@ public final class AWTTerminal implements ComponentListener, KeyListener, synchronized (eventQueue) { eventQueue.add(mouseEvent); } - // Wake up the backend - synchronized (this) { - this.notifyAll(); + synchronized (listener) { + listener.notifyAll(); } }