X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fbackend%2FBackend.java;h=eaed7e64966228e6386d21349c757ae80efaa5e2;hb=12b90437b5f22c2ae6e9b9b14c3b62b60f6143e5;hp=dbc7c973359ba6c2a0b2eed7579465eb55d3bbe9;hpb=55d2b2c2b29ce51f4f910448a115073371deeae8;p=fanfix.git diff --git a/src/jexer/backend/Backend.java b/src/jexer/backend/Backend.java index dbc7c97..eaed7e6 100644 --- a/src/jexer/backend/Backend.java +++ b/src/jexer/backend/Backend.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2016 Kevin Lamonte + * Copyright (C) 2019 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -31,69 +31,74 @@ 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. - */ - protected SessionInfo sessionInfo; - - /** - * Getter for sessionInfo. + * Get a SessionInfo, which exposes text width/height, language, + * username, and other information from the communication stack. * * @return the SessionInfo */ - public final SessionInfo getSessionInfo() { - return sessionInfo; - } + public SessionInfo getSessionInfo(); /** - * The screen to draw on. + * Get a Screen, which displays the text cells to the user. + * + * @return the Screen */ - protected Screen screen; + public Screen getScreen(); /** - * Getter for screen. - * - * @return the Screen + * Classes must provide an implementation that syncs the logical screen + * to the physical device. */ - public final Screen getScreen() { - return screen; - } + public void flushScreen(); /** - * Subclasses must provide an implementation that syncs the logical - * screen to the physical device. + * Check if there are events in the queue. + * + * @return if true, getEvents() has something to return to the application */ - public abstract void flushScreen(); + public boolean hasEvents(); /** - * Subclasses must provide an implementation to get keyboard, mouse, and + * Classes must provide an implementation to get keyboard, mouse, and * screen resize events. * * @param queue list to append new events to */ - public abstract void getEvents(List queue); + 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. */ - public abstract void shutdown(); + public void shutdown(); /** - * Subclasses must provide an implementation that sets the window title. + * Classes must provide an implementation that sets the window title. * * @param title the new title */ - public abstract void setTitle(final String 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(); }