commit - f85347a147b2baddd375a8877f42c7bf93844d45
commit + dc9d63ad580656174429e44368fa05c6f61fbd80
blob - ef6923f0ca63e904e5c8ac2494b1dc596c59de99
blob + e1f7dd36b80f44b319e144bb467c52c059668e08
--- de/mud/jta/default.conf
+++ de/mud/jta/default.conf
Terminal.id = vt320
Terminal.buffer = 100
Terminal.size = [80,24]
-Terminal.resize = font
+Terminal.resize = screen
Terminal.font = Monospaced
Terminal.fontStyle = plain
Terminal.fontSize = 11
blob - a74d3b46a3bdd5a648dda0eecb1268797e464668
blob + 72a84b796c6837e65668d91fb4ade18841d5f5e3
--- de/mud/jta/plugin/Telnet.java
+++ de/mud/jta/plugin/Telnet.java
import de.mud.jta.event.OnlineStatusListener;
import de.mud.jta.event.ConfigurationListener;
import de.mud.jta.event.TelnetCommandListener;
+import de.mud.jta.event.SetWindowSizeListener;
import de.mud.jta.event.TerminalTypeRequest;
import de.mud.jta.event.WindowSizeRequest;
import de.mud.jta.event.LocalEchoRequest;
}
});
+ bus.registerPluginListener(new SetWindowSizeListener() {
+ public void setWindowSize(int columns, int rows) {
+ try {
+ handler.setWindowSize(columns,rows);
+ } catch (java.io.IOException e) {
+ System.err.println("IO Exception in set window size");
+ }
+ }
+ });
+
bus.registerPluginListener(new ConfigurationListener() {
public void setConfiguration(PluginConfig config) {
configure(config);
blob - 731107b3955acf9336fc455e02de65b15fb66dfa
blob + 945ca811f393572f3611150d574ed47b5a25d8b0
--- de/mud/jta/plugin/Terminal.java
+++ de/mud/jta/plugin/Terminal.java
import de.mud.jta.event.ReturnFocusListener;
import de.mud.jta.event.SoundRequest;
import de.mud.jta.event.TelnetCommandRequest;
+import de.mud.jta.event.SetWindowSizeRequest;
import de.mud.jta.event.TerminalTypeListener;
import de.mud.jta.event.WindowSizeListener;
import de.mud.terminal.vt320;
public void sendTelnetCommand(byte cmd) {
bus.broadcast(new TelnetCommandRequest(cmd));
}
+
+ public void setWindowSize(int c, int r) {
+ bus.broadcast(new SetWindowSizeRequest(c,r));
+ }
};
// create terminal
int idx = tmp.indexOf(',');
int width = Integer.parseInt(tmp.substring(1, idx).trim());
int height = Integer.parseInt(tmp.substring(idx + 1, tmp.length() - 1).trim());
- emulation.setScreenSize(width, height);
+ emulation.setScreenSize(width, height, false);
} catch (Exception e) {
error("screen size is wrong: " + tmp);
error("error: " + e);
blob - 59e436530b747ecdb34339bf3671627aeaf3d3c6
blob + 5a3110afca4bd86b8c739cce71174901cd39adf1
--- de/mud/telnet/TelnetProtocolHandler.java
+++ de/mud/telnet/TelnetProtocolHandler.java
write(b);
}
+ /**
+ * Send the new Window Size (via NAWS)
+ */
+ public void setWindowSize(int columns,int rows)
+ throws IOException {
+ if(debug > 2) System.err.println("sending NAWS");
+ if (receivedDX[TELOPT_NAWS] != DO) {
+ System.err.println("not allowed to send NAWS? (DONT NAWS)");
+ return;
+ }
+ write(IAC);write(SB);write(TELOPT_NAWS);
+ write((byte) (columns >> 8));
+ write((byte) (columns & 0xff));
+ write((byte) (rows >> 8));
+ write((byte) (rows & 0xff));
+ write(IAC);write(SE);
+ }
+
+
/**
* Handle an incoming IAC SB <type> <bytes> IAC SE
* @param type type of SB
blob - f1b93d1f8703d07bf6ebf59204d9c854fa5edc94
blob + c1f0734beaf8a5911f1508436d16774cc858a9dd
--- de/mud/terminal/SwingTerminal.java
+++ de/mud/terminal/SwingTerminal.java
switch (resizeStrategy) {
case RESIZE_SCREEN:
- buffer.setScreenSize(w / charWidth, buffer.height = h / charHeight);
+ buffer.setScreenSize(w / charWidth, buffer.height = h / charHeight, true);
break;
case RESIZE_FONT:
int height = h / buffer.height;
blob - 5158d81780c0df3e87f33eb143483feb77799c4e
blob + 9fdb3f4c43333a0bb2e290e8d1353489c90da81c
--- de/mud/terminal/VDUBuffer.java
+++ de/mud/terminal/VDUBuffer.java
*/
public VDUBuffer(int width, int height) {
// set the display screen size
- setScreenSize(width, height);
+ setScreenSize(width, height, false);
}
/**
* @param w of the screen
* @param h of the screen
*/
- public void setScreenSize(int w, int h) {
+ public void setScreenSize(int w, int h, boolean broadcast) {
char cbuf[][];
int abuf[][];
int bsize = bufSize;
blob - c130419433419519ae4de2bc8ca10646ee37b6f0
blob + 193ad59a31fc43cb31fde0e2eedc82391cfa8fdd
--- de/mud/terminal/vt320.java
+++ de/mud/terminal/vt320.java
protected void sendTelnetCommand(byte cmd) {
}
+ /**
+ * Sent the changed window size from the terminal to all listeners.
+ */
+ protected void setWindowSize(int c, int r) {
+ /* To be overridden by Terminal.java */
+ }
+
+ public void setScreenSize(int c, int r, boolean broadcast) {
+ System.err.println("setscreensize ("+c+","+r+","+broadcast+")");
+ super.setScreenSize(c,r,false);
+ if (broadcast) {
+ setWindowSize(c, r); /* broadcast up */
+ }
+ }
+
+
/**
* Create a new vt320 terminal and intialize it with useful settings.
*/
for (int i = 0; i <= DCEvar; i++) {
switch (DCEvars[i]) {
case 3: /* 80 columns*/
- setScreenSize(80, getRows());
+ setScreenSize(80, getRows(), true);
break;
case 4: /* scrolling mode, smooth */
break;
vt52mode = false;
break;
case 3: /* 132 columns*/
- setScreenSize(132, getRows());
+ setScreenSize(132, getRows(), true);
break;
case 6: /* DECOM: move inside margins. */
moveoutsidemargins = false;
vt52mode = true;
break;
case 3: /* 80 columns*/
- setScreenSize(80, getRows());
+ setScreenSize(80, getRows(), true);
break;
case 6: /* DECOM: move outside margins. */
moveoutsidemargins = true;