home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / filesbbs / os2 / fp1os2.arj / OS2 / DATA / 49 / C / 0 / F_26836 / JScriptManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-15  |  27.8 KB  |  1,413 lines

  1. import java.io.PrintStream;
  2. import java.net.MalformedURLException;
  3. import java.net.URL;
  4. import java.util.Vector;
  5. import stardiv.security.JScript2Java;
  6. import stardiv.security.JScript2JavaInterface;
  7. import stardiv.tools.HoldJavaEnvironment;
  8. import stardiv.tools.SjCallBackAction;
  9.  
  10. public class JScriptManager extends SJMTObject implements SjCallBackAction {
  11.    private static Vector aJSManagerList = new Vector(3);
  12.    private static Vector aManagerThreadRelationList = new Vector(3);
  13.    public static final int JS_NOERROR = 0;
  14.    public static final int JS_ERROR_RUNTIMEERR = -1;
  15.    public static final int JS_ERROR_IN_FIRST_STATEMENT = -2;
  16.    public static final int JS_ERROR_NO_MANAGER = -3;
  17.    public static final int JS_ERROR_EMPTY_SCRIPT = -4;
  18.    public static final int JS_ERROR_SINGLE_IDENTIFIER = -5;
  19.    public static final int JS_ERROR_SINGLE_FUNCTION = -6;
  20.    public static final int JS_ERROR_COMPILEERR = -7;
  21.    public static final int JS_ERROR_BUSY = -8;
  22.    public static final int JS_ERROR_NO_THREAD = -9;
  23.    public static final int JS_ERROR_USERBREAK = -10;
  24.    public static final int JS_ERROR_NO_RUNINFOS = -11;
  25.    private static final String MANAGER_THREADGROUP_NAME = "JSM-ThreadGroup-";
  26.    private static int nJSM_Count;
  27.    private boolean bDebugSessionDone;
  28.    private JSbxObject aRootObject;
  29.    private String[] aArgs;
  30.    private ThreadGroup aManagerThreadGroup;
  31.    private ThreadGroup aParentThreadGroup;
  32.    private JScriptCompiler aCompiler;
  33.    private JScriptDebugger aDebugger;
  34.    private JScriptBrowser aBrowser;
  35.    private String aBrowserStrg;
  36.    private JSbxVector aModVector;
  37.    private int nNoOfActModule;
  38.    private JScriptModule aActEventModule;
  39.    private String aLastError;
  40.    private Vector aJobList;
  41.    private int nActJobID;
  42.    private boolean bStartIDE;
  43.    private boolean bSysExitAllowed;
  44.    private static JScriptIDEWindow aWindowInterface = null;
  45.    private PrintStream aDebugOutputStream;
  46.    private JScriptErrorLog aErrorLog;
  47.    private JavaScript aJavaScriptObj;
  48.    private Vector aRTIList;
  49.    private JScript2JavaInterface pJScript2JavaInterface;
  50.    PrintStream aDebugOutStream;
  51.  
  52.    private static void AddNewJScriptManager(JScriptManager var0) {
  53.       aJSManagerList.addElement(var0);
  54.    }
  55.  
  56.    private static void RemoveJScriptManager(JScriptManager var0) {
  57.       aJSManagerList.removeElement(var0);
  58.    }
  59.  
  60.    public static int GetNoOfJScriptManagers() {
  61.       return aJSManagerList.size();
  62.    }
  63.  
  64.    public static void SelectJScriptManager(int var0) {
  65.       JScriptManager var1 = null;
  66.  
  67.       try {
  68.          var1 = (JScriptManager)aJSManagerList.elementAt(var0);
  69.       } catch (ArrayIndexOutOfBoundsException var2) {
  70.       }
  71.  
  72.       if (var1 != null) {
  73.          var1.CreateUpDateIDEWindow();
  74.       }
  75.  
  76.    }
  77.  
  78.    public static void AddRelation(JScriptManager var0) {
  79.       Thread var1 = Thread.currentThread();
  80.       aManagerThreadRelationList.addElement(new JScriptManagerThreadRelation(var0, var1));
  81.    }
  82.  
  83.    public static void RemoveRelation(JScriptManager var0) {
  84.       Thread var1 = Thread.currentThread();
  85.       Vector var2 = aManagerThreadRelationList;
  86.       synchronized(var2){}
  87.  
  88.       try {
  89.          int var4 = aManagerThreadRelationList.size();
  90.  
  91.          for(int var5 = var4 - 1; var5 >= 0; --var5) {
  92.             JScriptManagerThreadRelation var6 = (JScriptManagerThreadRelation)aManagerThreadRelationList.elementAt(var5);
  93.             if (var6.aManager == var0 && var6.aThread == var1) {
  94.                aManagerThreadRelationList.removeElement(var6);
  95.                return;
  96.             }
  97.          }
  98.  
  99.       } catch (Throwable var8) {
  100.          throw var8;
  101.       }
  102.    }
  103.  
  104.    private final synchronized void BlockCallingThread() {
  105.       this.bDebugSessionDone = false;
  106.  
  107.       try {
  108.          while(!this.bDebugSessionDone) {
  109.             this.wait();
  110.          }
  111.  
  112.       } catch (InterruptedException var1) {
  113.       }
  114.    }
  115.  
  116.    private final synchronized void UnBlockCallingThread() {
  117.       this.bDebugSessionDone = true;
  118.       this.notifyAll();
  119.    }
  120.  
  121.    public final void SetLastError(String var1) {
  122.       this.aLastError = var1;
  123.    }
  124.  
  125.    public final String GetLastError() {
  126.       return this.aLastError;
  127.    }
  128.  
  129.    public final boolean IsUsedAsIDE() {
  130.       return this.bStartIDE;
  131.    }
  132.  
  133.    public final void WaitFor_IDEClosed() {
  134.       if (aWindowInterface != null) {
  135.          aWindowInterface.WaitForIDEClosed();
  136.       }
  137.  
  138.    }
  139.  
  140.    public final boolean IsSysExitAllowed() {
  141.       return this.bSysExitAllowed;
  142.    }
  143.  
  144.    public final void SetSysExitFlag(boolean var1) {
  145.       this.bSysExitAllowed = var1;
  146.    }
  147.  
  148.    public final PrintStream GetOutputPtrintStream() {
  149.       return this.aDebugOutputStream;
  150.    }
  151.  
  152.    public JavaScript GetJavaScriptObj() {
  153.       return this.aJavaScriptObj;
  154.    }
  155.  
  156.    public void UpdateNativeInterface(JavaScript var1) {
  157.       this.aJavaScriptObj = var1;
  158.    }
  159.  
  160.    private final synchronized void AddRTI(JScriptRuntimeInstance var1) {
  161.       this.aRTIList.addElement(var1);
  162.    }
  163.  
  164.    private final synchronized void RemoveRTI(JScriptRuntimeInstance var1) {
  165.       this.aRTIList.removeElement(var1);
  166.       this.notifyAll();
  167.    }
  168.  
  169.    private final JScriptRuntimeInstance GetActJScriptRuntimeInstance() {
  170.       Vector var1 = this.aRTIList;
  171.       synchronized(var1){}
  172.  
  173.       try {
  174.          for(int var3 = 0; var3 < this.aRTIList.size(); ++var3) {
  175.             JScriptRuntimeInstance var4 = (JScriptRuntimeInstance)this.aRTIList.elementAt(var3);
  176.             if (var4.GetThread() == Thread.currentThread()) {
  177.                JScriptRuntimeInstance var5 = var4;
  178.                return var5;
  179.             }
  180.          }
  181.  
  182.          return null;
  183.       } catch (Throwable var7) {
  184.          throw var7;
  185.       }
  186.    }
  187.  
  188.    public final int GetNoOfRTI() {
  189.       return this.aRTIList.size();
  190.    }
  191.  
  192.    public final synchronized void WaitFor_NoRTI() {
  193.       try {
  194.          while(this.GetNoOfRTI() > 0) {
  195.             this.wait();
  196.          }
  197.  
  198.       } catch (InterruptedException var1) {
  199.       }
  200.    }
  201.  
  202.    public JScript2JavaInterface getSecureJScriptCalling() {
  203.       if (this.pJScript2JavaInterface == null) {
  204.          try {
  205.             URL var1 = new URL("http:");
  206.             this.pJScript2JavaInterface = new JScript2Java(var1);
  207.          } catch (MalformedURLException var2) {
  208.             HoldJavaEnvironment.AddToProtocol(((Throwable)var2).toString());
  209.          }
  210.       }
  211.  
  212.       return this.pJScript2JavaInterface;
  213.    }
  214.  
  215.    public void ClrJScriptCalling() {
  216.       this.pJScript2JavaInterface = null;
  217.    }
  218.  
  219.    public JScriptManager(ThreadGroup var1, JSbxObject var2, boolean var3) {
  220.       this((String[])null, var1, false, var2, var3);
  221.       this.SetSysExitFlag(false);
  222.       ((SJMTObject)this).DoStartThread();
  223.    }
  224.  
  225.    public JScriptManager(String[] var1, ThreadGroup var2, JSbxObject var3) {
  226.       this(var1, var2, true, var3, true);
  227.    }
  228.  
  229.    private JScriptManager(String[] var1, ThreadGroup var2, boolean var3, JSbxObject var4, boolean var5) {
  230.       super(var3, "JavaScript Manager (IDE) " + nJSM_Count, var2);
  231.       this.aRootObject = var4;
  232.       this.InitData();
  233.       this.bStartIDE = var5;
  234.       this.aArgs = var1;
  235.       this.aErrorLog = new JScriptErrorLog();
  236.       this.aParentThreadGroup = var2;
  237.       if (this.aParentThreadGroup != null) {
  238.          this.aManagerThreadGroup = new ThreadGroup(this.aParentThreadGroup, "JSM-ThreadGroup-" + nJSM_Count);
  239.       }
  240.  
  241.       this.aCompiler = new JScriptCompiler(this);
  242.       AddNewJScriptManager(this);
  243.       this.SetDebug(true, true, this.aDebugOutputStream);
  244.    }
  245.  
  246.    public void finalize() {
  247.       super.finalize();
  248.    }
  249.  
  250.    void RemoveAllReferences() {
  251.       RemoveJScriptManager(this);
  252.       HoldJavaEnvironment.RemoveCallBackListener(this);
  253.       this.UpdateNativeInterface((JavaScript)null);
  254.       this.aCompiler = null;
  255.       this.aModVector = new JSbxVector(1);
  256.    }
  257.  
  258.    public static void NotImplemented(String var0) {
  259.       PrintStream var1 = GetMyJScriptManager().GetOutputStream();
  260.       var1.println("SORRY: Feature >" + var0 + "< not implemented yet.");
  261.    }
  262.  
  263.    public static void ShowWarning(String var0) {
  264.       PrintStream var1 = GetMyJScriptManager().GetOutputStream();
  265.       var1.println("WARNING: " + var0);
  266.    }
  267.  
  268.    public static void ShowAlertBox(String var0) {
  269.       GetMyJScriptManager();
  270.       JScriptIDEWindow var1 = aWindowInterface;
  271.       if (var1 != null) {
  272.          SJModalMessageBox var2 = new SJModalMessageBox(var1, "(Star)JavaScript Alert", var0);
  273.          var2.ShowIt();
  274.       } else {
  275.          System.out.println("Warning: " + var0);
  276.       }
  277.    }
  278.  
  279.    public static boolean ShowConfirmBox(String var0) {
  280.       GetMyJScriptManager();
  281.       JScriptIDEWindow var1 = aWindowInterface;
  282.       if (var1 != null) {
  283.          SJModalMessageBox var2 = new SJModalMessageBox(var1, "(Star)JavaScript Confirm", var0, true);
  284.          return var2.ShowIt();
  285.       } else {
  286.          System.out.println("ConfirmQuestion: " + var0);
  287.          return false;
  288.       }
  289.    }
  290.  
  291.    public static boolean ShowQuestionBox(String var0) {
  292.       SJModalQuestionBox var1 = new SJModalQuestionBox("Question", var0);
  293.       return var1.ShowIt();
  294.    }
  295.  
  296.    public static JSbxValue ShowPromptBox(String var0, String var1) {
  297.       GetMyJScriptManager();
  298.       JScriptIDEWindow var2 = aWindowInterface;
  299.       if (var2 != null) {
  300.          SJModalPromptBox var3 = new SJModalPromptBox(var2, "(Star)JavaScript Prompt", var0, var1);
  301.          String var4 = var3.ShowIt();
  302.  
  303.          try {
  304.             Double var5 = new Double(var4);
  305.             return new JSbxValue(var5);
  306.          } catch (NumberFormatException var6) {
  307.             return new JSbxValue(var4);
  308.          }
  309.       } else {
  310.          System.out.println("Prompt: " + var0 + " value: " + var1);
  311.          return new JSbxValue();
  312.       }
  313.    }
  314.  
  315.    public void StopManager() {
  316.       if (this.aCompiler != null) {
  317.          this.aCompiler.StopMessageLoop();
  318.       }
  319.  
  320.       if (this.aDebugger != null) {
  321.          this.aDebugger.StopMessageLoop();
  322.       }
  323.  
  324.       if (this.aBrowser != null) {
  325.          this.aBrowser.StopMessageLoop();
  326.       }
  327.  
  328.       ((SJMTObject)this).StopMessageLoop();
  329.    }
  330.  
  331.    public void CheckAllClients() {
  332.       SJMessage var1 = new SJMessage(10030, this);
  333.       var1.JOB_SetNotifyObject(this);
  334.       this.NotifyBrowser(var1);
  335.    }
  336.  
  337.    JScriptArrayObject CreateArrayObject(String var1) {
  338.       return new JScriptArrayObject(this.GetConstructorObject("Array"), var1);
  339.    }
  340.  
  341.    public static JSbxObject CreateClassObject(String var0) {
  342.       Object var1 = null;
  343.       JScriptManager var2 = GetMyJScriptManager();
  344.       if (var0.equals("String")) {
  345.          var1 = new JScriptStringObject(var2.GetConstructorObject(var0));
  346.       } else if (var0.equals("Date")) {
  347.          var1 = new JScriptDateObject(var2.GetConstructorObject(var0));
  348.       } else if (var0.equals("Array")) {
  349.          var1 = new JScriptArrayObject(var2.GetConstructorObject(var0));
  350.       } else if (var0.equals("Function")) {
  351.          var1 = new JScriptFunctionObject(var2.GetConstructorObject(var0));
  352.       } else if (var0.equals("Image")) {
  353.          var1 = new JScriptImageObject(var2.GetConstructorObject(var0));
  354.       } else if (var0.equals("Option")) {
  355.          var1 = new JScriptOptionObject(var2.GetConstructorObject(var0));
  356.       } else if (var0.equals("Boolean")) {
  357.          var1 = new JScriptBooleanObject(var2.GetConstructorObject(var0));
  358.       } else if (var0.equals("Number")) {
  359.          var1 = new JScriptNumberObject(var2.GetConstructorObject(var0));
  360.       } else if (var0.equals("Object")) {
  361.          var1 = new JSbxObject(var2.GetConstructorObject(var0));
  362.       }
  363.  
  364.       return (JSbxObject)var1;
  365.    }
  366.  
  367.    public static JScriptConstructor GetConstructorObjectForMe(String var0) {
  368.       if (var0.equals("DefaultConstructor")) {
  369.          return new JScriptObjectConstructor();
  370.       } else {
  371.          JScriptManager var1 = GetMyJScriptManager();
  372.          return (JScriptConstructor)(var1 != null ? var1.GetConstructorObject(var0) : new JScriptObjectConstructor());
  373.       }
  374.    }
  375.  
  376.    public JScriptConstructor GetConstructorObject(String var1) {
  377.       if (this.aRootObject != null) {
  378.          JSbxProperty var2 = this.aRootObject.Get(var1);
  379.          if (var2 != null) {
  380.             JSbxValue var3 = new JSbxValue();
  381.  
  382.             try {
  383.                var2.Get(var3);
  384.                if (var3.GetType() == 2) {
  385.                   return (JScriptConstructor)var3.GetObject();
  386.                }
  387.             } catch (JSbxException var4) {
  388.             }
  389.          }
  390.       }
  391.  
  392.       return null;
  393.    }
  394.  
  395.    public final void NotifyObservers(JScriptAction var1) {
  396.       this.NotifyDebugger(var1);
  397.       this.NotifyCompiler(var1);
  398.       this.NotifyBrowser(var1);
  399.    }
  400.  
  401.    public final void NotifyCompiler(SJMessage var1) {
  402.       if (this.aCompiler != null) {
  403.          this.aCompiler.HandleMessage(var1);
  404.       }
  405.  
  406.    }
  407.  
  408.    public final void NotifyDebugger(SJMessage var1) {
  409.       if (this.aDebugger != null) {
  410.          this.aDebugger.HandleMessage(var1);
  411.       }
  412.  
  413.    }
  414.  
  415.    public final void NotifyBrowser(SJMessage var1) {
  416.       if (this.aBrowser != null) {
  417.          this.aBrowser.HandleMessage(var1);
  418.       }
  419.  
  420.    }
  421.  
  422.    public final JScriptModule MakeModule(String var1) {
  423.       Object var2 = null;
  424.       JScriptModule var4 = new JScriptModule(this);
  425.       var4.SetSource(var1);
  426.       this.aModVector.Add(var4);
  427.       this.SetLastModuleAsActive();
  428.       JSbxObject var3 = this.GetRootObject();
  429.       if (var3 != null) {
  430.          var3.CheckAndPushSearchObject(var4);
  431.       }
  432.  
  433.       if (aWindowInterface != null) {
  434.          aWindowInterface.UpDateIDE();
  435.       }
  436.  
  437.       return var4;
  438.    }
  439.  
  440.    public final String GetModuleName(int var1) {
  441.       return this.GetModule(var1).GetName();
  442.    }
  443.  
  444.    public final JScriptRuntimeInstance GetRTIForBrowser() {
  445.       return this.aRTIList.size() < 1 ? null : (JScriptRuntimeInstance)this.aRTIList.elementAt(0);
  446.    }
  447.  
  448.    public final JScriptCallLevelInstance GetActCallLevelInstForBrowser() {
  449.       JScriptRuntimeInstance var1 = this.GetRTIForBrowser();
  450.       return var1 == null ? null : var1.GetActualCallLevelInst();
  451.    }
  452.  
  453.    public final void Browser_DirectShowInfos() {
  454.       if (this.aBrowser != null) {
  455.          this.aBrowser.ShowInfos();
  456.       }
  457.  
  458.    }
  459.  
  460.    public final void Browser_SetEnable(boolean var1) {
  461.       if (var1) {
  462.          this.NotifyBrowser(new JScriptAction(3012));
  463.       } else {
  464.          this.NotifyBrowser(new JScriptAction(3013));
  465.       }
  466.    }
  467.  
  468.    public final void Browser_UpDateInfos() {
  469.       this.NotifyBrowser(new JScriptAction(3006));
  470.    }
  471.  
  472.    public final void Browser_SetMode(int var1) {
  473.       JScriptAction var2 = new JScriptAction(3007);
  474.       var2.SetInteger(var1);
  475.       this.NotifyBrowser(var2);
  476.    }
  477.  
  478.    public final void Browser_NextMode() {
  479.       JScriptAction var1 = new JScriptAction(3010);
  480.       this.NotifyBrowser(var1);
  481.    }
  482.  
  483.    public final void Browser_SetSpecialName(String var1) {
  484.       this.NotifyBrowser(new JScriptAction(3008, var1));
  485.    }
  486.  
  487.    public final void Browser_AddWatch(String var1) {
  488.       this.NotifyBrowser(new JScriptAction(3004, var1));
  489.    }
  490.  
  491.    public final void Browser_RemoveAllWatches() {
  492.       this.NotifyBrowser(new JScriptAction(3009));
  493.    }
  494.  
  495.    public final void Browser_SetVar(String var1) {
  496.       this.NotifyBrowser(new JScriptAction(3011, var1));
  497.    }
  498.  
  499.    private final void StartJob(SJJob var1) {
  500.       this.aJobList.addElement(var1);
  501.       var1.StartProcessJob();
  502.    }
  503.  
  504.    private final void SetObjectsAtMessage(SJJob var1, SJMessage var2, JScriptModule var3) {
  505.       if (var1 != null) {
  506.          var2.SetNoOfObjects(2);
  507.          var2.SetObject(0, var3);
  508.          var2.SetObject(1, var1);
  509.       }
  510.  
  511.    }
  512.  
  513.    public final void ResetRuntimeInstance() {
  514.       this.aRTIList.removeAllElements();
  515.    }
  516.  
  517.    private final SJJob GetJobWithID(int var1) {
  518.       for(int var2 = 0; var2 < this.aJobList.size(); ++var2) {
  519.          SJJob var3 = (SJJob)this.aJobList.elementAt(var2);
  520.          if (var3.GetID() == var1) {
  521.             return var3;
  522.          }
  523.       }
  524.  
  525.       return null;
  526.    }
  527.  
  528.    public final void DoKillAllJobs() {
  529.       for(int var1 = 0; var1 < this.aJobList.size(); ++var1) {
  530.          SJJob var2 = (SJJob)this.aJobList.elementAt(var1);
  531.          var2.KillProcessJob();
  532.       }
  533.  
  534.    }
  535.  
  536.    public final boolean DoKillJobWithID(int var1) {
  537.       SJJob var2 = this.GetJobWithID(var1);
  538.       if (var2 != null) {
  539.          var2.KillProcessJob();
  540.          return true;
  541.       } else {
  542.          return false;
  543.       }
  544.    }
  545.  
  546.    public final boolean DoSuspendJobWithID(int var1) {
  547.       SJJob var2 = this.GetJobWithID(var1);
  548.       if (var2 != null) {
  549.          var2.SuspendProcessJob();
  550.          return true;
  551.       } else {
  552.          return false;
  553.       }
  554.    }
  555.  
  556.    public final boolean DoResumeJobWithID(int var1) {
  557.       SJJob var2 = this.GetJobWithID(var1);
  558.       if (var2 != null) {
  559.          var2.ResumeProcessJob();
  560.          return true;
  561.       } else {
  562.          return false;
  563.       }
  564.    }
  565.  
  566.    private final SJJob DoRunMod(JScriptModule var1, boolean var2) {
  567.       Object var3 = null;
  568.       SJJob var4 = new SJJob(this, this.nActJobID++);
  569.       JScriptAction var5;
  570.       if (var2) {
  571.          var5 = new JScriptAction(216, var1);
  572.       } else {
  573.          var5 = new JScriptAction(215, var1);
  574.       }
  575.  
  576.       this.SetObjectsAtMessage(var4, var5, var1);
  577.       var4.AddMessage(var5, this);
  578.       this.StartJob(var4);
  579.       return var4;
  580.    }
  581.  
  582.    private final SJJob DoCompileAndRunMod(JScriptModule var1, boolean var2) {
  583.       Object var3 = null;
  584.       var1.ClrForCompile();
  585.       SJJob var4 = new SJJob(this, this.nActJobID++);
  586.       Object var5 = null;
  587.       JScriptAction var6;
  588.       SJCondition var7;
  589.       if (var2) {
  590.          var7 = this.AddBackgroundCompileToJob(var4, var1);
  591.          var6 = new JScriptAction(216, var1);
  592.       } else {
  593.          var7 = this.AddCompileToJob(var4, var1);
  594.          var6 = new JScriptAction(215, var1);
  595.       }
  596.  
  597.       this.SetObjectsAtMessage(var4, var6, var1);
  598.       var4.AddCondMessage(var6, this, var7);
  599.       this.StartJob(var4);
  600.       return var4;
  601.    }
  602.  
  603.    public final int DoCompileAndRunModAsync(JScriptModule var1, boolean var2) {
  604.       SJJob var3 = this.DoCompileAndRunMod(var1, var2);
  605.       return var3.GetID();
  606.    }
  607.  
  608.    public final void DoCompileAndRunModSync(JScriptModule var1, boolean var2) {
  609.       SJJob var3 = this.DoCompileAndRunMod(var1, var2);
  610.       ((SJEventSemaphore)var3).WaitForEvent();
  611.    }
  612.  
  613.    public final int DoRunModAsync(JScriptModule var1, boolean var2) {
  614.       SJJob var3 = this.DoRunMod(var1, var2);
  615.       return var3.GetID();
  616.    }
  617.  
  618.    public final void DoRunModSync(JScriptModule var1, boolean var2) {
  619.       SJJob var3 = this.DoRunMod(var1, var2);
  620.       ((SJEventSemaphore)var3).WaitForEvent();
  621.    }
  622.  
  623.    public final int DoRunModSync_CTOJ(JScriptRunParam var1) {
  624.       JScriptRuntimeInstance var2 = this.DoRunModSyncRTI_CTOJ(var1);
  625.       return var2.GetErrorCode();
  626.    }
  627.  
  628.    public final JScriptRuntimeInstance DoRunModSyncRTI_CTOJ(JScriptRunParam var1) {
  629.       JScriptRuntimeInstance var2 = null;
  630.       AddRelation(this);
  631.       if (!var1.bDbgFlag && !HoldJavaEnvironment.getGlobalDbgFlag()) {
  632.          var2 = this.SyncAsyncRun(var1);
  633.       } else {
  634.          this.aActEventModule = var1.aModule;
  635.          this.CreateUpDateIDEWindow();
  636.          Thread var3 = Thread.currentThread();
  637.          String var4 = var3.getName();
  638.          var3.setName("*** DBG calling thread ***");
  639.          this.DoCompileAndDebugMod(var1.aModule, var1.aThisObj);
  640.          this.BlockCallingThread();
  641.          var3.setName(var4);
  642.          this.aActEventModule = null;
  643.          this.NotifyDebugger(new JScriptAction(1010));
  644.       }
  645.  
  646.       RemoveRelation(this);
  647.       return var2;
  648.    }
  649.  
  650.    public final int DoCompileAndRunModSync_CTOJ(JScriptRunParam var1) {
  651.       AddRelation(this);
  652.       if (this.DoCompileModSync(var1.aModule, true)) {
  653.          RemoveRelation(this);
  654.          return -7;
  655.       } else {
  656.          JScriptRuntimeInstance var2 = this.DoRunModSyncRTI_CTOJ(var1);
  657.          RemoveRelation(this);
  658.          int var3 = 0;
  659.          if (var2 != null) {
  660.             var3 = var2.GetErrorCode();
  661.          }
  662.  
  663.          if (var1.aRetStrg != null) {
  664.             JSbxValue var4 = var2.GetReturnValue();
  665.             if (var4 != null) {
  666.                try {
  667.                   var1.aRetStrg.SetValue(var4.GetString());
  668.                } catch (JSbxException var5) {
  669.                }
  670.             }
  671.          }
  672.  
  673.          if (var1.aErrInFirstStmt != null) {
  674.             var1.aErrInFirstStmt.SetValue(var3 != 0 && var2.GetStatementCount() == 1);
  675.          }
  676.  
  677.          return var3;
  678.       }
  679.    }
  680.  
  681.    public int CreateAndRunModule_CTOJ(String var1, String var2, JScriptRunParam var3) {
  682.       JScriptModule var4 = this.MakeModule(var1);
  683.       var4.SetName(var2);
  684.       var3.aModule = var4;
  685.       var3.bRunAsThread = true;
  686.       return this.DoCompileAndRunModSync_CTOJ(var3);
  687.    }
  688.  
  689.    public Object DoRunScriptSync_CTOJ(String var1, JScriptRunParam var2) {
  690.       AddRelation(this);
  691.       JScriptModule var3 = new JScriptModule("(JavaScript Event)", var1);
  692.       var2.aModule = var3;
  693.       var2.bRunAsThread = true;
  694.       int var4 = this.DoCompileAndRunModSync_CTOJ(var2);
  695.       if (var2.aErrCode != null) {
  696.          var2.aErrCode.SetValue(var4);
  697.       }
  698.  
  699.       RemoveRelation(this);
  700.       return var3;
  701.    }
  702.  
  703.    private final SJJob DoCompileMod(JScriptModule var1, boolean var2) {
  704.       var1.ClrForCompile();
  705.       SJJob var3 = new SJJob(this, this.nActJobID++);
  706.       if (var2) {
  707.          this.AddBackgroundCompileToJob(var3, var1);
  708.       } else {
  709.          this.AddCompileToJob(var3, var1);
  710.       }
  711.  
  712.       this.StartJob(var3);
  713.       return var3;
  714.    }
  715.  
  716.    private final boolean DoCompileModSync(JScriptModule var1, boolean var2) {
  717.       var1.ClrForCompile();
  718.  
  719.       try {
  720.          this.aCompiler.Compile(var1, true);
  721.       } catch (JScriptTokenizerException var6) {
  722.          JScriptTokenPosition var4 = var6.GetErrorPosition();
  723.          String var5;
  724.          if (var4 != null) {
  725.             var5 = " --> line=" + var4.GetLine() + " col=" + var4.GetCol();
  726.          } else {
  727.             var5 = " --> no valid position";
  728.          }
  729.  
  730.          HoldJavaEnvironment.AddToProtocol("Compiler-Error: " + var6);
  731.          HoldJavaEnvironment.AddToProtocol("-->" + var5);
  732.          this.SetLastError(var6 + var5);
  733.          return true;
  734.       } catch (Throwable var7) {
  735.          HoldJavaEnvironment.AddToProtocol("Compiler-Error: " + var7);
  736.       }
  737.  
  738.       return false;
  739.    }
  740.  
  741.    public final void DoCompileActMod() {
  742.       this.DoCompileModSync(this.GetActModule(), false);
  743.       if (aWindowInterface != null) {
  744.          aWindowInterface.UpDateIDE();
  745.       }
  746.  
  747.    }
  748.  
  749.    public final void DoRunActMod() {
  750.       SJJob var1 = new SJJob(this, this.nActJobID++);
  751.       JScriptAction var2 = new JScriptAction(211);
  752.       this.SetObjectsAtMessage(var1, var2, (JScriptModule)null);
  753.       var1.AddMessage(var2, this);
  754.       this.StartJob(var1);
  755.    }
  756.  
  757.    public final void DoCompileAndRunActMod() {
  758.       this.GetActModule().ClrForCompile();
  759.       this.CheckMTCompiler();
  760.       SJJob var1 = new SJJob(this, this.nActJobID++);
  761.       SJCondition var2 = this.AddCompileToJob(var1, this.GetActModule());
  762.       JScriptAction var3 = new JScriptAction(211);
  763.       this.SetObjectsAtMessage(var1, var3, (JScriptModule)null);
  764.       var1.AddCondMessage(var3, this, var2);
  765.       this.StartJob(var1);
  766.    }
  767.  
  768.    public final void DoDebugActMod() {
  769.       SJJob var1 = new SJJob(this, this.nActJobID++);
  770.       var1.AddMessage(new JScriptAction(214), this);
  771.       this.StartJob(var1);
  772.    }
  773.  
  774.    public final void DoCompileAndDebugActMod() {
  775.       this.DoCompileAndDebugMod(this.GetActModule(), (JSbxObject)null);
  776.    }
  777.  
  778.    private final void DoCompileAndDebugMod(JScriptModule var1, JSbxObject var2) {
  779.       var1.ClrForCompile();
  780.       this.CheckMTCompiler();
  781.       SJJob var3 = new SJJob(this, this.nActJobID++);
  782.       SJCondition var4 = this.AddCompileToJob(var3, var1);
  783.       var3.AddCondMessage(new JScriptAction(214, var2), this, var4);
  784.       this.StartJob(var3);
  785.    }
  786.  
  787.    public final void CreateUpDateIDEWindow(String var1) {
  788.       this.CreateUpDateIDEWindow();
  789.       if (this.aDebugOutputStream != null) {
  790.          this.aDebugOutputStream.println(var1);
  791.       }
  792.  
  793.    }
  794.  
  795.    public final void CreateUpDateIDEWindow() {
  796.       if (aWindowInterface == null) {
  797.          aWindowInterface = new JScriptIDEWindow(this);
  798.       } else {
  799.          aWindowInterface.SetJScriptManager(this);
  800.          aWindowInterface.ShowStatus("Manager changed...");
  801.       }
  802.  
  803.       this.bStartIDE = true;
  804.       aWindowInterface.StartIDE();
  805.       this.aDebugOutputStream = new SJDbgPrintStream(aWindowInterface.GetOutputField());
  806.       this.SetDebug(true, true, this.aDebugOutputStream);
  807.    }
  808.  
  809.    protected void ProcessMessage(SJMessage var1) {
  810.       if (var1 instanceof JScriptAction) {
  811.          JScriptAction var2 = (JScriptAction)var1;
  812.          switch (((SJMessage)var2).GetID()) {
  813.             case 202:
  814.                if (aWindowInterface != null) {
  815.                   aWindowInterface.UpDateIDE();
  816.                }
  817.                break;
  818.             case 203:
  819.                this.ClearRuntimeInfos();
  820.                this.RemoveRTI((JScriptRuntimeInstance)((SJMessage)var2).GetObject(0));
  821.                if (aWindowInterface != null) {
  822.                   aWindowInterface.DebugActionFinished();
  823.                   aWindowInterface.DoRunDone();
  824.                }
  825.                break;
  826.             case 206:
  827.                if (aWindowInterface != null) {
  828.                   aWindowInterface.DoCompileStart();
  829.                }
  830.  
  831.                var1.Acknowledge();
  832.                break;
  833.             case 207:
  834.                if (aWindowInterface != null) {
  835.                   aWindowInterface.DoCompileDone();
  836.                }
  837.  
  838.                var1.Acknowledge();
  839.                break;
  840.             case 208:
  841.                if (aWindowInterface != null) {
  842.                   aWindowInterface.DoCompileError();
  843.                }
  844.  
  845.                var1.Acknowledge();
  846.                break;
  847.             case 211:
  848.                if (aWindowInterface != null) {
  849.                   aWindowInterface.DoRunStart();
  850.                }
  851.  
  852.                this.AsyncRunModule(this.GetActModule(), var1);
  853.                break;
  854.             case 213:
  855.                if (aWindowInterface != null) {
  856.                   aWindowInterface.SetCodeBlock((JScriptCodeBlock)((SJMessage)var2).GetObject(0));
  857.                }
  858.                break;
  859.             case 214:
  860.                if (aWindowInterface != null) {
  861.                   aWindowInterface.DoDebugStart();
  862.                }
  863.  
  864.                this.Browser_SetEnable(true);
  865.                JSbxObject var3 = null;
  866.                if (((SJMessage)var2).GetNoOfObjects() > 0) {
  867.                   var3 = (JSbxObject)((SJMessage)var2).GetObject(0);
  868.                }
  869.  
  870.                this.StartDebuggerInstance(var3);
  871.                var1.Acknowledge();
  872.                break;
  873.             case 215:
  874.                this.AsyncRunModule((JScriptModule)((SJMessage)var2).GetObject(0), var1);
  875.                break;
  876.             case 216:
  877.                this.AsyncRunThread((JScriptModule)((SJMessage)var2).GetObject(0), var1);
  878.             case 217:
  879.             default:
  880.                break;
  881.             case 218:
  882.                this.RemoveRTI((JScriptRuntimeInstance)((SJMessage)var2).GetObject(0));
  883.                break;
  884.             case 220:
  885.                this.UnBlockCallingThread();
  886.                break;
  887.             case 221:
  888.                aWindowInterface.DebugActionFinished();
  889.                break;
  890.             case 5000:
  891.                if (aWindowInterface != null) {
  892.                   aWindowInterface.ShowExpressionStackString((String)((SJMessage)var2).GetObject(1));
  893.                   aWindowInterface.ShowCallLevelStackString((String)((SJMessage)var2).GetObject(2));
  894.                   aWindowInterface.CheckAndSetSourceFromModule((JScriptModule)((SJMessage)var2).GetObject(4));
  895.                   aWindowInterface.CheckAndSetCodeBlock((JScriptCodeBlock)((SJMessage)var2).GetObject(5));
  896.                   aWindowInterface.ShowPCodePos(var2.GetInteger());
  897.                   aWindowInterface.ShowSourcePos((JScriptTokenPosition)((SJMessage)var2).GetObject(3));
  898.                   aWindowInterface.DebugActionFinished();
  899.                }
  900.                break;
  901.             case 5002:
  902.                if (aWindowInterface != null) {
  903.                   aWindowInterface.ClrPCodePos();
  904.                   aWindowInterface.ClrSourcePos();
  905.                }
  906.                break;
  907.             case 5003:
  908.                if (aWindowInterface != null) {
  909.                   if (((SJMessage)var2).GetNoOfObjects() > 0) {
  910.                      aWindowInterface.ShowStatus((String)((SJMessage)var2).GetObject(0));
  911.                   } else {
  912.                      aWindowInterface.ShowStatus(var2.GetInteger());
  913.                   }
  914.                }
  915.  
  916.                var1.Acknowledge();
  917.                break;
  918.             case 5004:
  919.                if (aWindowInterface != null) {
  920.                   aWindowInterface.ShowBrowserInfo((String)((SJMessage)var2).GetObject(0));
  921.                }
  922.                break;
  923.             case 5005:
  924.                if (aWindowInterface != null) {
  925.                   aWindowInterface.ShowBrowserWatch((String)((SJMessage)var2).GetObject(0));
  926.                }
  927.                break;
  928.             case 5007:
  929.                if (aWindowInterface != null) {
  930.                   aWindowInterface.ShowBrowserTitle((String)((SJMessage)var2).GetObject(0));
  931.                }
  932.          }
  933.       }
  934.  
  935.       if (var1.GetNoOfObjects() > 0 && aWindowInterface != null) {
  936.          Object var4 = var1.GetObject(0);
  937.          switch (var1.GetID()) {
  938.             case 10021:
  939.                if (var4 instanceof JScriptDebugger) {
  940.                   aWindowInterface.UpDateIDE();
  941.                }
  942.  
  943.                if (var4 instanceof JScriptCompiler) {
  944.                   aWindowInterface.UpDateIDE();
  945.                }
  946.             case 10022:
  947.             default:
  948.                break;
  949.             case 10023:
  950.                if (var4 instanceof JScriptDebugger) {
  951.                   this.Browser_SetEnable(false);
  952.                   aWindowInterface.DoDebugDone();
  953.                   this.aDebugger = null;
  954.                }
  955.  
  956.                if (var4 instanceof JScriptCompiler) {
  957.                   this.aCompiler = null;
  958.                   aWindowInterface.UpDateIDE();
  959.                }
  960.          }
  961.       }
  962.  
  963.       switch (var1.GetID()) {
  964.          case 10011:
  965.          case 10012:
  966.             this.aJobList.removeElement(var1.GetObject(0));
  967.             return;
  968.          case 10031:
  969.             aWindowInterface.ShowStatus("PING notified ");
  970.             return;
  971.          default:
  972.       }
  973.    }
  974.  
  975.    public void HandleAction(int var1) {
  976.       switch (var1) {
  977.          case 1:
  978.             this.CreateUpDateIDEWindow();
  979.             return;
  980.          case 2:
  981.             String var2 = JavaObjectHolder.DumpMemory();
  982.             HoldJavaEnvironment.AddToProtocol(var2);
  983.             return;
  984.          case 3:
  985.             HoldJavaEnvironment.setGlobalDbgFlag(true);
  986.             HoldJavaEnvironment.AddToProtocol("global dbg-Flag SET");
  987.             if (aWindowInterface != null) {
  988.                aWindowInterface.ShowStatus("global dbg-Flag: " + HoldJavaEnvironment.getGlobalDbgFlag());
  989.                return;
  990.             }
  991.             break;
  992.          case 4:
  993.             HoldJavaEnvironment.setGlobalDbgFlag(false);
  994.             HoldJavaEnvironment.AddToProtocol("global dbg-Flag CLEARED");
  995.             if (aWindowInterface != null) {
  996.                aWindowInterface.ShowStatus("global dbg-Flag: " + HoldJavaEnvironment.getGlobalDbgFlag());
  997.                return;
  998.             }
  999.       }
  1000.  
  1001.    }
  1002.  
  1003.    public void run() {
  1004.       if (this.bStartIDE) {
  1005.          this.CreateUpDateIDEWindow();
  1006.       } else {
  1007.          this.aDebugOutputStream = System.out;
  1008.       }
  1009.  
  1010.       this.SetDebug(true, true, this.aDebugOutputStream);
  1011.       if (this.aArgs != null) {
  1012.          for(int var1 = 0; var1 < this.aArgs.length; ++var1) {
  1013.             aWindowInterface.LoadFile(this.aArgs[var1]);
  1014.          }
  1015.       }
  1016.  
  1017.       super.run();
  1018.       this.RemoveAllReferences();
  1019.    }
  1020.  
  1021.    private final JScriptRuntimeInstance AsyncRunModule(JScriptModule var1, SJMessage var2) {
  1022.       JScriptRunParam var3 = new JScriptRunParam();
  1023.       var3.aModule = var1;
  1024.       var3.aMsg = var2;
  1025.       var3.bCreateThread = true;
  1026.       return this.SyncAsyncRun(var3);
  1027.    }
  1028.  
  1029.    private final JScriptRuntimeInstance AsyncRunThread(JScriptModule var1, SJMessage var2) {
  1030.       JScriptRunParam var3 = new JScriptRunParam();
  1031.       var3.aModule = var1;
  1032.       var3.aMsg = var2;
  1033.       var3.bRunAsThread = true;
  1034.       var3.bCreateThread = true;
  1035.       return this.SyncAsyncRun(var3);
  1036.    }
  1037.  
  1038.    private final JScriptRuntimeInstance SyncAsyncRun(JScriptRunParam var1) {
  1039.       if (var1 == null) {
  1040.          return null;
  1041.       } else {
  1042.          JScriptRuntimeInstance var2 = this.CreateNewRTI(false, var1.aThisObj != null, var1.aTask, var1);
  1043.          var1.aRTI = var2;
  1044.          var2.SetThisObj(var1.aThisObj);
  1045.          var2.SetModule(var1.aModule);
  1046.          var2.SetMessageToAcknowledge(var1.aMsg);
  1047.          if (var1.bRunAsThread) {
  1048.             var2.SetRTIAsThread();
  1049.          } else {
  1050.             var2.SetRTIAsProcess();
  1051.          }
  1052.  
  1053.          if (this.aDebugger != null) {
  1054.             var2.SetDebugInterface(this.aDebugger);
  1055.          }
  1056.  
  1057.          Object var3 = null;
  1058.          Object var4 = null;
  1059.          String var6;
  1060.          if (var1.aModule != null) {
  1061.             var6 = var1.aModule.GetName();
  1062.          } else {
  1063.             var6 = "module_is_empty";
  1064.          }
  1065.  
  1066.          if (var1.bCreateThread) {
  1067.             Thread var5 = new Thread(this.aManagerThreadGroup, var2, new String("RT-Instance (started from: " + var6 + ")"));
  1068.             if (var1.aMsg.GetNoOfObjects() > 1 && var1.aMsg.GetObject(1) instanceof SJJob) {
  1069.                ((SJJob)var1.aMsg.GetObject(1)).NewThreadCreated(var5);
  1070.             }
  1071.  
  1072.             var5.start();
  1073.          } else {
  1074.             var2.run();
  1075.             this.DestroyRTI(var2);
  1076.          }
  1077.  
  1078.          return var2;
  1079.       }
  1080.    }
  1081.  
  1082.    public final JScriptRuntimeInstance CreateNewRTI(boolean var1, boolean var2, JScriptScheduler var3, JScriptRunParam var4) {
  1083.       JScriptRuntimeInstance var5 = new JScriptRuntimeInstance(this, var1, var2, var3, var4);
  1084.       var5.SetDebugStream(this.aDebugOutStream);
  1085.       var5.SetMessageHandlerInterface(this);
  1086.       this.AddRTI(var5);
  1087.       return var5;
  1088.    }
  1089.  
  1090.    public final void DestroyRTI(JScriptRuntimeInstance var1) {
  1091.       this.RemoveRTI(var1);
  1092.    }
  1093.  
  1094.    private final void CompileModule(JScriptModule var1, boolean var2) {
  1095.       var1.ClrForCompile();
  1096.       this.NotifyCompiler(new JScriptAction(2002, var1));
  1097.    }
  1098.  
  1099.    public static void RuntimeCompile(String var0, JScriptModule var1, JScriptCodeBlock var2, JScriptMethod var3, boolean var4) {
  1100.       JScriptCompiler var5 = GetMyJScriptManager().GetMTCompiler();
  1101.  
  1102.       try {
  1103.          var5.RuntimeCompile(var0, var1, var2, var3, var4);
  1104.       } catch (JScriptParserException var7) {
  1105.          System.out.println("Error in RuntimeCompile(): " + ((Throwable)var7).getMessage());
  1106.       }
  1107.    }
  1108.  
  1109.    private final JScriptCompiler GetMTCompiler() {
  1110.       return this.aCompiler;
  1111.    }
  1112.  
  1113.    private final void CheckMTCompiler() {
  1114.       if (this.aCompiler == null || !this.aCompiler.IsRunningInOwnThread()) {
  1115.          this.aCompiler = new JScriptCompiler(this, this.aManagerThreadGroup);
  1116.          this.aCompiler.SetDebug(true, true, this.aDebugOutputStream);
  1117.       }
  1118.  
  1119.    }
  1120.  
  1121.    private final void StartDebuggerInstance(JSbxObject var1) {
  1122.       if (this.aDebugger == null) {
  1123.          this.StartDebugger(var1);
  1124.       }
  1125.  
  1126.    }
  1127.  
  1128.    private final void StartDebugger(JSbxObject var1) {
  1129.       if (this.aBrowser == null) {
  1130.          this.aBrowser = new JScriptBrowser(this, this.aManagerThreadGroup);
  1131.          this.aBrowserStrg = "<empty>";
  1132.       }
  1133.  
  1134.       this.Browser_SetEnable(true);
  1135.       String var2 = new String("JavaScript Debugger ID=" + 1);
  1136.       JScriptRuntimeInstance var3 = this.CreateNewRTI(true, var1 != null, (JScriptScheduler)null, (JScriptRunParam)null);
  1137.       var3.SetThisObj(var1);
  1138.       this.aDebugger = new JScriptDebugger(this, var3, var2, this.aManagerThreadGroup);
  1139.    }
  1140.  
  1141.    public PrintStream GetOutputStream() {
  1142.       return this.aDebugOutputStream;
  1143.    }
  1144.  
  1145.    public void SetDebug(boolean var1, boolean var2, PrintStream var3) {
  1146.       this.aDebugOutStream = var3;
  1147.       JScriptCompiler var4 = this.GetMTCompiler();
  1148.       if (var4 != null) {
  1149.          var4.SetDebug(var1, var2, var3);
  1150.       }
  1151.  
  1152.    }
  1153.  
  1154.    private final JScriptAction GenShowStatusMsg(String var1) {
  1155.       return new JScriptAction(5003, var1);
  1156.    }
  1157.  
  1158.    private final SJCondition AddCompileToJob(SJJob var1, JScriptModule var2) {
  1159.       SJCondition var3 = var1.AddMessage(new JScriptAction(206), this);
  1160.       var3 = var1.AddCondMessage(new JScriptAction(2002, var2), this.GetMTCompiler(), var3);
  1161.       var3 = var1.AddCondMessage(new JScriptAction(207), this, var3);
  1162.       return var3;
  1163.    }
  1164.  
  1165.    private final SJCondition AddBackgroundCompileToJob(SJJob var1, JScriptModule var2) {
  1166.       SJCondition var3 = var1.AddMessage(new JScriptAction(2002, var2), this.GetMTCompiler());
  1167.       return var3;
  1168.    }
  1169.  
  1170.    private final void ClearRuntimeInfos() {
  1171.       if (aWindowInterface != null) {
  1172.          aWindowInterface.ShowExpressionStackString((String)null);
  1173.          aWindowInterface.ShowCallLevelStackString((String)null);
  1174.       }
  1175.  
  1176.    }
  1177.  
  1178.    private final void InitData() {
  1179.       HoldJavaEnvironment.AddCallBackListener(1, this, "start IDE");
  1180.       HoldJavaEnvironment.AddCallBackListener(2, this, "dump C++ memory");
  1181.       HoldJavaEnvironment.AddCallBackListener(3, this, "set dbg-Flag");
  1182.       HoldJavaEnvironment.AddCallBackListener(4, this, "clear dbg-Flag");
  1183.       this.nNoOfActModule = 0;
  1184.       this.aActEventModule = null;
  1185.       this.aCompiler = null;
  1186.       this.aDebugger = null;
  1187.       this.aBrowser = null;
  1188.       this.aBrowserStrg = null;
  1189.       this.aArgs = null;
  1190.       this.bStartIDE = true;
  1191.       this.aModVector = new JSbxVector(5);
  1192.       this.aJobList = new Vector(3);
  1193.       this.nActJobID = 0;
  1194.       this.aRTIList = new Vector(3);
  1195.       ++nJSM_Count;
  1196.       this.SetSysExitFlag(true);
  1197.       this.UpdateNativeInterface((JavaScript)null);
  1198.    }
  1199.  
  1200.    public static final JScriptManager GetMyJScriptManager() {
  1201.       Thread var0 = Thread.currentThread();
  1202.       Vector var1 = aManagerThreadRelationList;
  1203.       synchronized(var1){}
  1204.  
  1205.       try {
  1206.          int var3 = aManagerThreadRelationList.size();
  1207.  
  1208.          for(int var4 = var3 - 1; var4 >= 0; --var4) {
  1209.             JScriptManagerThreadRelation var5 = (JScriptManagerThreadRelation)aManagerThreadRelationList.elementAt(var4);
  1210.             if (var5.aThread == var0) {
  1211.                JScriptManager var6 = var5.aManager;
  1212.                return var6;
  1213.             }
  1214.          }
  1215.       } catch (Throwable var13) {
  1216.          throw var13;
  1217.       }
  1218.  
  1219.       ThreadGroup var14 = var0.getThreadGroup();
  1220.       Vector var2 = aJSManagerList;
  1221.       synchronized(var2){}
  1222.  
  1223.       try {
  1224.          int var15 = aJSManagerList.size();
  1225.  
  1226.          for(int var16 = 0; var16 < var15; ++var16) {
  1227.             JScriptManager var17 = (JScriptManager)aJSManagerList.elementAt(var16);
  1228.             if (var17.GetThreadGroup() == var14) {
  1229.                JScriptManager var7 = var17;
  1230.                return var7;
  1231.             }
  1232.          }
  1233.  
  1234.          return null;
  1235.       } catch (Throwable var12) {
  1236.          throw var12;
  1237.       }
  1238.    }
  1239.  
  1240.    public static JSbxObject GetMyRootObject() {
  1241.       JScriptManager var0 = GetMyJScriptManager();
  1242.       return var0 == null ? null : var0.GetRootObject();
  1243.    }
  1244.  
  1245.    public static JSbxObject GetMyDocumentObject() {
  1246.       JScriptManager var0 = GetMyJScriptManager();
  1247.       return var0 == null ? null : var0.GetDocumentObject();
  1248.    }
  1249.  
  1250.    public static JSbxObject GetMyFormObject(JSbxObject var0) {
  1251.       JScriptManager var1 = GetMyJScriptManager();
  1252.       return var1 == null ? null : var1.GetFormObject(var0);
  1253.    }
  1254.  
  1255.    public static JSbxObject GetMyTopObject() {
  1256.       JScriptManager var0 = GetMyJScriptManager();
  1257.       return var0 == null ? null : var0.GetTopObject(GetMyRootObject());
  1258.    }
  1259.  
  1260.    public static JScriptRuntimeInstance GetMyActRuntimeInstance() {
  1261.       JScriptManager var0 = GetMyJScriptManager();
  1262.       return var0 == null ? null : var0.GetActJScriptRuntimeInstance();
  1263.    }
  1264.  
  1265.    public static JScriptCallLevelInstance GetMyActCallLevelInst() {
  1266.       JScriptRuntimeInstance var0 = GetMyActRuntimeInstance();
  1267.       return var0 == null ? null : var0.GetActualCallLevelInst();
  1268.    }
  1269.  
  1270.    public final void SetRootObject(JSbxObject var1) {
  1271.       this.aRootObject = var1;
  1272.       this.aRootObject.setLifeConnectManager(this);
  1273.    }
  1274.  
  1275.    public final JSbxObject GetRootObject() {
  1276.       return this.aRootObject;
  1277.    }
  1278.  
  1279.    public final JSbxObject GetDocumentObject() {
  1280.       return this.GetNamedObjectFromObject("document", this.aRootObject);
  1281.    }
  1282.  
  1283.    public final JSbxObject GetFormObject(JSbxObject var1) {
  1284.       return this.GetNamedObjectFromObject("form", var1);
  1285.    }
  1286.  
  1287.    public final JSbxObject GetTopObject(JSbxObject var1) {
  1288.       JSbxObject var2 = this.GetNamedObjectFromObject("top", var1);
  1289.       return var2;
  1290.    }
  1291.  
  1292.    private final JSbxObject GetNamedObjectFromObject(String var1, JSbxObject var2) {
  1293.       if (var2 != null) {
  1294.          JSbxProperty var3 = var2.Get(var1, false);
  1295.          if (var3 != null) {
  1296.             JSbxValue var4 = new JSbxValue();
  1297.  
  1298.             try {
  1299.                var3.Get(var4);
  1300.                if (var4 != null) {
  1301.                   JSbxBase var5 = var4.GetObject();
  1302.                   if (var5 instanceof JSbxObject) {
  1303.                      return (JSbxObject)var5;
  1304.                   }
  1305.                }
  1306.             } catch (JSbxException var6) {
  1307.                return null;
  1308.             }
  1309.          }
  1310.       }
  1311.  
  1312.       return null;
  1313.    }
  1314.  
  1315.    public final ThreadGroup GetParentThreadGroup() {
  1316.       return this.aParentThreadGroup;
  1317.    }
  1318.  
  1319.    public final ThreadGroup GetThreadGroup() {
  1320.       return this.aManagerThreadGroup;
  1321.    }
  1322.  
  1323.    private final JScriptModule GetModule(int var1) {
  1324.       return (JScriptModule)this.aModVector.Get(var1);
  1325.    }
  1326.  
  1327.    public final JScriptModule GetActModule() {
  1328.       return this.aActEventModule != null ? this.aActEventModule : this.GetModule(this.nNoOfActModule);
  1329.    }
  1330.  
  1331.    public final void SetLastModuleAsActive() {
  1332.       this.nNoOfActModule = this.GetModuleCount() - 1;
  1333.    }
  1334.  
  1335.    public final void SetNextModule() {
  1336.       if (this.nNoOfActModule < this.GetModuleCount() - 1) {
  1337.          ++this.nNoOfActModule;
  1338.       } else {
  1339.          this.nNoOfActModule = 0;
  1340.       }
  1341.    }
  1342.  
  1343.    public final void SetActModuleNo(int var1) {
  1344.       if (var1 >= 0 && var1 < this.GetModuleCount()) {
  1345.          this.nNoOfActModule = var1;
  1346.       }
  1347.  
  1348.    }
  1349.  
  1350.    public final void SetAsActModule(JScriptModule var1) {
  1351.       this.SetAsActModuleChanged(var1);
  1352.    }
  1353.  
  1354.    private final boolean SetAsActModuleChanged(JScriptModule var1) {
  1355.       boolean var2 = true;
  1356.  
  1357.       for(int var3 = 0; var3 < this.GetModuleCount(); ++var3) {
  1358.          if (this.GetModule(var3) == var1) {
  1359.             if (var3 == this.nNoOfActModule) {
  1360.                var2 = false;
  1361.             }
  1362.  
  1363.             this.SetActModuleNo(var3);
  1364.             break;
  1365.          }
  1366.       }
  1367.  
  1368.       return var2;
  1369.    }
  1370.  
  1371.    public final int GetModuleCount() {
  1372.       return this.aModVector.GetSize();
  1373.    }
  1374.  
  1375.    public final void DeleteModule(JScriptModule var1) {
  1376.       this.aModVector.Delete(var1);
  1377.    }
  1378.  
  1379.    public final void DeleteAllModules() {
  1380.       this.aModVector.Clear();
  1381.    }
  1382.  
  1383.    private final void SetWindowInterface(JScriptIDEWindow var1) {
  1384.       aWindowInterface = var1;
  1385.    }
  1386.  
  1387.    private final JScriptIDEWindow GetWindowInterface() {
  1388.       return aWindowInterface;
  1389.    }
  1390.  
  1391.    public final JScriptErrorLog GetErrorLog() {
  1392.       return this.aErrorLog;
  1393.    }
  1394.  
  1395.    public final void ShowStatusMessage(String var1) {
  1396.       if (aWindowInterface != null) {
  1397.          aWindowInterface.ShowStatus(var1);
  1398.       }
  1399.  
  1400.    }
  1401.  
  1402.    public final void CloseIDEWindow() {
  1403.       if (aWindowInterface != null) {
  1404.          aWindowInterface.CloseIDE();
  1405.       }
  1406.  
  1407.    }
  1408.  
  1409.    public JScriptImageObject CreateImage(int var1, int var2) {
  1410.       return this.aJavaScriptObj != null ? this.aJavaScriptObj.CreateImage(var1, var2) : null;
  1411.    }
  1412. }
  1413.