/* * Copyright (c) 2002-2012, the original author or authors. * * This software is distributable under the BSD license. See the terms of the * BSD license in the documentation provided with this software. * * http://www.opensource.org/licenses/bsd-license.php */ package jdk.internal.jline; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Representation of the input terminal for a platform. * * @author Marc Prud'hommeaux * @author Jason Dillon * @since 2.0 */ public interface Terminal { void init() throws Exception; void restore() throws Exception; void reset() throws Exception; boolean isSupported(); int getWidth(); int getHeight(); boolean isAnsiSupported(); /** * When ANSI is not natively handled, the output will have to be wrapped. */ OutputStream wrapOutIfNeeded(OutputStream out); /** * When using native support, return the InputStream to use for reading characters * else return the input stream passed as a parameter. * * @since 2.6 */ InputStream wrapInIfNeeded(InputStream in) throws IOException; /** * For terminals that don't wrap when character is written in last column, * only when the next character is written. * These are the ones that have 'am' and 'xn' termcap attributes (xterm and * rxvt flavors falls under that category) */ boolean hasWeirdWrap(); boolean isEchoEnabled(); void setEchoEnabled(boolean enabled); String getOutputEncoding(); }