com.frinika.project.scripting
Class FrinikaScriptingEngine

java.lang.Object
  extended by 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

Field Summary
static java.io.File GLOBAL_PROPERTIES_FILE
           
protected  java.util.Properties persistent
           
protected  ProjectContainer project
           
protected  java.util.Collection<FrinikaScript> scripts
           
 
Constructor Summary
FrinikaScriptingEngine(ProjectContainer project)
          Constructor.
 
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
 

Field Detail

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
Constructor Detail

FrinikaScriptingEngine

public FrinikaScriptingEngine(ProjectContainer project)
Constructor. One instance per ProjectContainer (1:1).

Parameters:
project -
Method Detail

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