Class EvoLudoGWT

Object
EvoLudo
EvoLudoGWT
All Implemented Interfaces:
MersenneTwister.Chronometer, CLOProvider

public class EvoLudoGWT extends EvoLudo
GWT specific implementation of EvoLudo controller.
Author:
Christoph Hauert
  • Field Details

    • isXML

      public boolean isXML
      true if container document is XHTML
    • isEPub

      public boolean isEPub
      true if part of an ePub
    • ePubStandalone

      public boolean ePubStandalone
      true if standalone EvoLudo lab in ePub
    • ePubHasMouse

      public boolean ePubHasMouse
      true if ePub has mouse device
    • ePubHasTouch

      public boolean ePubHasTouch
      true if ePub has touch device
    • ePubHasKeys

      public boolean ePubHasKeys
      true if ePub has keyboard device
    • snapshotAt

      protected double snapshotAt
      The generation at which to request a snapshot.
    • statisticsAt

      double statisticsAt
      The number of samples after which to stop. If negative no limit is set.
    • elapsedTime

      private final Duration elapsedTime
      Create timer to measure execution times since instantiation.
    • gui

      The reference to the GUI.
    • notifyGUI

      The field to store the command to execute after parsing the command line options.
    • timer

      Timer timer
      Timer for running models.
    • timeReverseMenu

      private ContextMenuCheckBoxItem timeReverseMenu
      The context menu item to reverse time.
    • symDiffMenu

      private ContextMenuCheckBoxItem symDiffMenu
      The context menu item for symmetrical diffusion (only applies to PDE models).
    • fullscreenMenu

      protected ContextMenuCheckBoxItem fullscreenMenu
      The field to store the fullscreen context menu.
    • fullscreenElement

      Element fullscreenElement
      The reference to the fullscreen element.
    • cloGUIFeatures

      public final CLOption cloGUIFeatures
      Command line option to mimic ePub modes and to disable device capabilities.

      Note: for development/debugging only; should be disabled in production

    • cloSnap

      public final CLOption cloSnap
      Command line option to request that the EvoLudo model signals the completion of of the layouting procedure for taking snapshots, e.g. with capture-website.
  • Constructor Details

    • EvoLudoGWT

      public EvoLudoGWT(EvoLudoWeb gui)
      Construct EvoLudo controller for GWT applications (web or ePub).
      Parameters:
      gui - the reference to the GUI
  • Method Details

    • logProgress

      public void logProgress(String msg)
      GWT uses the config channel of the logger to report progress
      Specified by:
      logProgress in class EvoLudo
      Parameters:
      msg - progress message
    • execute

      public void execute(EvoLudo.Directive directive)
      Description copied from class: EvoLudo
      Execute directive in JRE or GWT environments.
      Specified by:
      execute in class EvoLudo
      Parameters:
      directive - the directive to execute in appropriate GWT or JRE manners
    • parseCLO

      public boolean parseCLO(EvoLudo.Directive command)
      Parse command line options and set the command to execute after parsing completed.
      Parameters:
      command - the command to execute after parsing
      Returns:
      true if parsing was successful
    • showHelp

      public void showHelp()
      Description copied from class: EvoLudo
      Show help on command line options.
      Specified by:
      showHelp in class EvoLudo
    • guiReady

      public void guiReady()
      Called when the GUI has finished loading and the dimensions of all elements are known.
    • layoutComplete

      public void layoutComplete()
      Description copied from class: EvoLudo
      Notification from GUI that layout process has finished. Opportunity for taking snapshots.
      Overrides:
      layoutComplete in class EvoLudo
    • run

      public void run()
      Description copied from class: EvoLudo
      Start the EvoLudo model and calculate the dynamics one step at a time.
      Specified by:
      run in class EvoLudo
    • next

      public void next()
      Description copied from class: EvoLudo
      Advances the EvoLudo model by a single step. Called when pressing the 'Step' button, the 'n' or 'right-arrow' key.
      Specified by:
      next in class EvoLudo
    • scheduleSample

      private void scheduleSample()
      Schedule the next sample.
    • scheduleStep

      private void scheduleStep()
      Schedule the next step.
    • fireModuleUnloaded

      public void fireModuleUnloaded()
      Description copied from class: EvoLudo
      Called whenever the current module has finished unloading. Notifies all registered MilestoneListeners.
      Overrides:
      fireModuleUnloaded in class EvoLudo
    • fireModelReset

      public void fireModelReset()
      Description copied from class: EvoLudo
      Called after the model has been reset. Notifies all registered MilestoneListeners.
      Overrides:
      fireModelReset in class EvoLudo
    • fireModelStopped

      public void fireModelStopped()
      Description copied from class: EvoLudo
      Called after the population has reached an absorbing state (or has converged to an equilibrium state). Notifies all registered MilestoneListeners.
      Overrides:
      fireModelStopped in class EvoLudo
    • processPendingAction

      void processPendingAction()
      Description copied from class: EvoLudo
      Helper method for handling model changed events and processes pending actions.
      Overrides:
      processPendingAction in class EvoLudo
      See Also:
    • preprocessCLO

      protected String[] preprocessCLO(String[] cloarray)
      Pre-process array of command line arguments. Some arguments need priority treatment. Examples include the options --module, --verbose or --restore.
      --module
      load module and remove option
      --verbose
      set verbosity level effective immediately. This ensures that issues when parsing the remaining command line options are already properly reported

      The command line arguments stored in a typical .plist file -- in particular when generated by the --export option -- includes this very option. Since JavaScript (GWT) contracts do not permit access to the users file system without explicit user interaction the --export does not make sense. However, it would still be useful to be able to restore the state of such a file in the browser through drag'n'drop. Here we simply check if --export was provided on the command line and discard it if found.

      Overrides:
      preprocessCLO in class EvoLudo
      Parameters:
      cloarray - array of command line arguments
      Returns:
      pre-processed array of command line options
      See Also:
      • EvoLudoJRE.cloExport
    • elapsedTimeMsec

      public int elapsedTimeMsec()
      Description copied from class: EvoLudo
      Calculate elapsed time since instantiation in milliseconds.

      Hide GWT/JRE differences in measuring execution time.

      Specified by:
      elapsedTimeMsec in interface MersenneTwister.Chronometer
      Specified by:
      elapsedTimeMsec in class EvoLudo
      Returns:
      time in milliseconds
      See Also:
    • hirePDESupervisor

      public PDESupervisor hirePDESupervisor(PDE charge)
      Description copied from class: EvoLudo
      Hire supervisor for managing PDE calculations. This is the factory method provide different implementations For GWT and JRE. More specifically, GWT uses asynchronous execution to prevent the GUI from stalling, while JRE implementations take advantage of multiple threads for significantly faster execution due to parallelization.
      Specified by:
      hirePDESupervisor in class EvoLudo
      Parameters:
      charge - the PDE model to supervise
      Returns:
      supervisor for coordinating PDE calculations
      See Also:
    • createNetwork2D

      public Network2D createNetwork2D(Geometry geometry)
      Description copied from class: EvoLudo
      Generate 2D network. This is the factory method to provide different implementations for GWT and JRE. More specifically, the layouting process in GWT uses scheduling (asynchronous execution) to prevent the GUI from stalling, while JRE implementations take advantage of multiple threads for significantly faster execution due to parallelization.
      Specified by:
      createNetwork2D in class EvoLudo
      Parameters:
      geometry - the geometry backing the 2D network
      Returns:
      new instance of a 2D network
    • createNetwork3D

      public Network3D createNetwork3D(Geometry geometry)
      Description copied from class: EvoLudo
      Generate 3D network. This is the factory method to provide different implementations for GWT and JRE. More specifically, the layouting process in GWT uses scheduling (asynchronous execution) to prevent the GUI from stalling, while JRE implementations take advantage of multiple threads for significantly faster execution due to parallelization.

      Note: The java3d package is obsolete. At present no 3D implementation for java exists.

      Specified by:
      createNetwork3D in class EvoLudo
      Parameters:
      geometry - the geometry backing the 3D network
      Returns:
      new instance of a 3D network
    • getGit

      public String getGit()
      Description copied from class: EvoLudo
      Gets current git version of code base.
      Specified by:
      getGit in class EvoLudo
      Returns:
      the git version string
    • getGitDate

      public String getGitDate()
      Description copied from class: EvoLudo
      Gets the compilation date of the current git version.
      Specified by:
      getGitDate in class EvoLudo
      Returns:
      the git compilation date as a string
    • setDelay

      public void setDelay(int delay)
      Description copied from class: EvoLudo
      Set delay between subsequent updates.
      Overrides:
      setDelay in class EvoLudo
      Parameters:
      delay - in milliseconds
    • detectGUIFeatures

      public void detectGUIFeatures()
      Use JSNI helper methods to query and detect features of the execution environment.
      See Also:
    • populateContextMenu

      public void populateContextMenu(ContextMenu menu)
      Opportunity to contribute entries to the context menu for models. this needs to be quarantined in order to not interfere with java simulations.
      Parameters:
      menu - the context menu where entries can be added
    • setFullscreenElement

      public void setFullscreenElement(Element element)
      Set the fullscreen element.
      Parameters:
      element - the element to set as fullscreen
    • setFullscreen

      public void setFullscreen(boolean fullscreen)
      Enter or exit fullscreen mode.
      Parameters:
      fullscreen - true to enter fullscreen
    • restoreFromFile

      public boolean restoreFromFile()
      Restore state of EvoLudo model from saved plist, which encodes engine state.

      Called by Restore... context menu in AbstractView.

      Specified by:
      restoreFromFile in class EvoLudo
      Returns:
      true on successfully restoring state
      See Also:
    • exportState

      public void exportState()
      Export the current state of the engine using the appropriate means available in the current environment (GWT/JRE).

      Note: nudges web browser to download the current state and save it in a file named "evoludo.plist". Export (context menu) suppressed in ePubs.

      Specified by:
      exportState in class EvoLudo
      See Also:
    • collectCLO

      public void collectCLO(CLOParser prsr)
      Description copied from class: EvoLudo
      All providers of command line options must implement this method to collect their options.

      Each command line option is (uniquely) identified by it's name (see CLOption.getName()), which corresponds to the long version of the option. If an attempt is made to add an option with a name that already exists, the parser issues a warning and ignores the option. Thus, in general, implementing subclasses should first register their options and call super.collectCLO(CLOParser) at the end such that subclasses are able to override command line options specified in a parental class.

      Override this method in subclasses to add further command line options. Subclasses must make sure that they include a call to super.

      Note: In contrast to other providers of command line options, the EvoLudo class maintains a reference to the parser (prsr and parser must be identical).

      Specified by:
      collectCLO in interface CLOProvider
      Overrides:
      collectCLO in class EvoLudo
      Parameters:
      prsr - the reference to parser that manages command line options
      See Also: