home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPDebugMgr.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  20.3 KB  |  890 lines

  1. import java.awt.BorderLayout;
  2. import java.awt.CardLayout;
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Event;
  6. import java.awt.Font;
  7. import java.awt.GridLayout;
  8. import java.awt.Label;
  9. import java.awt.Panel;
  10. import java.awt.TextField;
  11. import java.util.StringTokenizer;
  12. import java.util.Vector;
  13. import sun.tools.debug.RemoteClass;
  14. import sun.tools.debug.RemoteDebugger;
  15. import sun.tools.debug.RemoteStackFrame;
  16. import sun.tools.debug.RemoteStackVariable;
  17. import sun.tools.debug.RemoteThread;
  18. import sun.tools.debug.RemoteValue;
  19.  
  20. public class JDPDebugMgr extends JDPClassLayout implements Runnable {
  21.    JDPUser user;
  22.    JDPJagg jaggSQL;
  23.    JDPPopupMessage popuppanel;
  24.    Panel Main;
  25.    String moduleName;
  26.    String sourceLocation = "";
  27.    Panel Panel3;
  28.    JDPDebuggerCallback JDPDebuggerCallback1;
  29.    RemoteDebugger Debugger1;
  30.    Panel Panel1;
  31.    JDPList sourcePanel;
  32.    Panel Panel2;
  33.    JDPList consolePanel;
  34.    JDPTextGrid watchPanel;
  35.    JDPButtons JDPButtons1;
  36.    JDPButtons JDPButtons2;
  37.    JDPButtons JDPButtons3;
  38.    JDPButtons JDPButtons4;
  39.    TextField searchFor;
  40.    JDPButtons JDPButtons5;
  41.    Panel cardPanel;
  42.    JDPFilePicker filePicker1;
  43.    RemoteThread currentThread;
  44.    Vector breakPoints;
  45.    Vector disabledBreakPoints;
  46.    int lastSourceLine;
  47.    Vector eventVector;
  48.    long lastEventTime;
  49.    boolean stepOutRequested = false;
  50.    String lastClass;
  51.    String lastMethod;
  52.    boolean runToRequested = false;
  53.    int runToLine;
  54.    boolean lastEnableAllAction = true;
  55.  
  56.    public void InitClass(JDPUser var1, Panel var2, String var3) {
  57.       this.user = var1;
  58.       this.breakPoints = new Vector();
  59.       this.disabledBreakPoints = new Vector();
  60.       this.eventVector = new Vector();
  61.       ((Container)this).setLayout(new BorderLayout());
  62.       this.popuppanel = new JDPPopupMessage(var1, this);
  63.       ((Container)this).add(this.popuppanel);
  64.       if ((double)var1.JDesignerPro.versionnum < 2.2) {
  65.          var1.mainmsg.setStatusMsg("This module will only run with JDP 2.2 or greater.", 30);
  66.       } else if (!JDesignerPro.executable) {
  67.          var1.mainmsg.setStatusMsg("This module will not run through a browser. To run it you must run JDP locally.", 30);
  68.       } else if (!System.getProperty("java.vendor").startsWith("Sun")) {
  69.          var1.mainmsg.setStatusMsg("This module will not run unless JDesignerPro is run through the Sun VM.", 30);
  70.       } else {
  71.          this.Main = new Panel();
  72.          this.moduleName = new String();
  73.          this.Panel3 = new Panel();
  74.          this.Panel1 = new Panel();
  75.          this.sourcePanelMain();
  76.          this.Panel2 = new Panel();
  77.          this.consolePanelMain();
  78.          this.watchPanel = new JDPTextGrid(var1);
  79.          String[] var4 = new String[]{"Go", "Restart", "Stop"};
  80.          int[] var5 = new int[]{0, 1, 2};
  81.          this.JDPButtons1 = new JDPButtons(var1, var5, var4, JDPButtons.getAlignmentValue("Horizontal"));
  82.          this.JDPButtons1.setIconImagePath("Images/JDPDEBUG.gif");
  83.          String[] var6 = new String[]{"Insert/Remove Breakpoint", "Remove All Breakpoint", "Disable Breakpoint", "Disable All Breakpoints"};
  84.          int[] var7 = new int[]{3, 4, 5, 6};
  85.          this.JDPButtons2 = new JDPButtons(var1, var7, var6, JDPButtons.getAlignmentValue("Horizontal"));
  86.          this.JDPButtons2.setIconImagePath("Images/JDPDEBUG.gif");
  87.          String[] var8 = new String[]{"Step Into", "Step Over", "Step Out", "Run To"};
  88.          int[] var9 = new int[]{7, 8, 9, 10};
  89.          this.JDPButtons3 = new JDPButtons(var1, var9, var8, JDPButtons.getAlignmentValue("Horizontal"));
  90.          this.JDPButtons3.setIconImagePath("Images/JDPDEBUG.gif");
  91.          String[] var10 = new String[]{"Open Class"};
  92.          int[] var11 = new int[]{1};
  93.          this.JDPButtons4 = new JDPButtons(var1, var11, var10, JDPButtons.getAlignmentValue("Horizontal"));
  94.          this.popuppanel.addComponent(this.JDPButtons1.button[0], "Start/Continue", "Starts or continues the program");
  95.          this.popuppanel.addComponent(this.JDPButtons1.button[1], "Restart", "Restarts the program");
  96.          this.popuppanel.addComponent(this.JDPButtons1.button[2], "Stop", "Stops debugging the program");
  97.          this.popuppanel.addComponent(this.JDPButtons2.button[0], "Insert/Remove Breakpoint", "Inserts or removes a breakpoint");
  98.          this.popuppanel.addComponent(this.JDPButtons2.button[1], "Remove All", "Removes all breakpoints");
  99.          this.popuppanel.addComponent(this.JDPButtons2.button[2], "Enable/Disable breakpoint", "Enables or disables a breakpoint");
  100.          this.popuppanel.addComponent(this.JDPButtons2.button[3], "Enable/Disable All", "Enables or Disables all breakpoints");
  101.          this.popuppanel.addComponent(this.JDPButtons3.button[0], "Step Into", "Steps into the next statement");
  102.          this.popuppanel.addComponent(this.JDPButtons3.button[1], "Step Over", "Steps over the next statement");
  103.          this.popuppanel.addComponent(this.JDPButtons3.button[2], "Step Out", "Steps out of the current function");
  104.          this.popuppanel.addComponent(this.JDPButtons3.button[3], "Run To Line", "Runs the program to the line containing the cursor");
  105.          this.popuppanel.addComponent(this.JDPButtons4.button[0], "Open Java Source", "Opens a Java source file to debug");
  106.          this.searchFor = new TextField("", 20);
  107.          this.popuppanel.addComponent(this.searchFor, "Search", "Search for the text in the currently displayed source");
  108.          String[] var12 = new String[]{"SearchFwd", "SearchBack"};
  109.          int[] var13 = new int[]{48, 49};
  110.          this.JDPButtons5 = new JDPButtons(var1, var13, var12, JDPButtons.getAlignmentValue("Horizontal"));
  111.          this.popuppanel.addComponent(this.JDPButtons5.button[0], "Search Forward", "Search for the text in the currently displayed source");
  112.          this.popuppanel.addComponent(this.JDPButtons5.button[1], "Search Backward", "Search backwards for the text in the currently displayed source");
  113.          this.Main.setLayout(new BorderLayout());
  114.          this.Main.add("East", this.Panel3);
  115.          this.Panel3.setLayout(new BorderLayout());
  116.          this.Main.add("Center", this.Panel1);
  117.          this.Panel1.setLayout(new BorderLayout());
  118.          this.filePicker1 = new JDPFilePicker();
  119.          this.filePicker1.InitClass(var1, this, "");
  120.          this.filePicker1.addFilter("Java Source Files", "*.java");
  121.          this.filePicker1.setMode(0);
  122.          this.filePicker1.setMultipleSelections(false);
  123.          this.filePicker1.loadFiles(var1.JDesignerPro.JDPDirectory + JDesignerPro.serverSeparator + "Applications", false);
  124.          JDPChiselFramePanel var14 = new JDPChiselFramePanel(var1, "Select a Java source to debug", this.filePicker1, "North");
  125.          this.cardPanel = new Panel();
  126.          this.cardPanel.setLayout(new CardLayout());
  127.          this.cardPanel.add("Source", this.sourcePanel);
  128.          this.cardPanel.add("Open", var14);
  129.          this.Panel1.add("Center", this.cardPanel);
  130.          this.Panel1.add("South", this.Panel2);
  131.          this.Panel2.setLayout(new GridLayout(2, 1));
  132.          this.Panel2.add("Center", this.consolePanel);
  133.          this.Panel2.add(this.watchPanel);
  134.          Panel var15 = new Panel();
  135.          ((Container)var15).setLayout(new JDPLineLayout(3));
  136.          ((Container)var15).add("Left", this.JDPButtons1);
  137.          Panel var16 = new Panel();
  138.          ((Container)var16).setLayout(new JDPLineLayout());
  139.          ((Container)var16).add("Left", new Label("Search:", 0));
  140.          ((Container)var16).add("Left", this.searchFor);
  141.          ((Container)var16).add("Left", this.JDPButtons5);
  142.          ((Container)var15).add("Left", var16);
  143.          ((Container)var15).add("Left", this.JDPButtons2);
  144.          ((Container)var15).add("Left", this.JDPButtons3);
  145.          ((Container)var15).add("Left", this.JDPButtons4);
  146.          this.Main.add("North", var15);
  147.          ((Container)this).add("Center", new JDPChiselFramePanel(var1, "Application Debugger", this.Main, "North"));
  148.          this.watchPanel.setRowHeaderOn(false);
  149.          this.watchPanel.setTableDimensions(2, 100);
  150.          this.watchPanel.setColumnHeader(0, "Name");
  151.          this.watchPanel.setColumnHeader(1, "Value");
  152.          this.watchPanel.setColumnWidth(0, 200);
  153.          this.watchPanel.setColumnWidth(1, 1000);
  154.          this.watchPanel.setColumnProtected(0, true);
  155.          this.watchPanel.setColumnProtected(1, true);
  156.          this.watchPanel.setMinimumHeight(120);
  157.          this.watchPanel.setColumnHeaderHeight(10);
  158.          this.watchPanel.newTable();
  159.          ((Container)var2).layout();
  160.          ((Component)var2).paintAll(((Component)var2).getGraphics());
  161.          this.InitComponents();
  162.          var1.gParm.addElement(this);
  163.       }
  164.    }
  165.  
  166.    public boolean handleEvent(Event var1) {
  167.       switch (var1.id) {
  168.          case 202:
  169.             if (var1.target instanceof JDPTabSelectPanel) {
  170.                this.retrieveHandle();
  171.                return true;
  172.             }
  173.  
  174.             return false;
  175.          case 503:
  176.          case 504:
  177.          case 505:
  178.             this.popuppanel.postEvent(var1);
  179.             return false;
  180.          case 1001:
  181.             this.eventVector.addElement(var1);
  182.             Thread var2 = new Thread(this);
  183.             var2.start();
  184.             return true;
  185.          case 1004:
  186.             if (var1.target.equals(this.Main)) {
  187.                this.retrieveHandle();
  188.                return true;
  189.             }
  190.  
  191.             return false;
  192.          default:
  193.             return false;
  194.       }
  195.    }
  196.  
  197.    public void InitComponents() {
  198.       this.retrieveHandle();
  199.    }
  200.  
  201.    public void run() {
  202.       Event var1 = (Event)this.eventVector.elementAt(0);
  203.       this.lastEventTime = var1.when;
  204.       this.eventVector.removeElementAt(0);
  205.       if (var1.target.equals(this.JDPButtons1.button[0].Button)) {
  206.          if (this.Debugger1 == null) {
  207.             this.clearConsole();
  208.             this.clearWatchPanel();
  209.             this.startRemoteProcess();
  210.             this.restoreBreakPoints();
  211.          } else if (this.currentThread != null) {
  212.             try {
  213.                this.currentThread.resume();
  214.                this.Debugger1.cont();
  215.                this.addConsole("Continuing...");
  216.                this.currentThread = null;
  217.                this.sourcePanel.resetSelections();
  218.             } catch (Exception var7) {
  219.                this.user.mainmsg.setStatusMsg("Could not continue.", 10);
  220.                ((Throwable)var7).printStackTrace();
  221.             }
  222.          } else {
  223.             this.user.mainmsg.setStatusMsg("No thread is currently suspended.", 10);
  224.          }
  225.       } else if (var1.target.equals(this.JDPButtons1.button[1].Button)) {
  226.          Vector var19 = this.breakPoints;
  227.          Vector var22 = this.disabledBreakPoints;
  228.          this.stopRemoteProcess();
  229.          this.clearConsole();
  230.          this.clearWatchPanel();
  231.          this.startRemoteProcess();
  232.          this.breakPoints = var19;
  233.          this.disabledBreakPoints = var22;
  234.          this.restoreBreakPoints();
  235.       } else if (var1.target.equals(this.JDPButtons1.button[2].Button)) {
  236.          this.stopRemoteProcess();
  237.       } else if (var1.target.equals(this.JDPButtons2.button[0].Button)) {
  238.          int var18 = this.sourcePanel.getSelectedIndex() + 1;
  239.          if (var18 > 0) {
  240.             try {
  241.                RemoteClass var21 = null;
  242.                int[] var24 = null;
  243.                if (this.Debugger1 != null) {
  244.                   var21 = this.Debugger1.findClass(this.moduleName);
  245.                   var24 = ((RemoteClass)var21).getLineNumbers();
  246.                }
  247.  
  248.                for(int var26 = 0; var26 < this.breakPoints.size(); ++var26) {
  249.                   if (var18 == this.getBreakPointLine(this.breakPoints.elementAt(var26))) {
  250.                      this.breakPoints.removeElementAt(var26);
  251.                      if (var21 != null) {
  252.                         ((RemoteClass)var21).clearBreakpointLine(var18);
  253.                      }
  254.  
  255.                      this.sourcePanel.setIcon(var18, 0);
  256.                      this.user.mainmsg.setStatusMsg("Breakpoint removed.", 4);
  257.                      return;
  258.                   }
  259.                }
  260.  
  261.                if (var24 == null) {
  262.                   this.sourcePanel.setIcon(var18, 1);
  263.                   this.user.mainmsg.setStatusMsg("Breakpoint set at " + this.moduleName + ":" + Integer.toString(var18) + ".", 4);
  264.                   this.breakPoints.addElement(this.moduleName + ":" + Integer.toString(var18));
  265.                } else {
  266.                   for(int var6 = 0; var6 < var24.length; ++var6) {
  267.                      if (var18 == var24[var6]) {
  268.                         if (var21 != null) {
  269.                            ((RemoteClass)var21).setBreakpointLine(var18);
  270.                         }
  271.  
  272.                         this.sourcePanel.setIcon(var18, 1);
  273.                         this.user.mainmsg.setStatusMsg("Breakpoint set at " + this.moduleName + ":" + Integer.toString(var18) + ".", 4);
  274.                         this.breakPoints.addElement(this.moduleName + ":" + Integer.toString(var18));
  275.                         return;
  276.                      }
  277.                   }
  278.  
  279.                   this.user.mainmsg.setStatusMsg("Not a valid breakpoint position.", 5);
  280.                }
  281.             } catch (Exception var13) {
  282.                this.user.mainmsg.setStatusMsg("Breakpoint could not be set/removed from requested position.", 7);
  283.             }
  284.          } else {
  285.             this.user.mainmsg.setStatusMsg("You must first select a source line before you can set or remove a breakpoint.", 7);
  286.          }
  287.       } else if (var1.target.equals(this.JDPButtons2.button[1].Button)) {
  288.          this.clearAllBreakPoints(false);
  289.       } else if (var1.target.equals(this.JDPButtons2.button[2].Button)) {
  290.          int var17 = this.sourcePanel.getSelectedIndex() + 1;
  291.          if (var17 > 0) {
  292.             try {
  293.                RemoteClass var20 = null;
  294.                if (this.Debugger1 != null) {
  295.                   var20 = this.Debugger1.findClass(this.moduleName);
  296.                }
  297.  
  298.                for(int var23 = 0; var23 < this.breakPoints.size(); ++var23) {
  299.                   if (var17 == this.getBreakPointLine(this.breakPoints.elementAt(var23))) {
  300.                      this.breakPoints.removeElementAt(var23);
  301.                      this.disabledBreakPoints.addElement(this.moduleName + ":" + Integer.toString(var17));
  302.                      if (var20 != null) {
  303.                         ((RemoteClass)var20).clearBreakpointLine(var17);
  304.                      }
  305.  
  306.                      this.sourcePanel.setIcon(var17, 2);
  307.                      this.user.mainmsg.setStatusMsg("Breakpoint disabled.", 4);
  308.                      return;
  309.                   }
  310.                }
  311.  
  312.                for(int var25 = 0; var25 < this.disabledBreakPoints.size(); ++var25) {
  313.                   if (var17 == this.getBreakPointLine(this.disabledBreakPoints.elementAt(var25))) {
  314.                      this.disabledBreakPoints.removeElementAt(var25);
  315.  
  316.                      try {
  317.                         if (var20 != null) {
  318.                            ((RemoteClass)var20).setBreakpointLine(var17);
  319.                         }
  320.  
  321.                         this.sourcePanel.setIcon(var17, 1);
  322.                         this.user.mainmsg.setStatusMsg("Breakpoint enabled at " + this.moduleName + ":" + Integer.toString(var17) + ".", 4);
  323.                         this.breakPoints.addElement(this.moduleName + ":" + Integer.toString(var17));
  324.                         return;
  325.                      } catch (Exception var8) {
  326.                         this.user.mainmsg.setStatusMsg("Invalid breakpoint.", 4);
  327.                         return;
  328.                      }
  329.                   }
  330.                }
  331.  
  332.             } catch (Exception var14) {
  333.                this.user.mainmsg.setStatusMsg("Breakpoint could not be enabled/disabled.", 7);
  334.             }
  335.          } else {
  336.             this.user.mainmsg.setStatusMsg("You must first select a source line before you can enable or disable a breakpoint.", 7);
  337.          }
  338.       } else if (var1.target.equals(this.JDPButtons2.button[3].Button)) {
  339.          this.disableAllBreakPoints();
  340.          if (this.lastEnableAllAction) {
  341.             this.user.mainmsg.setStatusMsg("All breakpoints disabled.", 5);
  342.             this.lastEnableAllAction = false;
  343.          } else {
  344.             this.user.mainmsg.setStatusMsg("All breakpoints enabled.", 5);
  345.             this.lastEnableAllAction = true;
  346.          }
  347.       } else {
  348.          if (var1.target.equals(this.JDPButtons3.button[0].Button) && this.currentThread != null) {
  349.             try {
  350.                this.currentThread.step(true);
  351.             } catch (Exception var12) {
  352.                ((Throwable)var12).printStackTrace();
  353.             }
  354.          }
  355.  
  356.          if (var1.target.equals(this.JDPButtons3.button[1].Button)) {
  357.             if (this.currentThread != null) {
  358.                try {
  359.                   this.currentThread.next();
  360.                } catch (Exception var9) {
  361.                   ((Throwable)var9).printStackTrace();
  362.                }
  363.             }
  364.          } else if (var1.target.equals(this.JDPButtons3.button[2].Button)) {
  365.             if (this.currentThread != null) {
  366.                this.stepOutRequested = true;
  367.                this.user.mainmsg.setStatusMsg("Stepping out...", 0);
  368.  
  369.                try {
  370.                   this.currentThread.next();
  371.                } catch (Exception var10) {
  372.                   ((Throwable)var10).printStackTrace();
  373.                }
  374.             }
  375.          } else if (!var1.target.equals(this.JDPButtons3.button[3].Button)) {
  376.             if (var1.target.equals(this.JDPButtons4.button[0].Button)) {
  377.                ((CardLayout)this.cardPanel.getLayout()).show(this.cardPanel, "Open");
  378.             } else if (var1.target.equals(this.searchFor)) {
  379.                this.searchForText(this.searchFor.getText(), true);
  380.             } else if (var1.target.equals(this.JDPButtons5.button[0])) {
  381.                this.searchForText(this.searchFor.getText(), true);
  382.             } else if (var1.target.equals(this.JDPButtons5.button[1])) {
  383.                this.searchForText(this.searchFor.getText(), false);
  384.             } else if (var1.target.equals(this.filePicker1)) {
  385.                String var16 = (String)var1.arg;
  386.                if (!var16.equals("Cancel")) {
  387.                   this.stopRemoteProcess();
  388.                   this.clearConsole();
  389.                   this.clearWatchPanel();
  390.                   this.moduleName = this.filePicker1.getSelectedFile();
  391.                   this.moduleName = this.moduleName.substring(0, this.moduleName.indexOf("."));
  392.                   this.addConsole(this.moduleName + " loaded.");
  393.                   this.loadSource(this.filePicker1.getSelectedFullPath());
  394.                }
  395.  
  396.                ((CardLayout)this.cardPanel.getLayout()).show(this.cardPanel, "Source");
  397.             }
  398.          } else {
  399.             int var2 = this.sourcePanel.getSelectedIndex() + 1;
  400.             if (var2 > 0) {
  401.                try {
  402.                   RemoteClass var3 = this.Debugger1.findClass(this.moduleName);
  403.                   int[] var4 = ((RemoteClass)var3).getLineNumbers();
  404.                   if (var4 != null) {
  405.                      for(int var5 = 0; var5 < var4.length; ++var5) {
  406.                         if (var2 == var4[var5]) {
  407.                            ((RemoteClass)var3).setBreakpointLine(var2);
  408.                            this.runToRequested = true;
  409.                            this.runToLine = var2;
  410.  
  411.                            try {
  412.                               this.currentThread.resume();
  413.                               this.Debugger1.cont();
  414.                               this.addConsole("Continuing...");
  415.                               this.currentThread = null;
  416.                               this.sourcePanel.resetSelections();
  417.                               return;
  418.                            } catch (Exception var11) {
  419.                               this.user.mainmsg.setStatusMsg("Could not continue.", 10);
  420.                               ((Throwable)var11).printStackTrace();
  421.                               return;
  422.                            }
  423.                         }
  424.                      }
  425.  
  426.                      return;
  427.                   }
  428.                } catch (Exception var15) {
  429.                   this.user.mainmsg.setStatusMsg("Line requested is not a valid line to run to.", 7);
  430.                   return;
  431.                }
  432.             } else {
  433.                this.user.mainmsg.setStatusMsg("You must first select a line to run to.", 7);
  434.             }
  435.  
  436.          }
  437.       }
  438.    }
  439.  
  440.    void startRemoteProcess() {
  441.       String var1 = "JDesignerPro " + this.user.getWWWroot() + " " + this.user.getJDPSystem() + " " + this.user.cust.getUsername() + " ";
  442.       if (this.user.cust.password.equals("")) {
  443.          var1 = var1 + "a ";
  444.       } else {
  445.          var1 = var1 + this.user.cust.password + " ";
  446.       }
  447.  
  448.       var1 = var1 + this.moduleName;
  449.       this.addConsole("Starting " + this.moduleName + "...");
  450.       this.JDPDebuggerCallback1 = new JDPDebuggerCallback(this);
  451.  
  452.       try {
  453.          this.Debugger1 = new RemoteDebugger(var1, this.JDPDebuggerCallback1, false);
  454.       } catch (Exception var3) {
  455.          this.user.mainmsg.setStatusMsg("Failed to load requested class.", 10);
  456.          ((Throwable)var3).printStackTrace();
  457.       }
  458.    }
  459.  
  460.    void retrieveHandle() {
  461.       for(int var1 = 0; var1 < this.user.gParm.size(); ++var1) {
  462.          if (this.user.gParm.elementAt(var1) instanceof JDPLayoutMgr) {
  463.             JDPLayoutMgr var2 = (JDPLayoutMgr)this.user.gParm.elementAt(var1);
  464.             if (this.moduleName.equals("") || !this.moduleName.equals(var2.lastBuiltAppName)) {
  465.                this.stopRemoteProcess();
  466.                this.clearConsole();
  467.                this.clearWatchPanel();
  468.                this.moduleName = var2.lastBuiltAppName;
  469.                if (!this.moduleName.equals("")) {
  470.                   this.addConsole(this.moduleName + " loaded.");
  471.                   this.sourceLocation = var2.filePicker2.getSelectedFullPath();
  472.                   if (this.sourceLocation.indexOf(this.moduleName) < 0) {
  473.                      this.sourceLocation = var2.filePicker1.getSelectedFullPath();
  474.                   }
  475.  
  476.                   if (this.sourceLocation.indexOf(this.moduleName) >= 0) {
  477.                      this.sourceLocation = this.sourceLocation.substring(0, this.sourceLocation.length() - 4) + ".java";
  478.                      this.loadSource(this.sourceLocation);
  479.                      return;
  480.                   }
  481.  
  482.                   this.sourceLocation = this.user.JDesignerPro.JDPDirectory + JDesignerPro.serverSeparator + "Temp" + JDesignerPro.serverSeparator + this.moduleName + ".java";
  483.                   this.loadSource(this.sourceLocation);
  484.                }
  485.             }
  486.  
  487.             return;
  488.          }
  489.       }
  490.  
  491.    }
  492.  
  493.    public void breakpointEvent(RemoteThread var1) {
  494.       try {
  495.          RemoteStackFrame[] var2 = var1.dumpStack();
  496.          if (this.stepOutRequested) {
  497.             if (this.lastClass == null || this.lastMethod == null || var2[0].getRemoteClass().getName().equals(this.lastClass) && var2[0].getMethodName().equals(this.lastMethod)) {
  498.                this.lastClass = var2[0].getRemoteClass().getName();
  499.                this.lastMethod = var2[0].getMethodName();
  500.  
  501.                try {
  502.                   var1.next();
  503.                   return;
  504.                } catch (Exception var4) {
  505.                   ((Throwable)var4).printStackTrace();
  506.                   return;
  507.                }
  508.             }
  509.  
  510.             this.user.mainmsg.clearStatusMsg();
  511.          }
  512.  
  513.          if (this.runToRequested) {
  514.             try {
  515.                RemoteClass var3 = this.Debugger1.findClass(this.moduleName);
  516.                ((RemoteClass)var3).clearBreakpointLine(this.runToLine);
  517.             } catch (Exception var5) {
  518.             }
  519.          }
  520.  
  521.          this.lastClass = var2[0].getRemoteClass().getName();
  522.          this.lastMethod = var2[0].getMethodName();
  523.          this.stepOutRequested = false;
  524.          this.runToRequested = false;
  525.          if (var2.length > 0) {
  526.             this.currentThread = var1;
  527.             int var7 = var2[0].getLineNumber();
  528.             this.addConsole("Breakpoint reached at " + var2[0].getRemoteClass().getName() + ":" + var2[0].getMethodName() + ":" + Integer.toString(var7));
  529.             if (var2[0].getRemoteClass().getName().equals(this.moduleName)) {
  530.                this.positionSourcePointer(var7);
  531.             }
  532.  
  533.             this.loadStackVariables(var1);
  534.          } else {
  535.             this.addConsole("Invalid thread specified in breakpoint.");
  536.          }
  537.       } catch (Exception var6) {
  538.          ((Throwable)var6).printStackTrace();
  539.       }
  540.    }
  541.  
  542.    public void printToConsole(String var1) {
  543.       this.addConsoleVerbatim(var1);
  544.    }
  545.  
  546.    public void exceptionEvent(RemoteThread var1, String var2) {
  547.       this.addConsole("exception caught");
  548.       StringTokenizer var3 = new StringTokenizer(var2, "\r\n");
  549.  
  550.       while(var3.hasMoreTokens()) {
  551.          this.addConsole(this.user.u.replace(var3.nextToken(), "\t", "    "));
  552.       }
  553.  
  554.       var1.setCurrentFrameIndex(0);
  555.       this.currentThread = var1;
  556.    }
  557.  
  558.    public void threadDeathEvent(RemoteThread var1) {
  559.       this.addConsole("thread death event");
  560.  
  561.       try {
  562.          this.addConsole(var1.getName() + " died.");
  563.       } catch (Exception var2) {
  564.       }
  565.  
  566.       if (var1 == this.currentThread) {
  567.          this.currentThread = null;
  568.       }
  569.  
  570.    }
  571.  
  572.    public void quitEvent() {
  573.       this.stopRemoteProcess();
  574.    }
  575.  
  576.    public boolean shutDown() {
  577.       this.stopRemoteProcess();
  578.       return true;
  579.    }
  580.  
  581.    public void stopRemoteProcess() {
  582.       if (this.Debugger1 != null) {
  583.          this.clearAllBreakPoints(true);
  584.          if (this.currentThread != null) {
  585.             try {
  586.                this.Debugger1.cont();
  587.                Thread.sleep(2000L);
  588.                this.currentThread.stop();
  589.             } catch (Exception var1) {
  590.             }
  591.          }
  592.  
  593.          if (this.Debugger1 != null) {
  594.             this.Debugger1.close();
  595.          }
  596.  
  597.          this.Debugger1 = null;
  598.          this.addConsole(this.moduleName + " stopped.");
  599.          this.user.JDesignerPro.gc();
  600.       }
  601.    }
  602.  
  603.    public void clearAllBreakPoints(boolean var1) {
  604.       try {
  605.          for(int var2 = 0; var2 < this.breakPoints.size(); ++var2) {
  606.             String var3 = this.getBreakPointModule(this.breakPoints.elementAt(var2));
  607.             int var4 = this.getBreakPointLine(this.breakPoints.elementAt(var2));
  608.  
  609.             try {
  610.                if (var3.equals(this.moduleName) && !var1) {
  611.                   this.sourcePanel.setIcon(var4, 0);
  612.                }
  613.  
  614.                RemoteClass var5 = this.Debugger1.findClass(var3);
  615.                ((RemoteClass)var5).clearBreakpointLine(var4);
  616.             } catch (Exception var6) {
  617.             }
  618.          }
  619.       } catch (Exception var7) {
  620.          ((Throwable)var7).printStackTrace();
  621.       }
  622.  
  623.       if (!var1) {
  624.          this.breakPoints = new Vector();
  625.  
  626.          for(int var8 = 0; var8 < this.disabledBreakPoints.size(); ++var8) {
  627.             String var9 = this.getBreakPointModule(this.disabledBreakPoints.elementAt(var8));
  628.             int var10 = this.getBreakPointLine(this.disabledBreakPoints.elementAt(var8));
  629.             if (var9.equals(this.moduleName)) {
  630.                this.sourcePanel.setIcon(var10, 0);
  631.             }
  632.          }
  633.  
  634.          this.disabledBreakPoints = new Vector();
  635.          this.user.mainmsg.setStatusMsg("All breakpoints removed.", 5);
  636.       }
  637.  
  638.    }
  639.  
  640.    public void disableAllBreakPoints() {
  641.       try {
  642.          if (this.lastEnableAllAction) {
  643.             for(int var8 = 0; var8 < this.breakPoints.size(); ++var8) {
  644.                String var9 = this.getBreakPointModule(this.breakPoints.elementAt(var8));
  645.                int var10 = this.getBreakPointLine(this.breakPoints.elementAt(var8));
  646.  
  647.                try {
  648.                   if (var9.equals(this.moduleName)) {
  649.                      this.sourcePanel.setIcon(var10, 2);
  650.                   }
  651.  
  652.                   this.disabledBreakPoints.addElement(var9 + ":" + Integer.toString(var10));
  653.                   RemoteClass var11 = this.Debugger1.findClass(var9);
  654.                   ((RemoteClass)var11).clearBreakpointLine(var10);
  655.                } catch (Exception var5) {
  656.                }
  657.             }
  658.  
  659.             this.breakPoints = new Vector();
  660.          } else {
  661.             for(int var1 = 0; var1 < this.disabledBreakPoints.size(); ++var1) {
  662.                String var2 = this.getBreakPointModule(this.disabledBreakPoints.elementAt(var1));
  663.                int var3 = this.getBreakPointLine(this.disabledBreakPoints.elementAt(var1));
  664.  
  665.                try {
  666.                   if (var2.equals(this.moduleName)) {
  667.                      this.sourcePanel.setIcon(var3, 1);
  668.                   }
  669.  
  670.                   this.breakPoints.addElement(var2 + ":" + Integer.toString(var3));
  671.                   RemoteClass var4 = this.Debugger1.findClass(var2);
  672.                   ((RemoteClass)var4).setBreakpointLine(var3);
  673.                } catch (Exception var6) {
  674.                }
  675.             }
  676.  
  677.             this.disabledBreakPoints = new Vector();
  678.          }
  679.       } catch (Exception var7) {
  680.          ((Throwable)var7).printStackTrace();
  681.       }
  682.    }
  683.  
  684.    public void restoreBreakPoints() {
  685.       boolean var1 = true;
  686.       int var2 = 0;
  687.  
  688.       while(var1 && var2++ < 4) {
  689.          try {
  690.             for(int var3 = 0; var3 < this.breakPoints.size(); ++var3) {
  691.                String var4 = this.getBreakPointModule(this.breakPoints.elementAt(var3));
  692.                int var5 = this.getBreakPointLine(this.breakPoints.elementAt(var3));
  693.                RemoteClass var6 = this.Debugger1.findClass(var4);
  694.  
  695.                try {
  696.                   ((RemoteClass)var6).setBreakpointLine(var5);
  697.                   if (var4.equals(this.moduleName)) {
  698.                      this.sourcePanel.setIcon(var5, 1);
  699.                   }
  700.                } catch (Exception var8) {
  701.                   this.breakPoints.removeElementAt(var3);
  702.                   --var3;
  703.                }
  704.             }
  705.  
  706.             var1 = false;
  707.          } catch (Exception var9) {
  708.             try {
  709.                Thread.sleep(3000L);
  710.             } catch (Exception var7) {
  711.             }
  712.          }
  713.       }
  714.  
  715.       if (this.breakPoints.size() > 0) {
  716.          this.user.mainmsg.setStatusMsg("Breakpoints restored.", 4);
  717.       }
  718.  
  719.       if (var1) {
  720.          this.user.mainmsg.setStatusMsg("Failed to restore breakpoints.", 7);
  721.       } else {
  722.          for(int var10 = 0; var10 < this.disabledBreakPoints.size(); ++var10) {
  723.             String var11 = this.getBreakPointModule(this.disabledBreakPoints.elementAt(var10));
  724.             int var12 = this.getBreakPointLine(this.disabledBreakPoints.elementAt(var10));
  725.             if (var11.equals(this.moduleName)) {
  726.                this.sourcePanel.setIcon(var12, 2);
  727.             }
  728.          }
  729.  
  730.       }
  731.    }
  732.  
  733.    public String getBreakPointModule(Object var1) {
  734.       String var2 = (String)var1;
  735.       var2 = var2.substring(0, var2.indexOf(":"));
  736.       return var2;
  737.    }
  738.  
  739.    public int getBreakPointLine(Object var1) {
  740.       String var2 = (String)var1;
  741.       var2 = var2.substring(var2.indexOf(":") + 1);
  742.       return Integer.parseInt(var2);
  743.    }
  744.  
  745.    public void positionSourcePointer(int var1) {
  746.       this.sourcePanel.resetSelections();
  747.       this.sourcePanel.select(var1 - 1);
  748.       this.sourcePanel.makeVisible(var1 - 1);
  749.    }
  750.  
  751.    public void loadStackVariables(RemoteThread var1) {
  752.       int var2 = this.watchPanel.yOffset;
  753.       byte var3 = 0;
  754.       if (this.watchPanel.scrollEast != null) {
  755.          this.watchPanel.scrollEast.getValue();
  756.       }
  757.  
  758.       this.clearWatchPanel();
  759.  
  760.       try {
  761.          Object var4 = null;
  762.          RemoteStackVariable[] var5 = var1.getStackVariables();
  763.  
  764.          for(int var6 = var5.length - 1; var6 >= 0; --var6) {
  765.             if (var5[var6] != null) {
  766.                RemoteValue var8 = var5[var6].getValue();
  767.                this.addWatchPanel(var5[var6].getName(), var8 == null ? "null" : var8.toString());
  768.             }
  769.          }
  770.  
  771.          if (var5.length == 0) {
  772.             this.addWatchPanel("", "No local variables exist. Class may not have been compiled with the -g option");
  773.          }
  774.  
  775.          this.watchPanel.yOffset = var2;
  776.          if (this.watchPanel.scrollEast != null) {
  777.             this.watchPanel.scrollEast.setValue(var3);
  778.          }
  779.  
  780.          this.watchPanel.reDraw();
  781.       } catch (Exception var7) {
  782.          ((Throwable)var7).printStackTrace();
  783.       }
  784.    }
  785.  
  786.    public void sourcePanelMain() {
  787.       if (this.sourcePanel == null) {
  788.          this.sourcePanel = new JDPList(this.user);
  789.          this.sourcePanel.setIconImagePath("Images/JDPDBSRC.gif");
  790.          this.sourcePanel.setFont(new Font("Courier", 0, 12));
  791.       }
  792.  
  793.    }
  794.  
  795.    public void consolePanelMain() {
  796.       if (this.consolePanel == null) {
  797.          this.consolePanel = new JDPList(this.user);
  798.       }
  799.  
  800.    }
  801.  
  802.    public void addConsole(String var1) {
  803.       this.consolePanel.addItem(var1);
  804.       this.consolePanel.resetSelections();
  805.       this.consolePanel.select(this.consolePanel.countItems() - 1);
  806.       this.consolePanel.makeVisible(this.consolePanel.countItems() - 1);
  807.    }
  808.  
  809.    public void clearConsole() {
  810.       this.consolePanel.clear();
  811.    }
  812.  
  813.    public void addConsoleVerbatim(String var1) {
  814.       this.consolePanel.addItem(var1);
  815.       this.consolePanel.select(this.consolePanel.countItems() - 1);
  816.       this.consolePanel.makeVisible(this.consolePanel.countItems() - 1);
  817.    }
  818.  
  819.    public void addWatchPanel(String var1, String var2) {
  820.       for(int var3 = 0; var3 < this.watchPanel.getTableRows(); ++var3) {
  821.          if (this.watchPanel.getText(0, var3) == null || this.watchPanel.getText(0, var3).equals("")) {
  822.             this.watchPanel.setText(var1, 0, var3);
  823.             this.watchPanel.setText(var2, 1, var3);
  824.             this.watchPanel.reDraw();
  825.             return;
  826.          }
  827.       }
  828.  
  829.    }
  830.  
  831.    public void clearWatchPanel() {
  832.       this.watchPanel.currentText = new String[this.watchPanel.getTableColumns()][this.watchPanel.getTableRows()];
  833.       this.watchPanel.newTable();
  834.    }
  835.  
  836.    public void loadSource(String var1) {
  837.       this.user.mainmsg.setStatusMsg("Loading source file...", 0);
  838.       String var2 = this.user.u.readFromFile(var1);
  839.       this.sourcePanel.clear();
  840.       if (var2 != null) {
  841.          String var4 = "";
  842.          String var5 = "";
  843.          int var6 = 1;
  844.          var2 = this.user.u.replace(var2, "\r\n", "\n");
  845.  
  846.          String var3;
  847.          for(StringTokenizer var7 = new StringTokenizer(var2, "\n", true); var7.hasMoreTokens(); var4 = var3) {
  848.             var3 = var7.nextToken();
  849.             if (var3.equals("\n") && var4.equals("\n")) {
  850.                var5 = this.user.u.str((float)(var6++), 5, 0);
  851.                this.sourcePanel.addItem(var5 + "   ", 11);
  852.             } else if (!var3.equals("\r") && !var3.equals("\n")) {
  853.                var5 = this.user.u.str((float)(var6++), 5, 0);
  854.                this.sourcePanel.addItem(var5 + "  " + this.user.u.replace(var3, "\t", "    "), 11);
  855.             }
  856.          }
  857.  
  858.          this.sourcePanel.reDraw();
  859.       }
  860.    }
  861.  
  862.    public void searchForText(String var1, boolean var2) {
  863.       if (var2) {
  864.          for(int var4 = this.lastSourceLine; var4 < this.sourcePanel.countItems(); ++var4) {
  865.             if (this.sourcePanel.getItem(var4).indexOf(var1) >= 0) {
  866.                this.sourcePanel.select(var4);
  867.                this.sourcePanel.makeVisible(var4);
  868.                this.lastSourceLine = var4 + 1;
  869.                return;
  870.             }
  871.          }
  872.  
  873.          this.user.mainmsg.setStatusMsg("Search string not found", 5);
  874.          this.lastSourceLine = 0;
  875.       } else {
  876.          for(int var3 = this.lastSourceLine - 1; var3 >= 0; --var3) {
  877.             if (this.sourcePanel.getItem(var3).indexOf(var1) >= 0) {
  878.                this.sourcePanel.select(var3);
  879.                this.sourcePanel.makeVisible(var3);
  880.                this.lastSourceLine = var3;
  881.                return;
  882.             }
  883.          }
  884.  
  885.          this.user.mainmsg.setStatusMsg("Search string not found", 5);
  886.          this.lastSourceLine = this.sourcePanel.countItems();
  887.       }
  888.    }
  889. }
  890.