X-Git-Url: http://git.nikiroo.be/?p=jvcard.git;a=blobdiff_plain;f=src%2Fcom%2Fgooglecode%2Flanterna%2Fterminal%2FIOSafeTerminalAdapter.java;fp=src%2Fcom%2Fgooglecode%2Flanterna%2Fterminal%2FIOSafeTerminalAdapter.java;h=0000000000000000000000000000000000000000;hp=04c024a37d8d5a30248cd19e99b43985245bc13a;hb=f06c81000632cfb5f525ca458f719338f55f9f66;hpb=a73a906356c971b080c36368e71a15d87e8b8d31 diff --git a/src/com/googlecode/lanterna/terminal/IOSafeTerminalAdapter.java b/src/com/googlecode/lanterna/terminal/IOSafeTerminalAdapter.java deleted file mode 100644 index 04c024a..0000000 --- a/src/com/googlecode/lanterna/terminal/IOSafeTerminalAdapter.java +++ /dev/null @@ -1,401 +0,0 @@ -/* - * This file is part of lanterna (http://code.google.com/p/lanterna/). - * - * lanterna is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * Copyright (C) 2010-2015 Martin - */ -package com.googlecode.lanterna.terminal; - -import com.googlecode.lanterna.SGR; -import com.googlecode.lanterna.TerminalSize; -import com.googlecode.lanterna.TextColor; -import com.googlecode.lanterna.graphics.TextGraphics; -import com.googlecode.lanterna.input.KeyStroke; -import java.io.IOException; -import java.util.concurrent.TimeUnit; - -/** - * This class exposes methods for converting a terminal into an IOSafeTerminal. There are two options available, either - * one that will convert any IOException to a RuntimeException (and re-throw it) or one that will silently swallow any - * IOException (and return null in those cases the method has a non-void return type). - * @author Martin - */ -public class IOSafeTerminalAdapter implements IOSafeTerminal { - private interface ExceptionHandler { - void onException(IOException e); - } - - private static class ConvertToRuntimeException implements ExceptionHandler { - @Override - public void onException(IOException e) { - throw new RuntimeException(e); - } - } - - private static class DoNothingAndOrReturnNull implements ExceptionHandler { - @Override - public void onException(IOException e) { } - } - - /** - * Creates a wrapper around a Terminal that exposes it as a IOSafeTerminal. If any IOExceptions occur, they will be - * wrapped by a RuntimeException and re-thrown. - * @param terminal Terminal to wrap - * @return IOSafeTerminal wrapping the supplied terminal - */ - public static IOSafeTerminal createRuntimeExceptionConvertingAdapter(Terminal terminal) { - if (terminal instanceof ExtendedTerminal) { // also handle Runtime-type: - return createRuntimeExceptionConvertingAdapter((ExtendedTerminal)terminal); - } else { - return new IOSafeTerminalAdapter(terminal, new ConvertToRuntimeException()); - } - } - - /** - * Creates a wrapper around an ExtendedTerminal that exposes it as a IOSafeExtendedTerminal. - * If any IOExceptions occur, they will be wrapped by a RuntimeException and re-thrown. - * @param terminal Terminal to wrap - * @return IOSafeTerminal wrapping the supplied terminal - */ - public static IOSafeExtendedTerminal createRuntimeExceptionConvertingAdapter(ExtendedTerminal terminal) { - return new IOSafeTerminalAdapter.Extended(terminal, new ConvertToRuntimeException()); - } - - /** - * Creates a wrapper around a Terminal that exposes it as a IOSafeTerminal. If any IOExceptions occur, they will be - * silently ignored and for those method with a non-void return type, null will be returned. - * @param terminal Terminal to wrap - * @return IOSafeTerminal wrapping the supplied terminal - */ - public static IOSafeTerminal createDoNothingOnExceptionAdapter(Terminal terminal) { - if (terminal instanceof ExtendedTerminal) { // also handle Runtime-type: - return createDoNothingOnExceptionAdapter((ExtendedTerminal)terminal); - } else { - return new IOSafeTerminalAdapter(terminal, new DoNothingAndOrReturnNull()); - } - } - - /** - * Creates a wrapper around an ExtendedTerminal that exposes it as a IOSafeExtendedTerminal. - * If any IOExceptions occur, they will be silently ignored and for those method with a - * non-void return type, null will be returned. - * @param terminal Terminal to wrap - * @return IOSafeTerminal wrapping the supplied terminal - */ - public static IOSafeExtendedTerminal createDoNothingOnExceptionAdapter(ExtendedTerminal terminal) { - return new IOSafeTerminalAdapter.Extended(terminal, new DoNothingAndOrReturnNull()); - } - - private final Terminal backend; - final ExceptionHandler exceptionHandler; - - @SuppressWarnings("WeakerAccess") - public IOSafeTerminalAdapter(Terminal backend, ExceptionHandler exceptionHandler) { - this.backend = backend; - this.exceptionHandler = exceptionHandler; - } - - @Override - public void enterPrivateMode() { - try { - backend.enterPrivateMode(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void exitPrivateMode() { - try { - backend.exitPrivateMode(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void clearScreen() { - try { - backend.clearScreen(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void setCursorPosition(int x, int y) { - try { - backend.setCursorPosition(x, y); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void setCursorVisible(boolean visible) { - try { - backend.setCursorVisible(visible); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void putCharacter(char c) { - try { - backend.putCharacter(c); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public TextGraphics newTextGraphics() throws IOException { - return backend.newTextGraphics(); - } - - @Override - public void enableSGR(SGR sgr) { - try { - backend.enableSGR(sgr); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void disableSGR(SGR sgr) { - try { - backend.disableSGR(sgr); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void resetColorAndSGR() { - try { - backend.resetColorAndSGR(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void setForegroundColor(TextColor color) { - try { - backend.setForegroundColor(color); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void setBackgroundColor(TextColor color) { - try { - backend.setBackgroundColor(color); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void addResizeListener(ResizeListener listener) { - backend.addResizeListener(listener); - } - - @Override - public void removeResizeListener(ResizeListener listener) { - backend.removeResizeListener(listener); - } - - @Override - public TerminalSize getTerminalSize() { - try { - return backend.getTerminalSize(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - return null; - } - - @Override - public byte[] enquireTerminal(int timeout, TimeUnit timeoutUnit) { - try { - return backend.enquireTerminal(timeout, timeoutUnit); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - return null; - } - - @Override - public void flush() { - try { - backend.flush(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public KeyStroke pollInput() { - try { - return backend.pollInput(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - return null; - } - - @Override - public KeyStroke readInput() { - try { - return backend.readInput(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - return null; - } - - /** - * This class exposes methods for converting an extended terminal into an IOSafeExtendedTerminal. - */ - public static class Extended extends IOSafeTerminalAdapter implements IOSafeExtendedTerminal { - private final ExtendedTerminal backend; - - public Extended(ExtendedTerminal backend, ExceptionHandler exceptionHandler) { - super(backend, exceptionHandler); - this.backend = backend; - } - - @Override - public void setTerminalSize(int columns, int rows) { - try { - backend.setTerminalSize(columns, rows); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void setTitle(String title) { - try { - backend.setTitle(title); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void pushTitle() { - try { - backend.pushTitle(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void popTitle() { - try { - backend.popTitle(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void iconify() { - try { - backend.iconify(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void deiconify() { - try { - backend.deiconify(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void maximize() { - try { - backend.maximize(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void unmaximize() { - try { - backend.unmaximize(); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void setMouseCaptureMode(MouseCaptureMode mouseCaptureMode) { - try { - backend.setMouseCaptureMode(mouseCaptureMode); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - @Override - public void scrollLines(int firstLine, int lastLine, int distance) { - try { - backend.scrollLines(firstLine, lastLine, distance); - } - catch(IOException e) { - exceptionHandler.onException(e); - } - } - - } -}