home *** CD-ROM | disk | FTP | other *** search
- package netscape.constructor;
-
- import netscape.application.Target;
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
- import netscape.util.Enumeration;
- import netscape.util.Hashtable;
-
- public class Script implements Target, Codable {
- Target target;
- String script;
- String command;
- boolean running;
- static ScriptController scriptController = null;
- boolean usingLiveConnect;
- Hashtable namedObjects;
- public static final String RUN_COMMAND = "runScript";
- static final String SCRIPT_KEY = "JavaScript";
- static final String TARGET_KEY = "onScriptFinish";
- static final String COMMAND_KEY = "command";
- static final String LIVECONNECT_KEY = "liveConnect";
-
- public Script() {
- this.setScriptText("");
- this.usingLiveConnect = true;
- }
-
- public Script(String var1) {
- this.setScriptText(var1);
- this.usingLiveConnect = true;
- }
-
- public void setScriptText(String var1) {
- this.script = var1;
- }
-
- public String scriptText() {
- return this.script;
- }
-
- public void setTarget(Target var1) {
- this.target = var1;
- }
-
- public Target target() {
- return this.target;
- }
-
- public void setCommand(String var1) {
- this.command = var1;
- }
-
- public String command() {
- return this.command;
- }
-
- public void setUsingLiveConnect(boolean var1) {
- this.usingLiveConnect = var1;
- }
-
- public boolean isUsingLiveConnect() {
- return this.usingLiveConnect;
- }
-
- public Hashtable namedObjects() {
- return this.namedObjects;
- }
-
- public void setNamedObjects(Hashtable var1) {
- if (var1 != null) {
- this.namedObjects = (Hashtable)var1.clone();
- } else {
- this.namedObjects = null;
- }
- }
-
- synchronized void setRunning(boolean var1) {
- this.running = var1;
- if (this.isUsingLiveConnect()) {
- if (this.running) {
- this.setNames(this.namedObjects());
- return;
- }
-
- this.removeNames(this.namedObjects());
- }
-
- }
-
- public synchronized boolean isRunning() {
- return this.running;
- }
-
- public void run() {
- this.setRunning(true);
- if (scriptController().canEval()) {
- try {
- scriptController.eval(this.script);
- } catch (Exception var2) {
- System.err.println("ScriptController.eval() failed for: " + this);
- System.err.println(" " + var2 + ": message: " + ((Throwable)var2).getMessage());
- }
- } else {
- System.err.println("Could not call ScriptController.eval() for: " + this);
- }
-
- this.setRunning(false);
- if (this.target != null && this.command != null) {
- this.target.performCommand(this.command, this);
- }
-
- }
-
- public void performCommand(String var1, Object var2) {
- if ("runScript".equals(var1)) {
- this.run();
- }
-
- }
-
- public boolean setNames(Hashtable var1) {
- if (var1 != null && scriptController().canEval()) {
- Enumeration var2 = var1.keys();
-
- while(var2.hasMoreElements()) {
- Object var3 = var2.nextElement();
-
- try {
- scriptController.setMember((String)var3, var1.get(var3));
- } catch (Exception var5) {
- System.err.println("Could not setMember to JavaScript" + var5 + " - " + ((Throwable)var5).getMessage());
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
-
- public boolean removeNames(Hashtable var1) {
- if (var1 != null && scriptController().canEval()) {
- Enumeration var2 = var1.keys();
-
- while(var2.hasMoreElements()) {
- Object var3 = var2.nextElement();
-
- try {
- scriptController.removeMember((String)var3);
- } catch (Exception var5) {
- System.err.println("Could not removeMember to JavaScript" + var5 + " - " + ((Throwable)var5).getMessage());
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
-
- static ScriptController scriptController() {
- if (scriptController == null) {
- scriptController = ScriptController.controller();
- }
-
- return scriptController;
- }
-
- public void describeClassInfo(ClassInfo var1) {
- var1.addClass("netscape.constructor.Script", 2);
- var1.addField("JavaScript", (byte)16);
- var1.addField("onScriptFinish", (byte)18);
- var1.addField("command", (byte)16);
- var1.addField("liveConnect", (byte)0);
- }
-
- public void encode(Encoder var1) throws CodingException {
- var1.encodeString("JavaScript", this.script);
- var1.encodeObject("onScriptFinish", (Codable)this.target);
- var1.encodeString("command", this.command);
- var1.encodeBoolean("liveConnect", this.usingLiveConnect);
- }
-
- public void decode(Decoder var1) throws CodingException {
- this.script = var1.decodeString("JavaScript");
- this.target = (Target)var1.decodeObject("onScriptFinish");
- this.command = var1.decodeString("command");
- if (var1.versionForClassName("netscape.constructor.Script") > 1) {
- this.usingLiveConnect = var1.decodeBoolean("liveConnect");
- } else {
- this.usingLiveConnect = true;
- }
- }
-
- public void finishDecoding() throws CodingException {
- }
- }
-