Package org.beryx.textio.web
Class WebTextTerminal
- java.lang.Object
-
- org.beryx.textio.AbstractTextTerminal<WebTextTerminal>
-
- org.beryx.textio.web.WebTextTerminal
-
- All Implemented Interfaces:
TextTerminal<WebTextTerminal>,DataApi
public class WebTextTerminal extends AbstractTextTerminal<WebTextTerminal> implements DataApi
ATextTerminalthat allows accessing the application via a browser. It works only in conjunction with a web server supporting theDataApi(such asSparkDataServer) and a web component that accesses this API (typically via textterm.js).
-
-
Field Summary
Fields Modifier and Type Field Description static longDEFAULT_TIMEOUT_DATA_CLEAREDstatic longDEFAULT_TIMEOUT_HAS_ACTIONstatic longDEFAULT_TIMEOUT_NOT_EMPTY-
Fields inherited from class org.beryx.textio.AbstractTextTerminal
DEFAULT_USER_INTERRUPT_KEY, SYSPROP_PROPERTIES_FILE_LOCATION
-
-
Constructor Summary
Constructors Constructor Description WebTextTerminal()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidabort()This method is typically called when a text-based input/output session has been aborted by the user or when a severe error occurred.voidaddSetting(java.lang.String key, java.lang.Object value)voidaddSettings(TextTerminalData.KeyValue... keyValues)WebTextTerminalcreateCopy()voiddispose(java.lang.String resultData)This method is typically called at the end of a text-based input/output session in order to allow the terminal to release its screen resources.TextTerminalDatagetTextTerminalData()This method is called by the web component while polling for databooleanmoveToLineStart()Moves the cursor to the start of the current line of text in order to allow overwriting the current line.voidpostHandlerCall(java.lang.String handlerId, java.lang.String partialInput)This method is called by the web component in response to a handler call (triggered by typing its associated key combination).voidpostUserInput(java.lang.String newInput)This method is called by the web component to post the user inputvoidpostUserInput(java.lang.String newInput, boolean userInterrupt, java.lang.String handlerId)voidpostUserInterrupt(java.lang.String partialInput)This method is called by the web component in response to a user interrupt (typically triggered by typing Ctrl+Q).voidprintln()Terminates the current line by writing the line separator string.voidrawPrint(java.lang.String message)Prints the message in its raw form.java.lang.Stringread(boolean masking)Reads a line of textbooleanregisterHandler(java.lang.String keyStroke, java.util.function.Function<WebTextTerminal,ReadHandlerData> handler)Associates a key combination to a handler.booleanregisterUserInterruptHandler(java.util.function.Consumer<WebTextTerminal> handler, boolean abortRead)Registers a handler that will be called in response to a user interrupt.booleanresetLine()Clears the current line of text.booleanresetToBookmark(java.lang.String bookmark)Clears the text after the given bookmark.protected voidsetAction(TextTerminalData.Action action)protected voidsetAction(TextTerminalData.Action action, java.lang.String actionData)booleansetBookmark(java.lang.String bookmark)Sets a bookmark with the given name at the current position.voidsetOnAbort(java.lang.Runnable onAbort)voidsetOnDispose(java.lang.Runnable onDispose)voidsetTimeoutDataCleared(long timeoutDataCleared)voidsetTimeoutHasAction(long timeoutHasAction)voidsetTimeoutNotEmpty(long timeoutNotEmpty)voidsetUserInterruptKey(int code, boolean ctrl, boolean shift, boolean alt)voidsetUserInterruptKey(java.lang.String keyStroke)-
Methods inherited from class org.beryx.textio.AbstractTextTerminal
addDefaultProperty, getDefaultProperties, getProperties, getPropertiesPrefixes, getPropertiesReader, init, initProperties, initProperties, initProperties
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.beryx.textio.TextTerminal
applyWithPropertiesConfigurator, dispose, executeWithPropertiesConfigurator, executeWithPropertiesPrefix, print, print, printf, printf, println, println, rawPrint
-
-
-
-
Field Detail
-
DEFAULT_TIMEOUT_NOT_EMPTY
public static final long DEFAULT_TIMEOUT_NOT_EMPTY
- See Also:
- Constant Field Values
-
DEFAULT_TIMEOUT_HAS_ACTION
public static final long DEFAULT_TIMEOUT_HAS_ACTION
- See Also:
- Constant Field Values
-
DEFAULT_TIMEOUT_DATA_CLEARED
public static final long DEFAULT_TIMEOUT_DATA_CLEARED
- See Also:
- Constant Field Values
-
-
Method Detail
-
setTimeoutNotEmpty
public void setTimeoutNotEmpty(long timeoutNotEmpty)
-
setTimeoutHasAction
public void setTimeoutHasAction(long timeoutHasAction)
-
setTimeoutDataCleared
public void setTimeoutDataCleared(long timeoutDataCleared)
-
createCopy
public WebTextTerminal createCopy()
-
dispose
public void dispose(java.lang.String resultData)
Description copied from interface:TextTerminalThis method is typically called at the end of a text-based input/output session in order to allow the terminal to release its screen resources. The terminal should be able to rebuild the released resources when a print or read method is subsequently called. The default implementation does nothing.- Specified by:
disposein interfaceTextTerminal<WebTextTerminal>- Parameters:
resultData- stringified information about the outcome of the input/output session; may be null,
-
abort
public void abort()
Description copied from interface:TextTerminalThis method is typically called when a text-based input/output session has been aborted by the user or when a severe error occurred. The default implementation does nothing.- Specified by:
abortin interfaceTextTerminal<WebTextTerminal>
-
resetLine
public boolean resetLine()
Description copied from interface:TextTerminalClears the current line of text. Since not all terminals support this feature, the default implementation callsTextTerminal.println()and returns false.- Specified by:
resetLinein interfaceTextTerminal<WebTextTerminal>- Returns:
- true, if the terminal supports this feature and the current line has been successfully cleared.
-
moveToLineStart
public boolean moveToLineStart()
Description copied from interface:TextTerminalMoves the cursor to the start of the current line of text in order to allow overwriting the current line. Since not all terminals support this feature, the default implementation callsTextTerminal.println()and returns false.- Specified by:
moveToLineStartin interfaceTextTerminal<WebTextTerminal>- Returns:
- true, if the terminal supports this feature and the cursor has been moved to the start of the current line.
-
setBookmark
public boolean setBookmark(java.lang.String bookmark)
Description copied from interface:TextTerminalSets a bookmark with the given name at the current position. The bookmark name can be subsequently used in a call toTextTerminal.resetToBookmark(String)in order to clear the text after this bookmark. If a bookmark with this name already exists, it will be overwritten. Since not all terminals support this feature, the default implementation does nothing and returns false.- Specified by:
setBookmarkin interfaceTextTerminal<WebTextTerminal>- Returns:
- true, if the terminal supports bookmarking and the bookmark has been successfully set.
-
resetToBookmark
public boolean resetToBookmark(java.lang.String bookmark)
Description copied from interface:TextTerminalClears the text after the given bookmark. The bookmark name can be subsequently used in a call toTextTerminal.resetToBookmark(String)in order to clear the text after this bookmark. Since not all terminals support this feature, the default implementation callsTextTerminal.println()and returns false.- Specified by:
resetToBookmarkin interfaceTextTerminal<WebTextTerminal>- Returns:
- true, if the terminal supports bookmarking, the given bookmark exists and the text after it has been successfully cleared.
-
setOnDispose
public void setOnDispose(java.lang.Runnable onDispose)
-
setOnAbort
public void setOnAbort(java.lang.Runnable onAbort)
-
read
public java.lang.String read(boolean masking)
Description copied from interface:TextTerminalReads a line of text- Specified by:
readin interfaceTextTerminal<WebTextTerminal>- Parameters:
masking- true, if the input should be masked (for example to enter a password)- Returns:
- the entered text
-
setAction
protected void setAction(TextTerminalData.Action action)
-
setAction
protected void setAction(TextTerminalData.Action action, java.lang.String actionData)
-
rawPrint
public void rawPrint(java.lang.String message)
Description copied from interface:TextTerminalPrints the message in its raw form. This method expects a single line of text. The behavior is undefined if the string contains line separators.- Specified by:
rawPrintin interfaceTextTerminal<WebTextTerminal>
-
println
public void println()
Description copied from interface:TextTerminalTerminates the current line by writing the line separator string.- Specified by:
printlnin interfaceTextTerminal<WebTextTerminal>
-
registerUserInterruptHandler
public boolean registerUserInterruptHandler(java.util.function.Consumer<WebTextTerminal> handler, boolean abortRead)
Description copied from interface:TextTerminalRegisters a handler that will be called in response to a user interrupt. The event that triggers a user interrupt is usually Ctrl+C, but in general it is terminal specific. For example, a Swing based terminal may send a user interrupt when the X close button of its window is hit. Since not all terminals support this feature, the default implementation just returns false.- Specified by:
registerUserInterruptHandlerin interfaceTextTerminal<WebTextTerminal>- Parameters:
handler- the action to be performed in response to a user interrupt.abortRead- true, if the current read operation should be aborted on user interrupt.- Returns:
- true, if the terminal supports this feature and the handler has been registered; false, otherwise.
-
registerHandler
public boolean registerHandler(java.lang.String keyStroke, java.util.function.Function<WebTextTerminal,ReadHandlerData> handler)Description copied from interface:TextTerminalAssociates a key combination to a handler. Since not all terminals support this feature, the default implementation just returns false.- Specified by:
registerHandlerin interfaceTextTerminal<WebTextTerminal>- Parameters:
keyStroke- the key combination associated with the handler. It should have the same format as the argument ofKeyStroke.getKeyStroke(String).handler- the action to be performed when thekeyStrokeis detected during a read operation.- Returns:
- true, if the terminal supports this feature and the handler has been associated with the given key combination; false, otherwise.
-
getTextTerminalData
public TextTerminalData getTextTerminalData()
Description copied from interface:DataApiThis method is called by the web component while polling for data- Specified by:
getTextTerminalDatain interfaceDataApi
-
postUserInput
public void postUserInput(java.lang.String newInput, boolean userInterrupt, java.lang.String handlerId)
-
postUserInput
public void postUserInput(java.lang.String newInput)
Description copied from interface:DataApiThis method is called by the web component to post the user input- Specified by:
postUserInputin interfaceDataApi
-
postUserInterrupt
public void postUserInterrupt(java.lang.String partialInput)
Description copied from interface:DataApiThis method is called by the web component in response to a user interrupt (typically triggered by typing Ctrl+Q).- Specified by:
postUserInterruptin interfaceDataApi- Parameters:
partialInput- the partially entered input when the user interrupt occurred.
-
postHandlerCall
public void postHandlerCall(java.lang.String handlerId, java.lang.String partialInput)Description copied from interface:DataApiThis method is called by the web component in response to a handler call (triggered by typing its associated key combination).- Specified by:
postHandlerCallin interfaceDataApi- Parameters:
handlerId- the id of the handler to be called.partialInput- the partially entered input when the hander call occurred.
-
setUserInterruptKey
public void setUserInterruptKey(java.lang.String keyStroke)
-
addSetting
public void addSetting(java.lang.String key, java.lang.Object value)
-
addSettings
public void addSettings(TextTerminalData.KeyValue... keyValues)
-
setUserInterruptKey
public void setUserInterruptKey(int code, boolean ctrl, boolean shift, boolean alt)
-
-