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

  1. public class JScriptBrowser extends SJMTObject {
  2.    public static final int BROWSER_FIRST_MODE = 0;
  3.    public static final int BROWSER_GLOBAL = 0;
  4.    public static final int BROWSER_LOCAL = 1;
  5.    public static final int BROWSER_SPECIAL = 2;
  6.    public static final int BROWSER_LAST_MODE = 2;
  7.    private static final int LEVEL_START = 0;
  8.    private static final int NO_START = 5;
  9.    private static final int NAME_START = 10;
  10.    private static final int TYPE_START = 30;
  11.    private static final int VALUE_START = 40;
  12.    private static final String HEADER_LINE = "Lev. Nr.  Name                Type      Value\n";
  13.    private static final String NOT_FOUND = " not found";
  14.    private static final String UNKNOWN = "unknown";
  15.    private static final String INVALID = "invalid";
  16.    private boolean bEnable;
  17.    private int nMode;
  18.    private String aObjectName;
  19.    private JSbxVector aWatchObjArray;
  20.    private JScriptManager aJScriptManager;
  21.  
  22.    public JScriptBrowser(JScriptManager var1, ThreadGroup var2) {
  23.       super(var1, "JavaScript Browser", var2);
  24.       this.bEnable = true;
  25.       this.nMode = 0;
  26.       this.aJScriptManager = var1;
  27.       this.aWatchObjArray = new JSbxVector(10);
  28.    }
  29.  
  30.    public JScriptBrowser(JScriptManager var1) {
  31.       this(var1, (ThreadGroup)null);
  32.    }
  33.  
  34.    protected void ProcessMessage(SJMessage var1) {
  35.       switch (var1.GetID()) {
  36.          case 10030:
  37.             var1.AcknowledgePing();
  38.             return;
  39.          default:
  40.             if (var1 instanceof JScriptAction) {
  41.                JScriptAction var2 = (JScriptAction)var1;
  42.                switch (((SJMessage)var2).GetID()) {
  43.                   case 3001:
  44.                      ((SJMTObject)this).StopMessageLoop();
  45.                      return;
  46.                   case 3002:
  47.                      this.ShowInfos();
  48.                      return;
  49.                   case 3003:
  50.                      this.ShowWatch();
  51.                      return;
  52.                   case 3004:
  53.                      this.AddWatch((String)((SJMessage)var2).GetObject(0));
  54.                      this.ShowWatch();
  55.                      return;
  56.                   case 3005:
  57.                      return;
  58.                   case 3006:
  59.                      this.ShowInfos();
  60.                      return;
  61.                   case 3007:
  62.                      this.SetMode(var2.GetInteger());
  63.                      return;
  64.                   case 3008:
  65.                      this.SetBrowseObjectName((String)((SJMessage)var2).GetObject(0));
  66.                      return;
  67.                   case 3009:
  68.                      this.RemoveAllWatches();
  69.                      return;
  70.                   case 3010:
  71.                      this.NextMode();
  72.                      return;
  73.                   case 3011:
  74.                      this.SetVariable((String)((SJMessage)var2).GetObject(0));
  75.                      this.ShowInfos();
  76.                      return;
  77.                   case 3012:
  78.                      this.bEnable = true;
  79.                      return;
  80.                   case 3013:
  81.                      this.bEnable = false;
  82.                      return;
  83.                   default:
  84.                }
  85.             }
  86.       }
  87.    }
  88.  
  89.    public final String ShowInfos() {
  90.       return this.ShowInfos(true);
  91.    }
  92.  
  93.    private final String ShowInfos(boolean var1) {
  94.       String var2 = "<disabled>";
  95.       if (this.bEnable) {
  96.          switch (this.nMode) {
  97.             case 0:
  98.                var2 = this.ShowGlobal(var1);
  99.                break;
  100.             case 1:
  101.                var2 = this.ShowLocal(var1);
  102.                break;
  103.             case 2:
  104.                var2 = this.ShowSpecial(var1);
  105.          }
  106.       }
  107.  
  108.       if (var1) {
  109.          this.NotifyObservers(new JScriptAction(5007, this.GetActModeString()));
  110.          this.NotifyObservers(new JScriptAction(5004, var2));
  111.       }
  112.  
  113.       var2 = var2 + this.ShowWatch();
  114.       return var2;
  115.    }
  116.  
  117.    private final String ShowGlobal(boolean var1) {
  118.       String var2 = "WARNING: no CLI";
  119.       JScriptCallLevelInstance var3 = this.aJScriptManager.GetActCallLevelInstForBrowser();
  120.       if (var3 != null) {
  121.          var2 = this.ProcessHeaderOutput();
  122.          JSbxStack var4 = ((JSbxObject)var3).DEBUG_GetSearchStack();
  123.  
  124.          for(int var5 = ((JSbxVector)var4).GetSize() - 1; var5 >= 0; --var5) {
  125.             JSbxObject var6 = (JSbxObject)((JSbxVector)var4).Get(var5);
  126.             var2 = var2 + this.ProcessObject(var5, var6);
  127.          }
  128.       }
  129.  
  130.       return var2;
  131.    }
  132.  
  133.    private final String ShowLocal(boolean var1) {
  134.       String var2 = "";
  135.       JScriptCallLevelInstance var3 = this.aJScriptManager.GetActCallLevelInstForBrowser();
  136.       if (var3 != null) {
  137.          var2 = this.ProcessHeaderOutput();
  138.          JSbxObject var4 = var3.GetLocalVarObject();
  139.          var2 = var2 + this.ProcessObject(0, var4);
  140.       }
  141.  
  142.       return var2;
  143.    }
  144.  
  145.    private final String ShowSpecial(boolean var1) {
  146.       String var2 = this.ProcessHeaderOutput();
  147.       return var2 + this.InfosForObject(this.aObjectName);
  148.    }
  149.  
  150.    private final String ShowWatch() {
  151.       return this.ShowWatch(true);
  152.    }
  153.  
  154.    private final String ShowWatch(boolean var1) {
  155.       StringBuffer var2 = new StringBuffer();
  156.       if (this.bEnable) {
  157.          int var3 = this.NoOfWatches();
  158.          var2.append(this.ProcessHeaderOutput());
  159.  
  160.          for(int var4 = 0; var4 < var3; ++var4) {
  161.             String var5 = this.InfosForObject(this.GetWatch(var4));
  162.             var2.append(var5);
  163.             var2.append("\n");
  164.          }
  165.       } else {
  166.          var2.append("<disabled>");
  167.       }
  168.  
  169.       if (var1) {
  170.          this.NotifyObservers(new JScriptAction(5005, new String(var2)));
  171.       }
  172.  
  173.       return new String(var2);
  174.    }
  175.  
  176.    private final String ProcessHeaderOutput() {
  177.       return new String("Lev. Nr.  Name                Type      Value\n");
  178.    }
  179.  
  180.    private final String ProcessObject(int var1, JSbxObject var2) {
  181.       return this.ProcessObject(var1, var2, (String)null);
  182.    }
  183.  
  184.    private final String ProcessObject(int var1, JSbxObject var2, String var3) {
  185.       String var4 = "";
  186.       String var5 = null;
  187.       if (var2 == null) {
  188.          return var3 != null ? var3 + " " + "invalid" : "";
  189.       } else {
  190.          if (var3 != null) {
  191.             var5 = var3 + ".";
  192.          }
  193.  
  194.          var4 = this.ProcessNameArray(var1, var2, var5);
  195.          var4 = var4 + this.ProcessIndexArray(var1, var2, var3);
  196.          var4 = var4 + this.ProcessConstructor(var1, var2, var3);
  197.          JSbxStack var6 = var2.DEBUG_GetSearchStack();
  198.  
  199.          for(int var7 = ((JSbxVector)var6).GetSize() - 1; var7 >= 0; --var7) {
  200.             JSbxObject var8 = (JSbxObject)((JSbxVector)var6).Get(var7);
  201.             var4 = var4 + this.ProcessObject(var1 + 1, var8, (String)null);
  202.          }
  203.  
  204.          return var4;
  205.       }
  206.    }
  207.  
  208.    private final String ProcessNameArray(int var1, JSbxObject var2, String var3) {
  209.       JSbxNameArray var4 = var2.DEBUG_GetNameArray();
  210.       JSbxProperty[] var5 = var4.GetArrayOfProperties();
  211.       return this.ProcessPropertyArray(var1, var5, true, var3);
  212.    }
  213.  
  214.    private final String ProcessIndexArray(int var1, JSbxObject var2, String var3) {
  215.       JSbxIndexArray var4 = var2.DEBUG_GetIndexArray();
  216.       JSbxProperty[] var5 = new JSbxProperty[var4.GetTotalSize()];
  217.  
  218.       for(int var6 = 0; var6 < var5.length; ++var6) {
  219.          var5[var6] = (JSbxProperty)var4.Get(var6 + var4.GetMinIndex());
  220.       }
  221.  
  222.       return this.ProcessPropertyArray(var1, var5, false, var3);
  223.    }
  224.  
  225.    private final String ProcessConstructor(int var1, JSbxObject var2, String var3) {
  226.       JScriptConstructor var4 = var2.GetConstructor();
  227.       return var4 != null ? this.ProcessObject(var1 + 1, var4, var3) : "";
  228.    }
  229.  
  230.    private final String ProcessPropertyArray(int var1, JSbxProperty[] var2, boolean var3, String var4) {
  231.       StringBuffer var5 = new StringBuffer();
  232.  
  233.       for(int var6 = 0; var6 < var2.length; ++var6) {
  234.          var5.append(this.ProcessProperty(var1, var6, var2[var6], var3, var4));
  235.          var5.append("\n");
  236.       }
  237.  
  238.       return new String(var5);
  239.    }
  240.  
  241.    private final String ProcessProperty(int var1, boolean var2, JSbxProperty var3, String var4, String var5, String var6) {
  242.       String var7 = "";
  243.       if (var4 != null) {
  244.          var7 = JScriptTools.AppendAtPos(0, var4, var7);
  245.       }
  246.  
  247.       var7 = JScriptTools.AppendAtPos(5, String.valueOf(var1), var7);
  248.       if (var3 != null) {
  249.          String var8 = "";
  250.          if (var5 != null) {
  251.             var8 = var5;
  252.          }
  253.  
  254.          if (var2) {
  255.             var8 = var8 + var3.GetName();
  256.          } else {
  257.             var8 = var8 + "[" + var3.GetName() + "]";
  258.          }
  259.  
  260.          var7 = JScriptTools.AppendAtPos(10, var8, var7);
  261.          var7 = JScriptTools.AppendAtPos(30, var3.GetBrowserTypeInfo(), var7);
  262.          var7 = JScriptTools.AppendAtPos(40, var3.GetBrowserValueInfo(), var7);
  263.       } else {
  264.          var7 = JScriptTools.AppendAtPos(10, var6 + " " + "invalid", var7);
  265.       }
  266.  
  267.       return var7;
  268.    }
  269.  
  270.    private final String ProcessProperty(int var1, int var2, JSbxProperty var3, boolean var4, String var5) {
  271.       String var6;
  272.       if (var4) {
  273.          var6 = var1 + " N";
  274.       } else {
  275.          var6 = var1 + " I";
  276.       }
  277.  
  278.       return this.ProcessProperty(var2, var4, var3, var6, var5, "");
  279.    }
  280.  
  281.    private final String InfosForStructObject(String var1) {
  282.       String var2 = "";
  283.       String var3 = "";
  284.       Object var4 = null;
  285.       JSbxObject var5 = null;
  286.       JSbxValue var6 = null;
  287.  
  288.       try {
  289.          var6 = JScriptBuildInFunctionHandler.EvaluateSourceCode(var1, this.aJScriptManager.GetRTIForBrowser(), false);
  290.          if (var6 != null && var6.GetType() == 2) {
  291.             var5 = (JSbxObject)var6.GetObject();
  292.          }
  293.       } catch (JSbxExceptionBase var7) {
  294.       } catch (NullPointerException var8) {
  295.       }
  296.  
  297.       if (var6 == null) {
  298.          return var1 + " " + "invalid";
  299.       } else {
  300.          JSbxValueProperty var10 = new JSbxValueProperty(var1, (JSbxObject)null, var6);
  301.          var3 = var3 + this.ProcessProperty(0, true, var10, (String)null, var2, var1);
  302.          if (var6.GetType() == 2) {
  303.             var3 = var3 + "\n" + this.ProcessObject(0, var5, var1);
  304.          }
  305.  
  306.          return var3;
  307.       }
  308.    }
  309.  
  310.    private final JSbxObject SearchForObject(String var1) {
  311.       JSbxProperty var2 = this.SearchForProperty(var1);
  312.       if (var2 == null) {
  313.          return null;
  314.       } else {
  315.          JSbxValue var3 = new JSbxValue();
  316.  
  317.          try {
  318.             var2.Get(var3);
  319.             if (var3.GetType() == 2) {
  320.                return (JSbxObject)var3.GetObject();
  321.             }
  322.          } catch (JSbxException var5) {
  323.             System.out.println("Exception in SearchForObject() " + var5);
  324.          }
  325.  
  326.          return null;
  327.       }
  328.    }
  329.  
  330.    private final JSbxProperty SearchForProperty(String var1) {
  331.       JScriptCallLevelInstance var2 = JScriptManager.GetMyActCallLevelInst();
  332.       if (var2 != null) {
  333.          Object var3 = null;
  334.          JSbxStack var4 = ((JSbxObject)var2).DEBUG_GetSearchStack();
  335.  
  336.          for(int var5 = ((JSbxVector)var4).GetSize() - 1; var5 >= 0; --var5) {
  337.             JSbxObject var6 = (JSbxObject)((JSbxVector)var4).Get(var5);
  338.             JSbxProperty var7 = var6.Get(var1);
  339.             if (var7 != null) {
  340.                return var7;
  341.             }
  342.          }
  343.       }
  344.  
  345.       return null;
  346.    }
  347.  
  348.    private final JSbxProperty SearchInProperty(String var1, JSbxProperty var2) {
  349.       JSbxValue var3 = new JSbxValue();
  350.  
  351.       try {
  352.          var2.Get(var3);
  353.          if (var3.GetType() == 2) {
  354.             JSbxObject var4 = (JSbxObject)var3.GetObject();
  355.             JSbxProperty var5 = var4.Get(var1);
  356.             return var5;
  357.          }
  358.       } catch (JSbxException var6) {
  359.          System.out.println("Exception in SearchInProperty() " + var6);
  360.       }
  361.  
  362.       return null;
  363.    }
  364.  
  365.    private final String InfosForObject(String var1) {
  366.       return this.InfosForStructObject(var1);
  367.    }
  368.  
  369.    private void NotifyObservers(SJMessage var1) {
  370.       this.aJScriptManager.HandleMessage(var1);
  371.    }
  372.  
  373.    private final void SetMode(int var1) {
  374.       this.nMode = var1;
  375.    }
  376.  
  377.    private final void NextMode() {
  378.       ++this.nMode;
  379.       if (this.nMode > 2) {
  380.          this.nMode = 0;
  381.       }
  382.  
  383.    }
  384.  
  385.    private final String GetActModeString() {
  386.       String var1 = "unknown";
  387.       switch (this.nMode) {
  388.          case 0:
  389.             var1 = "GLOBAL";
  390.             break;
  391.          case 1:
  392.             var1 = "LOCAL";
  393.             break;
  394.          case 2:
  395.             var1 = this.GetBrowseObjectName();
  396.       }
  397.  
  398.       return var1;
  399.    }
  400.  
  401.    private final void SetBrowseObjectName(String var1) {
  402.       this.aObjectName = var1;
  403.    }
  404.  
  405.    private final String GetBrowseObjectName() {
  406.       return this.aObjectName;
  407.    }
  408.  
  409.    private final String GetWatch(int var1) {
  410.       return (String)this.aWatchObjArray.Get(var1);
  411.    }
  412.  
  413.    private final int NoOfWatches() {
  414.       return this.aWatchObjArray.GetSize();
  415.    }
  416.  
  417.    private final void AddWatch(String var1) {
  418.       this.aWatchObjArray.Add(var1);
  419.    }
  420.  
  421.    private final void RemoveWatch(String var1) {
  422.    }
  423.  
  424.    private final void RemoveAllWatches() {
  425.       this.aWatchObjArray = new JSbxVector(10);
  426.    }
  427.  
  428.    private final void SetVariable(String var1) {
  429.       try {
  430.          JScriptBuildInFunctionHandler.EvaluateSourceCode(var1, this.aJScriptManager.GetRTIForBrowser(), false);
  431.       } catch (JSbxExceptionBase var2) {
  432.       } catch (NullPointerException var3) {
  433.       }
  434.    }
  435. }
  436.