package jdk.internal.jline;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import jdk.internal.jline.internal.Log;
import jdk.internal.jline.internal.ShutdownHooks;
import jdk.internal.jline.internal.ShutdownHooks.Task;
public abstract class TerminalSupport
implements Terminal
{
public static final int DEFAULT_WIDTH = 80;
public static final int DEFAULT_HEIGHT = 24;
private Task shutdownTask;
private boolean supported;
private boolean echoEnabled;
private boolean ansiSupported;
protected TerminalSupport(final boolean supported) {
this.supported = supported;
}
public void init() throws Exception {
if (shutdownTask != null) {
ShutdownHooks.remove(shutdownTask);
}
this.shutdownTask = ShutdownHooks.add(new Task()
{
public void run() throws Exception {
restore();
}
});
}
public void restore() throws Exception {
TerminalFactory.resetIf(this);
if (shutdownTask != null) {
ShutdownHooks.remove(shutdownTask);
shutdownTask = null;
}
}
public void reset() throws Exception {
restore();
init();
}
public final boolean isSupported() {
return supported;
}
public synchronized boolean isAnsiSupported() {
return ansiSupported;
}
protected synchronized void setAnsiSupported(final boolean supported) {
this.ansiSupported = supported;
Log.debug("Ansi supported: ", supported);
}
public OutputStream wrapOutIfNeeded(OutputStream out) {
return out;
}
public boolean hasWeirdWrap() {
return true;
}
public int getWidth() {
return DEFAULT_WIDTH;
}
public int getHeight() {
return DEFAULT_HEIGHT;
}
public synchronized boolean isEchoEnabled() {
return echoEnabled;
}
public synchronized void setEchoEnabled(final boolean enabled) {
this.echoEnabled = enabled;
Log.debug("Echo enabled: ", enabled);
}
public InputStream wrapInIfNeeded(InputStream in) throws IOException {
return in;
}
public String getOutputEncoding() {
return null;
}
}