X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fbackend%2FBackend.java;h=eaed7e64966228e6386d21349c757ae80efaa5e2;hb=cfdaf6052ddc5ca44cf19f1f6d9f154cc8443024;hp=15fcf62620eff7254c73117d8fe8b9c02a521b59;hpb=df8de03f80590dde35f26616db91ad6163007b7e;p=fanfix.git diff --git a/src/jexer/backend/Backend.java b/src/jexer/backend/Backend.java index 15fcf62..eaed7e6 100644 --- a/src/jexer/backend/Backend.java +++ b/src/jexer/backend/Backend.java @@ -1,78 +1,104 @@ -/** +/* * Jexer - Java Text User Interface * - * Version: $Id$ - * - * Author: Kevin Lamonte, kevin.lamonte@gmail.com - * - * License: LGPLv3 or later + * The MIT License (MIT) * - * Copyright: This module is licensed under the GNU Lesser General - * Public License Version 3. Please see the file "COPYING" in this - * directory for more information about the GNU Lesser General Public - * License Version 3. + * Copyright (C) 2019 Kevin Lamonte * - * Copyright (C) 2015 Kevin Lamonte + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * This program 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. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * 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 - * General Public License for more details. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, see - * http://www.gnu.org/licenses/, or write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA + * @author Kevin Lamonte [kevin.lamonte@gmail.com] + * @version 1 */ package jexer.backend; +import java.util.List; + import jexer.event.TInputEvent; -import jexer.io.Screen; -import jexer.session.SessionInfo; /** - * This abstract class provides a screen, keyboard, and mouse to - * TApplication. It also exposes session information as gleaned from lower - * levels of the communication stack. + * This interface provides a screen, keyboard, and mouse to TApplication. It + * also exposes session information as gleaned from lower levels of the + * communication stack. */ -public abstract class Backend { +public interface Backend { /** - * The session information + * Get a SessionInfo, which exposes text width/height, language, + * username, and other information from the communication stack. + * + * @return the SessionInfo */ - public SessionInfo session; + public SessionInfo getSessionInfo(); /** - * The screen to draw on + * Get a Screen, which displays the text cells to the user. + * + * @return the Screen */ - public Screen screen; + public Screen getScreen(); /** - * Subclasses must provide an implementation that syncs the logical - * screen to the physical device. + * Classes must provide an implementation that syncs the logical screen + * to the physical device. */ - abstract public void flushScreen(); + public void flushScreen(); /** - * Subclasses must provide an implementation to get keyboard, mouse, and + * Check if there are events in the queue. + * + * @return if true, getEvents() has something to return to the application + */ + public boolean hasEvents(); + + /** + * Classes must provide an implementation to get keyboard, mouse, and * screen resize events. * - * @param timeout maximum amount of time to wait for an event - * @return events received, or an empty list if the timeout was reached + * @param queue list to append new events to */ - abstract public TInputEvent [] getEvents(int timeout); + public void getEvents(List queue); /** - * Subclasses must provide an implementation that closes sockets, - * restores console, etc. + * Classes must provide an implementation that closes sockets, restores + * console, etc. */ - abstract public void shutdown(); + public void shutdown(); -} + /** + * Classes must provide an implementation that sets the window title. + * + * @param title the new title + */ + public void setTitle(final String title); + /** + * Set listener to a different Object. + * + * @param listener the new listening object that run() wakes up on new + * input + */ + public void setListener(final Object listener); + + /** + * Reload backend options from System properties. + */ + public void reloadOptions(); + +}