/*
 * 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, Jason Dillon
Since:2.0
/** * Representation of the input terminal for a platform. * * @author <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a> * @author <a href="mailto:jason@planet57.com">Jason Dillon</a> * @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.
/** * 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
/** * 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)
/** * 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(); }