All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.fonimus.ssh.shell.SshShellTerminalDelegate Maven / Gradle / Ivy

The newest version!
package com.github.fonimus.ssh.shell;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.function.IntConsumer;
import java.util.function.IntSupplier;

import org.jline.terminal.Attributes;
import org.jline.terminal.Cursor;
import org.jline.terminal.MouseEvent;
import org.jline.terminal.Size;
import org.jline.terminal.Terminal;
import org.jline.utils.InfoCmp;
import org.jline.utils.NonBlockingReader;

import static com.github.fonimus.ssh.shell.SshShellCommandFactory.SSH_THREAD_CONTEXT;

/**
 * 

Shell terminal delegate

*

Calls are binded to terminal stored in thread context

*/ public class SshShellTerminalDelegate implements Terminal { private Terminal delegate; /** * Constructor * * @param delegate terminal delegate */ public SshShellTerminalDelegate(Terminal delegate) { this.delegate = delegate; } private Terminal delegate() { SshContext current = SSH_THREAD_CONTEXT.get(); if (current != null && current.getTerminal() != null) { return current.getTerminal(); } if (delegate == null) { throw new IllegalStateException("Cannot find terminal"); } return delegate; } @Override public String getName() { return delegate().getName(); } @Override public SignalHandler handle(Signal signal, SignalHandler signalHandler) { return delegate().handle(signal, signalHandler); } @Override public void raise(Signal signal) { delegate().raise(signal); } @Override public NonBlockingReader reader() { return delegate().reader(); } @Override public PrintWriter writer() { return delegate().writer(); } @Override public InputStream input() { return delegate().input(); } @Override public OutputStream output() { return delegate().output(); } @Override public Attributes enterRawMode() { return delegate().enterRawMode(); } @Override public boolean echo() { return delegate().echo(); } @Override public boolean echo(boolean b) { return delegate().echo(b); } @Override public Attributes getAttributes() { return delegate().getAttributes(); } @Override public void setAttributes(Attributes attributes) { delegate().setAttributes(attributes); } @Override public Size getSize() { return delegate().getSize(); } @Override public void setSize(Size size) { delegate().setSize(size); } @Override public void flush() { delegate().flush(); } @Override public String getType() { return delegate().getType(); } @Override public boolean puts(InfoCmp.Capability capability, Object... objects) { return delegate().puts(capability, objects); } @Override public boolean getBooleanCapability(InfoCmp.Capability capability) { return delegate().getBooleanCapability(capability); } @Override public Integer getNumericCapability(InfoCmp.Capability capability) { return delegate().getNumericCapability(capability); } @Override public String getStringCapability(InfoCmp.Capability capability) { return delegate().getStringCapability(capability); } @Override public Cursor getCursorPosition(IntConsumer intConsumer) { return delegate().getCursorPosition(intConsumer); } @Override public boolean hasMouseSupport() { return delegate().hasMouseSupport(); } @Override public boolean trackMouse(MouseTracking mouseTracking) { return delegate().trackMouse(mouseTracking); } @Override public MouseEvent readMouseEvent() { return delegate().readMouseEvent(); } @Override public MouseEvent readMouseEvent(IntSupplier intSupplier) { return delegate().readMouseEvent(intSupplier); } @Override public void close() throws IOException { delegate().close(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy