Interface Luwrain

All Superinterfaces:
HookContainer, PropertiesBase

public interface Luwrain extends PropertiesBase, HookContainer
The main bridge for applications and extensions to communicate with the LUWRAIN core. This class serves as the central hub for applications and extensions to invoke system routines. It ensures that applications and extensions never gain access deeper than what this class provides. Packages like org.luwrain.controls and org.luwrain.popups always encapsulate an instance of the Luwrain class, guaranteeing that they cannot offer more access to the system core than allowed by the provided Luwrain instance.

The core generates a new instance of this class for each newly launched application or loaded extension. This mechanism enables the environment to identify which application or extension has initiated a specific request. Applications receive their associated object through the onLaunch() method, while extensions obtain the corresponding instance through the arguments of the methods they override. It is crucial to keep the provided instance confidential.

It might seem slightly confusing that an extension and the applications launched by it receive different instances of the Luwrain class. However, this distinction is necessary to differentiate multiple instances of the same application, as an extension can be loaded only once.

Different instances of the Luwrain class may offer varying levels of access. This design is essential to ensure that extensions are more precise and transparent in their operations.

  • Field Details

  • Method Details

    • saveConf

      <C> void saveConf(C conf)
    • loadConf

      <C> C loadConf(Class<C> cl)
    • updateConf

      <C> void updateConf(Class<C> configClass, ConfigUpdate<C> func)
    • getDir

      String getDir(String type)
    • announceActiveArea

      void announceActiveArea()
    • callUiSafely

      Object callUiSafely(Callable callable)
    • closeApp

      void closeApp()
    • crash

      void crash(org.luwrain.app.crash.App app)
    • announcement

      boolean announcement(String text, Luwrain.AnnouncementType type, String component, String category, Map<String,String> args)
    • getActiveAreaAttr

      String getActiveAreaAttr(Luwrain.AreaAttr attr)
    • getActiveAreaText

      String getActiveAreaText(Luwrain.AreaTextType type, boolean issueErrorMessage)
    • getAllShortcutNames

      String[] getAllShortcutNames()
    • getAppDataDir

      Path getAppDataDir(String appName)
      Returns a path to the directory where the application may safely store its auxiliary data. The returned directory, if it it isn't null, always exists and always belongs to the current user. Meaning, different users get different directories for the same application. Application must be identified with some short string. We discourage using application names starting with "luwrain.", because such names are usually used by the applications from LUWRAIN standard distribution.
      Parameters:
      appName - A short string for application identification, the same application name will result in the same directory
      Returns:
      The application data directory or null if the directory cannot be created
    • createTempFile

      File createTempFile(String prefix)
    • getAreaVisibleHeight

      int getAreaVisibleHeight(Area area)
    • getAreaVisibleWidth

      int getAreaVisibleWidth(Area area)
    • getClipboard

      Clipboard getClipboard()
    • xGetLoadedSpeechFactories

      String[] xGetLoadedSpeechFactories()
    • getMediaResourcePlayers

      MediaResourcePlayer[] getMediaResourcePlayers()
    • getPlayer

      Player getPlayer()
    • getPath

      String getPath(String pathId)
    • getString

      String getString(String strId)
    • loadScript

      String loadScript(ScriptSource scriptSource) throws ExtensionException
      Throws:
      ExtensionException
    • getScreenWidth

      int getScreenWidth()
    • getScreenHeight

      int getScreenHeight()
    • getUniRefInfo

      UniRefInfo getUniRefInfo(String uniRef)
    • executeBkg

      void executeBkg(Runnable runnable)
    • i18n

      org.luwrain.i18n.I18n i18n()
    • launchApp

      void launchApp(String shortcutName)
    • launchApp

      void launchApp(String shortcutName, String[] args)
    • loadSpeechChannel

      Channel loadSpeechChannel(String engineName, String params) throws SpeechException
      Throws:
      SpeechException
    • message

      void message(String text)
    • message

      void message(String text, Luwrain.MessageType messageType)
    • message

      void message(String text, Sounds sound)
    • createInstance

      <T> T createInstance(Class<T> c)
    • findFetchers

      FileFetcher[] findFetchers(String url)
    • onAreaNewBackgroundSound

      void onAreaNewBackgroundSound(Area area)
    • onAreaNewHotPoint

      void onAreaNewHotPoint(Area area)
      Notifies the environment that the area gets new position of the hot point. This method causes updating of the visual position of the hot point on the screen for low vision users. Please keep in mind that this method doesn't produce any speech announcement of the new position and you should do that on your own, depending on the behaviour of your application.
      Parameters:
      area - The area which gets new position of the hot point
    • onAreaNewContent

      void onAreaNewContent(Area area)
      Notifies the environment that the area gets new content. This method causes updating of the visual representation of the area content on the screen for low vision users. Please keep in mind that this method doesn't produce any speech announcement of the changes and you should do that on your own, depending on the behaviour of your application.
      Parameters:
      area - The area which gets new content
    • onAreaNewName

      void onAreaNewName(Area area)
      Notifies the environment that the area gets new name. This method causes updating of the visual title of the area on the screen for low vision users. Please keep in mind that this method doesn't produce any speech announcement of name changes and you should do that on your own, depending on the behaviour of your application.
      Parameters:
      area - The area which gets new name
    • onNewAreaLayout

      void onNewAreaLayout()
    • openFile

      void openFile(String fileName)
    • openFiles

      void openFiles(String[] fileNames)
    • openHelp

      boolean openHelp(String sectName)
    • openUniRef

      boolean openUniRef(String uniRef)
    • openUniRef

      boolean openUniRef(UniRefInfo uniRefInfo)
    • openUrl

      boolean openUrl(String url)
    • playSound

      void playSound(Sounds sound)
      /** Plays one of the system sounds. This method takes an identifier of the system sound, stops any previous playing, if there was any, and plays. The exact sound is selected depending on user's settings. Please node that sounds playing isn't interfering with speech.
      Parameters:
      sound - The identifier of the sound to play
    • playSound

      void playSound(File file)
    • popup

      void popup(Popup popup)
    • registerExtObj

      boolean registerExtObj(ExtensionObject extObj)
      Registers new extension object. This operation is allowed for highly privileged interfaces only, what, for example, can be useful for custom startup and shutdown procedures. Custom objects may be of any kind, they are registered as they would be a part of the core.
      Parameters:
      extObj - The object to register
      Returns:
      True if the object was successfully registered, false otherwise
      Throws:
      RuntimeException - on any attempt to do this operation without enough privileged level
    • runCommand

      boolean runCommand(String command)
    • newJob

      Job newJob(String name, String[] args, String dir, Set<Luwrain.JobFlags> flags, Job.Listener listener)
    • runLaterSync

      Object runLaterSync(Callable callable)
    • runUiSafely

      void runUiSafely(Runnable runnable)
    • runWorker

      boolean runWorker(String workerName)
    • speak

      void speak(String text)
    • speak

      void speak(String text, Sounds sound)
    • speakLetter

      void speakLetter(char letter)
    • speak

      void speak(String text, int pitch)
    • speak

      void speak(String text, int pitch, int rate)
    • speakLetter

      void speakLetter(char letter, int pitch)
    • sendBroadcastEvent

      void sendBroadcastEvent(SystemEvent event)
    • sendInputEvent

      void sendInputEvent(InputEvent event)
    • setActiveArea

      void setActiveArea(Area area)
      Sets the new active area of the application. This method asks the environment to choose another visible area as an active area of the application. This operation is applicable only to regular areas, not for popup areas, for which it is pointless. In contrast to onAreaNewHotPoint(), onAreaNewName() and onAreaNewContent() methods, this one produces proper introduction of the area being activated.
      Parameters:
      area - The area to choose as an active
    • setEventResponse

      void setEventResponse(EventResponse eventResponse)
    • silence

      void silence()
    • speakLetter

      void speakLetter(char letter, int pitch, int rate)
    • staticStr

      String staticStr(org.luwrain.i18n.LangStatic id)
    • suggestContentType

      String suggestContentType(URL url, ContentTypes.ExpectedType expectedType)
    • getSpeakableText

      String getSpeakableText(String text, Luwrain.SpeakableTextType type)
    • suggestContentType

      String suggestContentType(File file, ContentTypes.ExpectedType expectedType)
    • unloadDynamicExtension

      boolean unloadDynamicExtension(String extId)
    • xQuit

      boolean xQuit()
    • xSetSpeechRate

      void xSetSpeechRate(int value)
    • xGetSpeechRate

      int xGetSpeechRate()
    • xGetSpeechPitch

      int xGetSpeechPitch()
    • xSetSpeechPitch

      void xSetSpeechPitch(int value)
    • showGraphical

      void showGraphical(Interaction.GraphicalMode graphicalMode)
    • getScriptFilesList

      ScriptFile[] getScriptFilesList(String componentName)
    • escapeString

      String escapeString(String style, String text)