home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / INTERNET / NETSCAP4.06 / CP32E406.EXE / nav40.z / ifc11.jar / netscape / constructor / Script.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-08-13  |  5.1 KB  |  203 lines

  1. package netscape.constructor;
  2.  
  3. import netscape.application.Target;
  4. import netscape.util.ClassInfo;
  5. import netscape.util.Codable;
  6. import netscape.util.CodingException;
  7. import netscape.util.Decoder;
  8. import netscape.util.Encoder;
  9. import netscape.util.Enumeration;
  10. import netscape.util.Hashtable;
  11.  
  12. public class Script implements Target, Codable {
  13.    Target target;
  14.    String script;
  15.    String command;
  16.    boolean running;
  17.    static ScriptController scriptController = null;
  18.    boolean usingLiveConnect;
  19.    Hashtable namedObjects;
  20.    public static final String RUN_COMMAND = "runScript";
  21.    static final String SCRIPT_KEY = "JavaScript";
  22.    static final String TARGET_KEY = "onScriptFinish";
  23.    static final String COMMAND_KEY = "command";
  24.    static final String LIVECONNECT_KEY = "liveConnect";
  25.  
  26.    public Script() {
  27.       this.setScriptText("");
  28.       this.usingLiveConnect = true;
  29.    }
  30.  
  31.    public Script(String var1) {
  32.       this.setScriptText(var1);
  33.       this.usingLiveConnect = true;
  34.    }
  35.  
  36.    public void setScriptText(String var1) {
  37.       this.script = var1;
  38.    }
  39.  
  40.    public String scriptText() {
  41.       return this.script;
  42.    }
  43.  
  44.    public void setTarget(Target var1) {
  45.       this.target = var1;
  46.    }
  47.  
  48.    public Target target() {
  49.       return this.target;
  50.    }
  51.  
  52.    public void setCommand(String var1) {
  53.       this.command = var1;
  54.    }
  55.  
  56.    public String command() {
  57.       return this.command;
  58.    }
  59.  
  60.    public void setUsingLiveConnect(boolean var1) {
  61.       this.usingLiveConnect = var1;
  62.    }
  63.  
  64.    public boolean isUsingLiveConnect() {
  65.       return this.usingLiveConnect;
  66.    }
  67.  
  68.    public Hashtable namedObjects() {
  69.       return this.namedObjects;
  70.    }
  71.  
  72.    public void setNamedObjects(Hashtable var1) {
  73.       if (var1 != null) {
  74.          this.namedObjects = (Hashtable)var1.clone();
  75.       } else {
  76.          this.namedObjects = null;
  77.       }
  78.    }
  79.  
  80.    synchronized void setRunning(boolean var1) {
  81.       this.running = var1;
  82.       if (this.isUsingLiveConnect()) {
  83.          if (this.running) {
  84.             this.setNames(this.namedObjects());
  85.             return;
  86.          }
  87.  
  88.          this.removeNames(this.namedObjects());
  89.       }
  90.  
  91.    }
  92.  
  93.    public synchronized boolean isRunning() {
  94.       return this.running;
  95.    }
  96.  
  97.    public void run() {
  98.       this.setRunning(true);
  99.       if (scriptController().canEval()) {
  100.          try {
  101.             scriptController.eval(this.script);
  102.          } catch (Exception var2) {
  103.             System.err.println("ScriptController.eval() failed for: " + this);
  104.             System.err.println("     " + var2 + ": message: " + ((Throwable)var2).getMessage());
  105.          }
  106.       } else {
  107.          System.err.println("Could not call ScriptController.eval() for: " + this);
  108.       }
  109.  
  110.       this.setRunning(false);
  111.       if (this.target != null && this.command != null) {
  112.          this.target.performCommand(this.command, this);
  113.       }
  114.  
  115.    }
  116.  
  117.    public void performCommand(String var1, Object var2) {
  118.       if ("runScript".equals(var1)) {
  119.          this.run();
  120.       }
  121.  
  122.    }
  123.  
  124.    public boolean setNames(Hashtable var1) {
  125.       if (var1 != null && scriptController().canEval()) {
  126.          Enumeration var2 = var1.keys();
  127.  
  128.          while(var2.hasMoreElements()) {
  129.             Object var3 = var2.nextElement();
  130.  
  131.             try {
  132.                scriptController.setMember((String)var3, var1.get(var3));
  133.             } catch (Exception var5) {
  134.                System.err.println("Could not setMember to JavaScript" + var5 + " - " + ((Throwable)var5).getMessage());
  135.                return false;
  136.             }
  137.          }
  138.  
  139.          return true;
  140.       } else {
  141.          return false;
  142.       }
  143.    }
  144.  
  145.    public boolean removeNames(Hashtable var1) {
  146.       if (var1 != null && scriptController().canEval()) {
  147.          Enumeration var2 = var1.keys();
  148.  
  149.          while(var2.hasMoreElements()) {
  150.             Object var3 = var2.nextElement();
  151.  
  152.             try {
  153.                scriptController.removeMember((String)var3);
  154.             } catch (Exception var5) {
  155.                System.err.println("Could not removeMember to JavaScript" + var5 + " - " + ((Throwable)var5).getMessage());
  156.                return false;
  157.             }
  158.          }
  159.  
  160.          return true;
  161.       } else {
  162.          return false;
  163.       }
  164.    }
  165.  
  166.    static ScriptController scriptController() {
  167.       if (scriptController == null) {
  168.          scriptController = ScriptController.controller();
  169.       }
  170.  
  171.       return scriptController;
  172.    }
  173.  
  174.    public void describeClassInfo(ClassInfo var1) {
  175.       var1.addClass("netscape.constructor.Script", 2);
  176.       var1.addField("JavaScript", (byte)16);
  177.       var1.addField("onScriptFinish", (byte)18);
  178.       var1.addField("command", (byte)16);
  179.       var1.addField("liveConnect", (byte)0);
  180.    }
  181.  
  182.    public void encode(Encoder var1) throws CodingException {
  183.       var1.encodeString("JavaScript", this.script);
  184.       var1.encodeObject("onScriptFinish", (Codable)this.target);
  185.       var1.encodeString("command", this.command);
  186.       var1.encodeBoolean("liveConnect", this.usingLiveConnect);
  187.    }
  188.  
  189.    public void decode(Decoder var1) throws CodingException {
  190.       this.script = var1.decodeString("JavaScript");
  191.       this.target = (Target)var1.decodeObject("onScriptFinish");
  192.       this.command = var1.decodeString("command");
  193.       if (var1.versionForClassName("netscape.constructor.Script") > 1) {
  194.          this.usingLiveConnect = var1.decodeBoolean("liveConnect");
  195.       } else {
  196.          this.usingLiveConnect = true;
  197.       }
  198.    }
  199.  
  200.    public void finishDecoding() throws CodingException {
  201.    }
  202. }
  203.