Mercurial > 510Connectbot
diff src/com/five_ten_sg/connectbot/transport/AbsTransport.java @ 42:7ac846a07ed4 tn5250
start tn5250 integration
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 11 Jun 2014 09:14:31 -0700 |
parents | 139394237973 |
children | 6b0f1ece1d91 |
line wrap: on
line diff
--- a/src/com/five_ten_sg/connectbot/transport/AbsTransport.java Tue Jun 10 17:40:09 2014 -0700 +++ b/src/com/five_ten_sg/connectbot/transport/AbsTransport.java Wed Jun 11 09:14:31 2014 -0700 @@ -41,6 +41,99 @@ vt320 buffer; String emulation; + class vt320Default extends vt320 { + @Override + public void debug(String s) { + Log.d(TAG, s); + } + @Override + public void write(byte[] b) { + try { + if (b != null && transport != null) + if (bridge.monitor != null) bridge.monitor.hostData(b); + + transport.write(b); + } + catch (IOException e) { + Log.e(TAG, "Problem writing outgoing data in vt320() thread", e); + } + } + @Override + public void write(int b) { + try { + if (transport != null) + if (bridge.monitor != null) bridge.monitor.hostData(b); + + transport.write(b); + } + catch (IOException e) { + Log.e(TAG, "Problem writing outgoing data in vt320() thread", e); + } + } + // We don't use telnet sequences. + @Override + public void sendTelnetCommand(byte cmd) { + } + // We don't want remote to resize our window. + @Override + public void setWindowSize(int c, int r) { + } + // test for changed screen contents + @Override + public void testChanged() { + if (bridge.monitor != null) bridge.monitor.testChanged(); + } + // play beep noise + @Override + public void beep() { + if (bridge.parent.isShown()) + manager.playBeep(); + else + manager.sendActivityNotification(host); + } + // bridge.monitor placement of new characters + @Override + public void putChar(int c, int l, char ch, int attributes) { + if (bridge.monitor != null) bridge.monitor.screenChanged(l, c); + + super.putChar(c, l, ch, attributes); + } + @Override + public void insertChar(int c, int l, char ch, int attributes) { + if (bridge.monitor != null) bridge.monitor.screenChanged(l, l, c, width - 1); + + super.insertChar(c, l, ch, attributes); + } + @Override + public void insertLine(int l, int n, boolean scrollDown) { + if (bridge.monitor != null) { + if (scrollDown) bridge.monitor.screenChanged(l, height - 1, 0, width - 1); + else bridge.monitor.screenChanged(0, l, 0, width - 1); + } + + super.insertLine(l, n, scrollDown); + } + @Override + public void deleteLine(int l) { + if (bridge.monitor != null) bridge.monitor.screenChanged(l, height - 1, 0, width - 1); + + super.deleteLine(l); + } + @Override + public void deleteChar(int c, int l) { + if (bridge.monitor != null) bridge.monitor.screenChanged(l, l, c, width - 1); + + super.deleteChar(c, l); + } + @Override + public void setCursorPosition(int c, int l) { + if (bridge.monitor != null) bridge.monitor.cursorMove(l, c); + + super.setCursorPosition(c, l); + } + }; + + public AbsTransport() {} /** @@ -144,11 +237,18 @@ return emulation; } - public void setLinks(TerminalManager manager, TerminalBridge bridge, HostBean host, vt320 buffer, String emulation) { + public vt320 getTransportbuffer() { + buffer = vt320Default(); + int scrollback = (host.getWantSession()) ? manager.getScrollback() : 0; + buffer.setBufferSize(scrollback); + buffer.setDisplay(bridge); + return buffer; + } + + public void setLinks(TerminalManager manager, TerminalBridge bridge, HostBean host, String emulation) { this.manager = manager; this.bridge = bridge; this.host = host; - this.buffer = buffer; this.emulation = emulation; } @@ -288,7 +388,7 @@ * @return a key listener */ public TerminalKeyListener getTerminalKeyListener() { - return new TerminalKeyListener(manager, bridge, buffer, host.getEncoding()); + return new TerminalKeyListener(manager, bridge, buffer, host.getEncoding()); } }