1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-14 20:45:22 +02:00

[267474] added window size option handling.

This commit is contained in:
Anna Dushistova 2009-04-22 20:56:21 +00:00
parent 2759275911
commit e80b62240a
2 changed files with 24 additions and 9 deletions

View file

@ -7,7 +7,7 @@ Bundle-Activator: org.eclipse.rse.internal.services.telnet.Activator
Bundle-Localization: plugin Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime, Require-Bundle: org.eclipse.core.runtime,
org.eclipse.rse.services;bundle-version="[3.1.0,4.0.0)", org.eclipse.rse.services;bundle-version="[3.1.0,4.0.0)",
org.apache.commons.net;bundle-version="[1.4.1,3.0.0)" org.apache.commons.net;bundle-version="[2.0.0,3.0.0)"
Export-Package: org.eclipse.rse.internal.services.telnet;x-friends:="org.eclipse.rse.connectorservice.telnet,org.eclipse.rse.subsystems.shells.telnet", Export-Package: org.eclipse.rse.internal.services.telnet;x-friends:="org.eclipse.rse.connectorservice.telnet,org.eclipse.rse.subsystems.shells.telnet",
org.eclipse.rse.internal.services.telnet.terminal;x-friends:="org.eclipse.rse.subsystems.shells.telnet" org.eclipse.rse.internal.services.telnet.terminal;x-friends:="org.eclipse.rse.subsystems.shells.telnet"
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy

View file

@ -11,6 +11,7 @@
* Martin Oberhuber (Wind River) - [227320] Fix endless loop in TelnetTerminalShell * Martin Oberhuber (Wind River) - [227320] Fix endless loop in TelnetTerminalShell
* Anna Dushistova (MontaVista) - [240523] [rseterminals] Provide a generic adapter factory that adapts any ITerminalService to an IShellService * Anna Dushistova (MontaVista) - [240523] [rseterminals] Provide a generic adapter factory that adapts any ITerminalService to an IShellService
* Martin Oberhuber (Wind River) - [267402] [telnet] "launch shell" takes forever * Martin Oberhuber (Wind River) - [267402] [telnet] "launch shell" takes forever
* Anna Dushistova (MontaVista) - [267474] [rseterminal][telnet] Notify the remote when terminal window size changes
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.services.telnet.terminal; package org.eclipse.rse.internal.services.telnet.terminal;
@ -25,6 +26,8 @@ import java.io.Writer;
import org.apache.commons.net.io.ToNetASCIIInputStream; import org.apache.commons.net.io.ToNetASCIIInputStream;
import org.apache.commons.net.telnet.EchoOptionHandler; import org.apache.commons.net.telnet.EchoOptionHandler;
import org.apache.commons.net.telnet.InvalidTelnetOptionException;
import org.apache.commons.net.telnet.WindowSizeOptionHandler;
import org.apache.commons.net.telnet.SuppressGAOptionHandler; import org.apache.commons.net.telnet.SuppressGAOptionHandler;
import org.apache.commons.net.telnet.TelnetClient; import org.apache.commons.net.telnet.TelnetClient;
import org.apache.commons.net.telnet.TelnetOption; import org.apache.commons.net.telnet.TelnetOption;
@ -96,13 +99,16 @@ public class TelnetTerminalShell extends AbstractTerminalShell {
fTelnetClient = new TelnetClient(); fTelnetClient = new TelnetClient();
} else { } else {
fTelnetClient = new TelnetClient(ptyType); fTelnetClient = new TelnetClient(ptyType);
fTelnetClient.addOptionHandler(new TerminalTypeOptionHandler(ptyType, true, true, true, true)); fTelnetClient.addOptionHandler(new TerminalTypeOptionHandler(
ptyType, true, true, true, true));
} }
// request remote echo, but accept local if desired // request remote echo, but accept local if desired
fTelnetClient.addOptionHandler(new EchoOptionHandler(false, true, fTelnetClient.addOptionHandler(new EchoOptionHandler(false, true,
true, true)); true, true));
fTelnetClient.addOptionHandler(new SuppressGAOptionHandler(true, fTelnetClient.addOptionHandler(new SuppressGAOptionHandler(true,
true, true, true)); true, true, true));
fTelnetClient.addOptionHandler(new WindowSizeOptionHandler(fWidth,
fHeight, true, true, true, true));
fTelnetClient = fSessionProvider.loginTelnetClient(fTelnetClient, fTelnetClient = fSessionProvider.loginTelnetClient(fTelnetClient,
new NullProgressMonitor()); new NullProgressMonitor());
fOutputStream = fTelnetClient.getOutputStream(); fOutputStream = fTelnetClient.getOutputStream();
@ -270,6 +276,15 @@ public class TelnetTerminalShell extends AbstractTerminalShell {
&& (newWidth != fWidth || newHeight != fHeight)) { && (newWidth != fWidth || newHeight != fHeight)) {
// avoid excessive communications due to change size requests by // avoid excessive communications due to change size requests by
// caching previous size // caching previous size
synchronized (fTelnetClient) {
try {
fTelnetClient.deleteOptionHandler(TelnetOption.WINDOW_SIZE);
fTelnetClient.addOptionHandler(new WindowSizeOptionHandler(
newWidth, newHeight, true, true, true, true));
} catch (InvalidTelnetOptionException e) {
e.printStackTrace();
}
}
fWidth = newWidth; fWidth = newWidth;
fHeight = newHeight; fHeight = newHeight;
} }