com.frinika.project.scripting
Class FrinikaScriptingEngine
java.lang.Object
com.frinika.project.scripting.FrinikaScriptingEngine
- All Implemented Interfaces:
- ScriptContainer, java.io.Serializable
public class FrinikaScriptingEngine
- extends java.lang.Object
- implements ScriptContainer, java.io.Serializable
Scriptig-engine for Frinika. The static elements of this class handle
application-wide script-execution. the instance elements of this class
provide a script container which can be (de)serialized along with
ProjectContainer. Although the execution of scripts is handled globally,
each script runs inside it's associated project's focus, and the set of
scripts which are currently loaded and thus available for execution is
project-specific.
The architecture allows for deploying multiple scripting languages, but
the only language used for scripting now is JavaScript, and there are no
plans to add support for any other languages.
The actual interfacing between the 'Frinika world' and the 'JavaScript
world' is done by class com.frinika.project.scripting.javascript.JavascriptScope.
- Author:
- Jens Gulden
- See Also:
JavascriptScope
,
Serialized Form
Method Summary |
void |
addScript(FrinikaScript script)
|
static void |
addScriptListener(ScriptListener l)
Adds a ScriptListener. |
protected static java.lang.Object |
executeJavascript(java.lang.String source,
java.lang.String name,
ProjectFrame frame,
java.util.SortedSet<MultiEvent> events,
ScriptingDialog dialog)
|
static void |
executeScript(FrinikaScript script,
ProjectFrame frame,
ScriptingDialog dialog)
|
java.util.Properties |
getPersistentProperties()
|
java.util.Collection<FrinikaScript> |
getScripts()
|
static java.lang.String |
globalGet(java.lang.String variable)
|
static void |
globalPut(java.lang.String variable,
java.lang.String value)
|
FrinikaScript |
loadScript(java.io.File file)
|
static java.lang.String |
loadString(java.io.File file)
|
protected static void |
notifyScriptListeners(FrinikaScript script,
java.lang.Object returnValue)
|
void |
removeScript(FrinikaScript script)
|
static void |
removeScriptListener(ScriptListener l)
|
void |
saveScript(FrinikaScript script,
java.io.File file)
|
static void |
saveString(java.lang.String s,
java.io.File file)
|
static void |
stopScript(FrinikaScript script)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
GLOBAL_PROPERTIES_FILE
public static final java.io.File GLOBAL_PROPERTIES_FILE
scripts
protected java.util.Collection<FrinikaScript> scripts
project
protected ProjectContainer project
persistent
protected java.util.Properties persistent
FrinikaScriptingEngine
public FrinikaScriptingEngine(ProjectContainer project)
- Constructor. One instance per ProjectContainer (1:1).
- Parameters:
project
-
executeScript
public static void executeScript(FrinikaScript script,
ProjectFrame frame,
ScriptingDialog dialog)
stopScript
public static void stopScript(FrinikaScript script)
executeJavascript
protected static java.lang.Object executeJavascript(java.lang.String source,
java.lang.String name,
ProjectFrame frame,
java.util.SortedSet<MultiEvent> events,
ScriptingDialog dialog)
addScriptListener
public static void addScriptListener(ScriptListener l)
- Adds a ScriptListener. This method is static, as scripts can potentially affect the whole running system,
across projects, so it doesn't make sense to restrict references to scripts to individual projects.
- Parameters:
l
-
removeScriptListener
public static void removeScriptListener(ScriptListener l)
notifyScriptListeners
protected static void notifyScriptListeners(FrinikaScript script,
java.lang.Object returnValue)
- Parameters:
script
- returnValue
- if ==this, then 'script has started', else 'script as exited'
globalPut
public static void globalPut(java.lang.String variable,
java.lang.String value)
globalGet
public static java.lang.String globalGet(java.lang.String variable)
getScripts
public java.util.Collection<FrinikaScript> getScripts()
- Specified by:
getScripts
in interface ScriptContainer
addScript
public void addScript(FrinikaScript script)
- Specified by:
addScript
in interface ScriptContainer
removeScript
public void removeScript(FrinikaScript script)
- Specified by:
removeScript
in interface ScriptContainer
getPersistentProperties
public java.util.Properties getPersistentProperties()
loadScript
public FrinikaScript loadScript(java.io.File file)
throws java.io.IOException
- Throws:
java.io.IOException
saveScript
public void saveScript(FrinikaScript script,
java.io.File file)
throws java.io.IOException
- Throws:
java.io.IOException
loadString
public static java.lang.String loadString(java.io.File file)
throws java.io.IOException
- Throws:
java.io.IOException
saveString
public static void saveString(java.lang.String s,
java.io.File file)
throws java.io.IOException
- Throws:
java.io.IOException