AnyLogic
Expand
Font size
All Known Implementing Classes:
ExperimentHost

public interface IExperimentHost
Object of this interface is responsible for various actions regarding AnyLogic Model animation and graphical user interface.
Author:
AnyLogic North America, LLC https://anylogic.com

Nested Class Summary

Modifier and TypeInterfaceDescription
static interface IExperimentHost.IValue
Used for converting String/JSON input data to arbitrary java classes requested by Engine.

Method Summary

Modifier and TypeMethodDescription
voidaddInspect(double x, double y, Presentable p, String name)
Creates an inspect window at a particular location for an element of a Presentable object.
ObjectcallFunction(String pathtofunction, IExperimentHost.IValue... args) 
voidclose()
This method returns immediately and performs the following actions in a separate thread: stops experiment if it is not stopped, destroys the model and closes experiment window (only if model is started in the application mode)
voidcopyToClipboard(String text)
Copies the given text to the system clipboard
Due to the security policy of the browser, the actual copying may be preceded by a prompt.
voidexecuteCommand(String cmd, String parameters) 
voidexecuteUserAction(long id, String value) 
LaunchConfigurationgetConfiguration() 
Experiment<?>getExperiment()
Returns the experiment associated with this host.
Experiment.StategetExperimentState() 
longgetNextFrameNumber() 
PresentablegetPresentable()
Returns the current top-level object (Agent or Experiment), whose presentation is displayed.
doublegetProgress() 
AnimationPacketgetUpdate(boolean fullFrame) 
ObjectgetValue(String pathtofield) 
booleanisRunControlEnabled()
Tests if Run, Pause, and Stop buttons on the model toolbar are enabled.
booleanisSpeedControlEnabled()
Tests if the model execution speed control buttons on the model toolbar are enabled.
booleanisZoomAndPanningEnabled()
Tests if zoom & panning from the GUI is enabled.
default voidlaunch() 
voidlaunch(boolean startServer, boolean startExperiment)
Creates and optionally runs experiment, starts frame collection
default voidloadSnapshot(String fileName)
Stops experiment and loads snapshot (in its 'not running' state), doesn't resume simulation of loaded snapshot.
On any error throws nothing, silently rollbacks to the current experiment and resumes it if it was running.
voidloadSnapshot(String fileName, Runnable successfulCallback, Consumer<Throwable> errorCallback)
Stops experiment and loads snapshot (in its 'not running' state), doesn't resume simulation of loaded snapshot.
On any error throws nothing, silently rollbacks to the current experiment and resumes it if it was running.

When snapshot is loaded, presentation forgets everything about the model which was running before (including the engine, experiment and agents), therefore, it is recommended not to keep references to model objects after this method call
Usage example:
voidnavigateHome()
Navigates presentation home, i.e.
voidnavigateTo(ViewArea viewArea)
Shows the given view area in the model animation panel
voidonAgentDestroyed_xjal(Agent ao)
A callback called by the engine when an agent is being destroyed.
voidopenWebSite(String url)
Opens web page with the given URL in the browser
voidpostExperimentSettings() 
voidremoveInspect(Presentable p, String name)
Removes the inspect window for the given element
default voidsaveSnapshot(String fileName)
Pauses experiment if it is currently running, saves snapshot and then resumes experiment if it was running
On any error throws nothing.
voidsaveSnapshot(String fileName, Runnable successfulCallback, Consumer<Throwable> errorCallback)
Pauses experiment if it is currently running, saves snapshot and then resumes experiment if it was running
On any error throws nothing.
Usage example:
voidsetCenter(double x, double y)
Centers the animation view to the given x and y (in the model coordinates)
voidsetDeveloperPanelEnabled(boolean developerPanelEnabled)
Enables or disables the developer panel.
voidsetDeveloperPanelVisibleOnStart(boolean developerPanelVisibleOnStart)
Shows (if enabled) the developer panel when the model window is shown.
voidsetMaxFPS(double maxFPS) 
voidsetPresentable(Presentable presentable)
Sets a new top-level object (Agent or Experiment) to be displayed and navigates to its home point.
voidsetRunControlEnabled(boolean runControlEnabled)
Enables or disables Run, Pause, and Stop buttons on the model toolbar (but not in the developer panel), and sets the corresponding tooltips.
voidsetSendConsoleItems(boolean yes) 
voidsetSpeed(double speed) 
voidsetSpeedControlEnabled(boolean speedControlEnabled)
Enables or disables the model execution speed control buttons on the model toolbar (but not in the developer panel), and sets the corresponding tooltips.
voidsetValue(String pathtofield, IExperimentHost.IValue value) 
voidsetZoomAndPanningEnabled(boolean zoomAndPanningEnabled)
Enables or disables zoom & panning initiated from the GUI (button.
voidshowErrorDialog(String text, String title)
Shows a standard error dialog box with the given text.
voidshowErrorInModelDialog(String text, String title)
Shows a standard 'error in model logic' dialog box with the given text.
voidshowMessageDialog(String text)
Shows a standard message dialog box with the given text.
voidzoomIn(double coefficient)
Zooms in the animation view by the given amount
voidzoomOut(double coefficient)
Zooms out the animation view by the given amount

Method Details

setPresentable

void setPresentable(Presentable presentable)
Sets a new top-level object (Agent or Experiment) to be displayed and navigates to its home point.
Parameters:
presentable - the new top-level object to be displayed

getPresentable

Presentable getPresentable()
Returns the current top-level object (Agent or Experiment), whose presentation is displayed.
Returns:
the current top-level object being displayed, or null

getExperiment

Experiment<?> getExperiment()
Returns the experiment associated with this host.
Returns:
the experiment associated with this host

zoomIn

void zoomIn(double coefficient)
Zooms in the animation view by the given amount
Parameters:
coefficient - how much to zoom in, positive number. E.g. 2.0 will result in 2x scaling compared to the current view

zoomOut

void zoomOut(double coefficient)
Zooms out the animation view by the given amount
Parameters:
coefficient - how much to zoom out, positive number. E.g. 2.0 will result in 0.5x scaling compared to the current view

setCenter

void setCenter(double x,
 double y)
Centers the animation view to the given x and y (in the model coordinates)
Parameters:
x - the x to be centered
y - the y to be centered

setZoomAndPanningEnabled

void setZoomAndPanningEnabled(boolean zoomAndPanningEnabled)
Enables or disables zoom & panning initiated from the GUI (button. mouse, or keyboard).
Parameters:
zoomAndPanningEnabled - if true, zoom & panning should be enabled, if false - disabled

isZoomAndPanningEnabled

boolean isZoomAndPanningEnabled()
Tests if zoom & panning from the GUI is enabled.
Returns:
true if zoom & panning are enabled, false if not.

setDeveloperPanelEnabled

void setDeveloperPanelEnabled(boolean developerPanelEnabled)
Enables or disables the developer panel.
Parameters:
developerPanelEnabled - if false, there will be no button to show the developer panel

setDeveloperPanelVisibleOnStart

void setDeveloperPanelVisibleOnStart(boolean developerPanelVisibleOnStart)
Shows (if enabled) the developer panel when the model window is shown.
Parameters:
developerPanelVisibleOnStart - if true, the panel will be visible from the beginning, and may be later hidden by pressing the special button.

setRunControlEnabled

void setRunControlEnabled(boolean runControlEnabled)
Enables or disables Run, Pause, and Stop buttons on the model toolbar (but not in the developer panel), and sets the corresponding tooltips.
Parameters:
runControlEnabled - if false, those buttons will be disabled

isRunControlEnabled

boolean isRunControlEnabled()
Tests if Run, Pause, and Stop buttons on the model toolbar are enabled.
Returns:
true if they are enabled, false if not.

setSpeedControlEnabled

void setSpeedControlEnabled(boolean speedControlEnabled)
Enables or disables the model execution speed control buttons on the model toolbar (but not in the developer panel), and sets the corresponding tooltips.
Parameters:
speedControlEnabled - if false, those buttons will be disabled

isSpeedControlEnabled

boolean isSpeedControlEnabled()
Tests if the model execution speed control buttons on the model toolbar are enabled.
Returns:
true if they are enabled, false if not.

addInspect

void addInspect(double x,
 double y,
 Presentable p,
 String name)
Creates an inspect window at a particular location for an element of a Presentable object. If there is another inspect with the same Presentable and same element name, it is brought to front and a new inspect is not created. The initial size of the window is adjusted to fit the initial contents.
Parameters:
x - the x coordinate in the presentable object system
y - the y coordinate in the presentable object system
p - the Presentable object whose element is being inspected
name - the name of the element being inspected

removeInspect

void removeInspect(Presentable p,
 String name)
Removes the inspect window for the given element
Parameters:
p - the Presentable object whose element is being inspected
name - the name of the element being inspected

showMessageDialog

void showMessageDialog(String text)
Shows a standard message dialog box with the given text. This method usually returns immediately - it doesn't wait for the dialog to be closed (except the cases when called from UI thread)
Parameters:
text - the text to display

showErrorDialog

@AnyLogicInternalAPI
void showErrorDialog(String text,
 String title)
Shows a standard error dialog box with the given text. This method usually returns immediately - it doesn't wait for the dialog to be closed (except the cases when called from UI thread)
Parameters:
text - the text to display
title - title of the dialog window

showErrorInModelDialog

@AnyLogicInternalAPI
void showErrorInModelDialog(String text,
 String title)
Shows a standard 'error in model logic' dialog box with the given text. This method usually returns immediately - it doesn't wait for the dialog to be closed (except the cases when called from UI thread)
Parameters:
text - the text to display
title - title of the dialog window

openWebSite

void openWebSite(String url)
Opens web page with the given URL in the browser
Parameters:
url - the url to open

copyToClipboard

void copyToClipboard(String text)
Copies the given text to the system clipboard
Due to the security policy of the browser, the actual copying may be preceded by a prompt.
Parameters:
text - the text to copy

saveSnapshot

default void saveSnapshot(String fileName)
Pauses experiment if it is currently running, saves snapshot and then resumes experiment if it was running
On any error throws nothing. If you need "on success" notification and/or custom error processing, please saveSnapshot(String, Runnable, Consumer) function with callbacks

This method is only available in the AnyLogic Professional
Parameters:
fileName - the name of snapshot file

saveSnapshot

void saveSnapshot(String fileName,
 Runnable successfulCallback,
 Consumer<Throwable> errorCallback)
Pauses experiment if it is currently running, saves snapshot and then resumes experiment if it was running
On any error throws nothing.
Usage example:
 getExperimentHost().saveSnapshot(
                "file.als",
                () -> traceln("Saved!"),
                e -> {
                        traceln("Error!");
                        e.printStackTrace();
                }
 );
 

This method is only available in the AnyLogic Professional
Parameters:
fileName - the name of snapshot file
successfulCallback - called when snapshot is successfully saved
errorCallback - called in case of any error

loadSnapshot

default void loadSnapshot(String fileName)
Stops experiment and loads snapshot (in its 'not running' state), doesn't resume simulation of loaded snapshot.
On any error throws nothing, silently rollbacks to the current experiment and resumes it if it was running. If you need "on success" notification and/or custom error processing, please loadSnapshot(String, Runnable, Consumer) function with callbacks

When snapshot is loaded, presentation forgets everything about the model which was running before (including the engine, experiment and agents), therefore, it is recommended not to keep references to model objects after this method call

This method is only available in the AnyLogic Professional
Parameters:
fileName - the name of snapshot file

loadSnapshot

void loadSnapshot(String fileName,
 Runnable successfulCallback,
 Consumer<Throwable> errorCallback)
Stops experiment and loads snapshot (in its 'not running' state), doesn't resume simulation of loaded snapshot.
On any error throws nothing, silently rollbacks to the current experiment and resumes it if it was running.

When snapshot is loaded, presentation forgets everything about the model which was running before (including the engine, experiment and agents), therefore, it is recommended not to keep references to model objects after this method call
Usage example:
 getExperimentHost().loadSnapshot(
                "file.als",
                () -> {
                        traceln("Loaded!");
                        getExperimentHost().setPresentable(
                                getExperiment().getEngine().getRoot()
                        );
                        getExperiment().run();
                },
                e -> {
                        traceln("Error!");
                        e.printStackTrace();
                }
 );
 

This method is only available in the AnyLogic Professional
Parameters:
fileName - the name of snapshot file

close

void close()
This method returns immediately and performs the following actions in a separate thread:
  • stops experiment if it is not stopped,
  • destroys the model and
  • closes experiment window (only if model is started in the application mode)

launch

@AnyLogicInternalAPI
void launch(boolean startServer,
 boolean startExperiment)
Creates and optionally runs experiment, starts frame collection
Parameters:
startServer - TODO

launch

default void launch()

getConfiguration

@AnyLogicInternalAPI
LaunchConfiguration getConfiguration()

getUpdate

@AnyLogicInternalAPI
AnimationPacket getUpdate(boolean fullFrame)

getNextFrameNumber

@AnyLogicInternalAPI
long getNextFrameNumber()

executeUserAction

@AnyLogicInternalAPI
void executeUserAction(long id,
 String value)

executeCommand

@AnyLogicInternalAPI
void executeCommand(String cmd,
 String parameters)

getExperimentState

@AnyLogicInternalAPI
Experiment.State getExperimentState()

setValue

@AnyLogicInternalAPI
void setValue(String pathtofield,
 IExperimentHost.IValue value)

getValue

@AnyLogicInternalAPI
Object getValue(String pathtofield)

callFunction

@AnyLogicInternalAPI
Object callFunction(String pathtofunction,
 IExperimentHost.IValue... args)

getProgress

@AnyLogicInternalAPI
double getProgress()

setSpeed

@AnyLogicInternalAPI
void setSpeed(double speed)

setMaxFPS

@AnyLogicInternalAPI
void setMaxFPS(double maxFPS)

setSendConsoleItems

@AnyLogicInternalAPI
void setSendConsoleItems(boolean yes)

postExperimentSettings

@AnyLogicInternalAPI
void postExperimentSettings()

onAgentDestroyed_xjal

@AnyLogicInternalAPI
void onAgentDestroyed_xjal(Agent ao)
A callback called by the engine when an agent is being destroyed. If that agent is currently displayed by the presentation, display experiment.
Parameters:
ao - the agent being destroyed