// 
// Decompiled by Procyon v0.6.0
// 

package org.jline.terminal.impl;

import org.jline.terminal.Size;
import org.jline.terminal.Attributes;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.FileDescriptor;
import org.jline.terminal.spi.SystemStream;
import org.jline.terminal.Terminal;
import java.nio.charset.Charset;
import org.jline.terminal.spi.TerminalProvider;

public class DumbTerminalProvider implements TerminalProvider
{
    @Override
    public String name() {
        return "dumb";
    }
    
    @Override
    public Terminal sysTerminal(final String name, final String type, final boolean ansiPassThrough, final Charset encoding, final Charset inputEncoding, final Charset outputEncoding, final boolean nativeSignals, final Terminal.SignalHandler signalHandler, final boolean paused, final SystemStream systemStream) throws IOException {
        return new DumbTerminal(this, systemStream, name, type, new FileInputStream(FileDescriptor.in), new FileOutputStream((systemStream == SystemStream.Error) ? FileDescriptor.err : FileDescriptor.out), encoding, inputEncoding, outputEncoding, signalHandler);
    }
    
    @Override
    public Terminal sysTerminal(final String name, final String type, final boolean ansiPassThrough, final Charset encoding, final Charset stdinEncoding, final Charset stdoutEncoding, final Charset stderrEncoding, final boolean nativeSignals, final Terminal.SignalHandler signalHandler, final boolean paused, final SystemStream systemStream) throws IOException {
        final Charset outputEncoding = (systemStream == SystemStream.Error) ? stderrEncoding : stdoutEncoding;
        return this.sysTerminal(name, type, ansiPassThrough, encoding, stdinEncoding, outputEncoding, nativeSignals, signalHandler, paused, systemStream);
    }
    
    @Override
    public Terminal newTerminal(final String name, final String type, final InputStream masterInput, final OutputStream masterOutput, final Charset encoding, final Charset inputEncoding, final Charset outputEncoding, final Terminal.SignalHandler signalHandler, final boolean paused, final Attributes attributes, final Size size) throws IOException {
        throw new UnsupportedOperationException();
    }
    
    @Override
    public Terminal newTerminal(final String name, final String type, final InputStream masterInput, final OutputStream masterOutput, final Charset encoding, final Charset stdinEncoding, final Charset stdoutEncoding, final Charset stderrEncoding, final Terminal.SignalHandler signalHandler, final boolean paused, final Attributes attributes, final Size size) throws IOException {
        return this.newTerminal(name, type, masterInput, masterOutput, encoding, stdinEncoding, stdoutEncoding, signalHandler, paused, attributes, size);
    }
    
    @Override
    public boolean isSystemStream(final SystemStream stream) {
        return false;
    }
    
    @Override
    public String systemStreamName(final SystemStream stream) {
        return null;
    }
    
    @Override
    public int systemStreamWidth(final SystemStream stream) {
        return 0;
    }
    
    @Override
    public String toString() {
        return "TerminalProvider[" + this.name() + "]";
    }
}
