home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / CFJava.cab / CFJavaRuntime.cab / netscape / constructor / Script.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-10-01  |  5.5 KB  |  216 lines

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