X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fbackend%2FECMA48Backend.java;h=3e588f992c209c7f6a0e45a2202cfccbf1dd9a22;hb=3e0743556d1f31723a11a6019b5c2b018b4b2104;hp=24357bb11841aad529379bd718313d1924c24297;hpb=a2018e9964f6c58742cd1e6dd0a0c63e244a89d6;p=fanfix.git diff --git a/src/jexer/backend/ECMA48Backend.java b/src/jexer/backend/ECMA48Backend.java index 24357bb..3e588f9 100644 --- a/src/jexer/backend/ECMA48Backend.java +++ b/src/jexer/backend/ECMA48Backend.java @@ -33,22 +33,24 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.io.UnsupportedEncodingException; -import java.util.List; - -import jexer.event.TInputEvent; -import jexer.io.ECMA48Screen; -import jexer.io.ECMA48Terminal; /** * This class uses an xterm/ANSI X3.64/ECMA-48 type terminal to provide a * screen, keyboard, and mouse to TApplication. */ -public final class ECMA48Backend extends Backend { +public final class ECMA48Backend extends GenericBackend { /** - * Input events are processed by this Terminal. + * Public constructor will use System.in and System.out and UTF-8 + * encoding. On non-Windows systems System.in will be put in raw mode; + * shutdown() will (blindly!) put System.in in cooked mode. + * + * @throws UnsupportedEncodingException if an exception is thrown when + * creating the InputStreamReader */ - private ECMA48Terminal terminal; + public ECMA48Backend() throws UnsupportedEncodingException { + this(null, null, null); + } /** * Public constructor. @@ -72,14 +74,10 @@ public final class ECMA48Backend extends Backend { terminal = new ECMA48Terminal(listener, input, output); // Keep the terminal's sessionInfo so that TApplication can see it - sessionInfo = terminal.getSessionInfo(); - - // Create a screen - screen = new ECMA48Screen(terminal); + sessionInfo = ((ECMA48Terminal) terminal).getSessionInfo(); - // Clear the screen - terminal.getOutput().write(terminal.clearAll()); - terminal.flush(); + // ECMA48Terminal is the screen too + screen = (ECMA48Terminal) terminal; } /** @@ -105,14 +103,10 @@ public final class ECMA48Backend extends Backend { setRawMode); // Keep the terminal's sessionInfo so that TApplication can see it - sessionInfo = terminal.getSessionInfo(); + sessionInfo = ((ECMA48Terminal) terminal).getSessionInfo(); - // Create a screen - screen = new ECMA48Screen(terminal); - - // Clear the screen - terminal.getOutput().write(terminal.clearAll()); - terminal.flush(); + // ECMA48Terminal is the screen too + screen = (ECMA48Terminal) terminal; } /** @@ -132,42 +126,5 @@ public final class ECMA48Backend extends Backend { this(listener, input, reader, writer, false); } - /** - * Sync the logical screen to the physical device. - */ - @Override - public void flushScreen() { - screen.flushPhysical(); - } - - /** - * Get keyboard, mouse, and screen resize events. - * - * @param queue list to append new events to - */ - @Override - public void getEvents(final List queue) { - if (terminal.hasEvents()) { - terminal.getEvents(queue); - } - } - - /** - * Close the I/O, restore the console, etc. - */ - @Override - public void shutdown() { - terminal.shutdown(); - } - - /** - * Set the window title. - * - * @param title the new title - */ - @Override - public void setTitle(final String title) { - ((ECMA48Screen) screen).setTitle(title); - } }