home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Button;
- import java.awt.Container;
- import java.awt.Event;
- import java.awt.Frame;
- import java.awt.GridBagConstraints;
- import java.awt.GridBagLayout;
- import java.awt.GridLayout;
- import java.awt.Label;
- import java.awt.List;
- import java.awt.Panel;
- import java.awt.TextArea;
- import java.awt.TextField;
- import java.awt.Window;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.io.StringReader;
-
- class DebugGUI extends Frame {
- TextField field;
- Button setButton;
- String result;
- DataOutputStream dos;
- DataInputStream dis;
- DebugProcessThread debugThread;
- Process jdbProcess;
- TextArea textArea;
- TextArea cmdArea;
- TextArea varArea;
- List breakList;
- String command;
- String className;
- int sourceLine;
- String arguments;
- private String[] breakPoints = new String[0];
- private int breakPointCount;
- private boolean standAlone = false;
- private boolean debuggerActive = true;
- private boolean appletInUse = false;
-
- public boolean isDebuggerActive() {
- return this.debuggerActive;
- }
-
- public void makeStandAlone() {
- this.standAlone = true;
- }
-
- void updateBreakList() {
- this.breakList.removeAll();
-
- for(int var1 = 0; var1 < this.breakPointCount; ++var1) {
- this.breakList.add(this.breakPoints[var1]);
- }
-
- }
-
- void addBreakPoint(String var1) {
- String[] var2 = new String[this.breakPointCount];
-
- for(int var3 = 0; var3 < this.breakPointCount; ++var3) {
- var2[var3] = this.breakPoints[var3];
- }
-
- this.breakPoints = new String[++this.breakPointCount];
-
- int var4;
- for(var4 = 0; var4 < this.breakPointCount - 1; ++var4) {
- this.breakPoints[var4] = var2[var4];
- }
-
- this.breakPoints[var4] = var1;
- }
-
- private void deleteBreakPoint(String var1) {
- if (this.breakPointCount != 0) {
- String[] var2 = new String[this.breakPointCount];
-
- for(int var3 = 0; var3 < this.breakPointCount; ++var3) {
- var2[var3] = this.breakPoints[var3];
- }
-
- this.breakPoints = new String[--this.breakPointCount];
- int var5 = 0;
-
- for(int var4 = 0; var5 < this.breakPointCount + 1; ++var5) {
- if (var1 != var2[var5]) {
- this.breakPoints[var4++] = var2[var5];
- }
- }
-
- }
- }
-
- public void setClassName(String var1) {
- this.className = var1;
- }
-
- String getText() {
- return this.result;
- }
-
- public void sourceStart(int var1) {
- this.sourceLine = var1;
- }
-
- DebugGUI(String var1, String var2, String var3, boolean var4) {
- super(var1);
- this.init(var2, var3, var4);
- this.initProcess();
- ((Window)this).pack();
- ((Window)this).show();
- }
-
- public void output(String var1) {
- String var2 = this.textArea.getText();
- int var3 = var2.length();
- if (var3 > 25000) {
- this.textArea.setText(var2.substring(var3 - 20000));
- }
-
- this.textArea.appendText(var1);
- }
-
- public void listing(String var1) {
- this.cmdArea.appendText(var1);
- }
-
- public void varList(String var1) {
- this.varArea.appendText(var1);
- this.varArea.setCaretPosition(0);
- }
-
- public void write(String var1) {
- boolean var2 = this.testProcess(var1);
- if (!var1.equals(BrowserOptions.messages.getString("Quit")) || !var2) {
- StringReader var3 = new StringReader(var1);
-
- try {
- int var4;
- while((var4 = var3.read()) != -1) {
- this.dos.write(var4);
- }
-
- this.dos.write(10);
- this.dos.flush();
- } catch (IOException var5) {
- System.out.println(BrowserOptions.messages.getString("IOExceptionO"));
- }
- }
- }
-
- public void doList() {
- this.cmdArea.setText("");
- this.write("list");
- }
-
- public void doVariables() {
- this.varArea.setText("");
- this.write("locals");
- }
-
- public void quit() {
- this.write(BrowserOptions.messages.getString("Quit"));
- this.destroy();
- }
-
- private void destroy() {
- try {
- this.jdbProcess.waitFor();
- } catch (InterruptedException var1) {
- this.jdbProcess.destroy();
- }
-
- this.debugThread.stop();
- ((Frame)this).dispose();
- this.debuggerActive = false;
- if (this.standAlone) {
- System.exit(0);
- }
-
- }
-
- public boolean action(Event var1, Object var2) {
- boolean var3 = false;
- String var4 = this.getSelectedText();
- if (!var4.equals("")) {
- var3 = true;
- }
-
- if (var1.target == this.field) {
- var3 = true;
- } else if (var1.arg == BrowserOptions.messages.getString("Quit")) {
- this.write((String)var1.arg);
- this.destroy();
- } else if (var1.arg == BrowserOptions.messages.getString("Up")) {
- this.write((String)var1.arg);
- this.doList();
- this.doVariables();
- } else if (var1.arg == BrowserOptions.messages.getString("Down")) {
- this.write((String)var1.arg);
- this.doList();
- this.doVariables();
- } else if (var1.arg == BrowserOptions.messages.getString("ScrollUp")) {
- if (this.sourceLine > 6) {
- this.cmdArea.setText("");
- this.write("list " + (new Integer(this.sourceLine -= 11)).toString());
- }
- } else if (var1.arg == BrowserOptions.messages.getString("ScrollDn")) {
- if (this.sourceLine < 10000) {
- this.cmdArea.setText("");
- this.write("list " + (new Integer(this.sourceLine += 3)).toString());
- }
- } else if (var1.arg == BrowserOptions.messages.getString("Run")) {
- this.field.setText((String)var1.arg + " " + this.className + " " + this.arguments);
- this.field.setCaretPosition(this.field.getText().length());
- this.field.requestFocus();
- } else if (var1.arg == BrowserOptions.messages.getString("StopAt")) {
- this.field.setText((String)var1.arg + " " + this.className + ":" + var4);
- this.field.setCaretPosition(this.field.getText().length());
- this.field.requestFocus();
- } else if (var1.arg == BrowserOptions.messages.getString("StopIn")) {
- this.field.setText((String)var1.arg + " " + this.className.trim() + "." + var4);
- this.field.setCaretPosition(this.field.getText().length());
- this.field.requestFocus();
- } else if (var1.arg == BrowserOptions.messages.getString("Print")) {
- this.field.setText((String)var1.arg + " " + var4);
- this.field.setCaretPosition(this.field.getText().length());
- this.field.requestFocus();
- } else if (var1.arg == BrowserOptions.messages.getString("Methods")) {
- this.field.setText((String)var1.arg + " " + this.className);
- this.field.setCaretPosition(this.field.getText().length());
- this.field.requestFocus();
- } else if (var1.arg == BrowserOptions.messages.getString("Clear")) {
- if (this.breakList.getSelectedItem() != null) {
- this.deleteBreakPoint(this.breakList.getSelectedItem());
- this.write((String)var1.arg + " " + this.breakList.getSelectedItem());
- this.updateBreakList();
- }
- } else {
- this.write((String)var1.arg);
- }
-
- if (var3) {
- this.result = this.field.getText();
- this.write(this.result);
- this.field.setText("");
- this.output("\n");
- }
-
- return true;
- }
-
- public static void main(String[] var0) {
- if (var0.length < 1) {
- System.out.println("Usage: java ProcessThread <cmd> [<args>]");
- System.exit(0);
- }
-
- String var2 = new String(BrowserOptions.debugger + " ");
-
- for(int var1 = 1; var1 < var0.length; ++var1) {
- var2 = var2 + " " + var0[var1];
- }
-
- DebugGUI var3 = new DebugGUI("JDB " + var0[0], var2, var0[0], false);
- var3.makeStandAlone();
- }
-
- public boolean handleEvent(Event var1) {
- switch (var1.id) {
- case 201:
- ((Frame)this).dispose();
- default:
- return super.handleEvent(var1);
- }
- }
-
- void initProcess() {
- boolean var1 = false;
- if (this.jdbProcess == null) {
- var1 = true;
- }
-
- Runtime var2 = Runtime.getRuntime();
-
- try {
- this.jdbProcess = var2.exec(this.command);
- } catch (IOException var3) {
- System.out.println(BrowserOptions.messages.getString("Initializi"));
- }
-
- this.dis = new DataInputStream(this.jdbProcess.getInputStream());
- new DataInputStream(this.jdbProcess.getErrorStream());
- this.dos = new DataOutputStream(this.jdbProcess.getOutputStream());
- this.debugThread = new DebugProcessThread(this.command, this, this.dis);
- this.debugThread.start();
- if (this.appletInUse && this.className != null) {
- this.write("load " + this.className);
- this.write(BrowserOptions.messages.getString("StopIn") + " " + this.className + ".init");
- if (var1) {
- this.write(BrowserOptions.messages.getString("Run"));
- return;
- }
- } else if (this.className != null) {
- this.write(BrowserOptions.messages.getString("StopIn") + " " + this.className + ".main");
- if (var1) {
- this.write(BrowserOptions.messages.getString("Run"));
- }
- }
-
- }
-
- boolean testProcess(String var1) {
- try {
- this.jdbProcess.exitValue();
- } catch (IllegalThreadStateException var3) {
- return false;
- }
-
- if (var1.equals(BrowserOptions.messages.getString("Quit"))) {
- return true;
- } else if (var1.equals("")) {
- return true;
- } else if (var1.startsWith(BrowserOptions.messages.getString("Run"))) {
- this.initProcess();
- return true;
- } else {
- SimpleDialog var2 = new SimpleDialog(this, BrowserOptions.messages.getString("Attempting") + var1 + BrowserOptions.messages.getString("CommandJDB"));
- if (var2.result) {
- this.initProcess();
- } else {
- this.destroy();
- }
-
- return true;
- }
- }
-
- private String getSelectedText() {
- String var1 = this.cmdArea.getSelectedText();
- if (!var1.equals("")) {
- return var1;
- } else {
- var1 = this.varArea.getSelectedText();
- if (!var1.equals("")) {
- return var1;
- } else {
- var1 = this.textArea.getSelectedText();
- return !var1.equals("") ? var1 : "";
- }
- }
- }
-
- void clearAllBreakpoints(boolean var1) {
- if (var1) {
- for(int var2 = 0; var2 < this.breakPointCount; ++var2) {
- this.write(BrowserOptions.messages.getString("Clear") + " " + this.breakPoints[var2]);
- }
- }
-
- this.breakPointCount = 0;
- this.updateBreakList();
- }
-
- void init(String var1, String var2, boolean var3) {
- if (var3) {
- this.command = var1;
- this.className = var2;
- this.arguments = "";
- this.appletInUse = true;
- } else {
- try {
- this.className = var2.substring(0, var2.indexOf(" "));
- } catch (StringIndexOutOfBoundsException var14) {
- this.className = var2;
- }
-
- try {
- this.arguments = var2.substring(var2.indexOf(" "));
- } catch (StringIndexOutOfBoundsException var13) {
- this.arguments = "";
- }
-
- this.command = var1 + this.className + this.arguments;
- }
-
- GridBagLayout var4 = new GridBagLayout();
- GridBagConstraints var5 = new GridBagConstraints();
- ((Container)this).setLayout(var4);
- var5.fill = 1;
- var5.ipadx = 0;
- var5.ipady = 0;
- var5.anchor = 10;
- var5.gridx = -1;
- var5.gridy = -1;
- this.cmdArea = new TextArea("", 10, 40, 2);
- this.cmdArea.setEditable(false);
- var5.gridwidth = 0;
- var5.gridheight = 1;
- var5.weightx = (double)1.0F;
- var5.weighty = (double)0.0F;
- var4.setConstraints(this.cmdArea, var5);
- ((Container)this).add("North", this.cmdArea);
- Panel var6 = new Panel();
- GridBagLayout var7 = new GridBagLayout();
- ((Container)var6).setLayout(var7);
- var5.fill = 1;
- var5.ipadx = 0;
- var5.ipady = 0;
- var5.anchor = 10;
- var5.gridx = -1;
- var5.gridy = -1;
- Label var8 = new Label(BrowserOptions.messages.getString("LocalsCmd"), 1);
- var5.gridwidth = -1;
- var5.gridheight = 1;
- var5.weightx = (double)0.0F;
- var5.weighty = (double)0.0F;
- var7.setConstraints(var8, var5);
- ((Container)var6).add("West", var8);
- this.field = new TextField(28);
- var5.gridwidth = 0;
- var5.gridheight = 1;
- var5.weightx = (double)1.0F;
- var5.weighty = (double)0.0F;
- var7.setConstraints(this.field, var5);
- ((Container)var6).add("East", this.field);
- this.varArea = new TextArea(5, 25);
- this.varArea.setEditable(false);
- var5.gridwidth = 0;
- var5.gridheight = 0;
- var5.weightx = (double)1.0F;
- var5.weighty = (double)0.0F;
- var7.setConstraints(this.varArea, var5);
- ((Container)var6).add("South", this.varArea);
- var5.gridwidth = -1;
- var5.gridheight = 1;
- var5.weightx = (double)1.0F;
- var5.weighty = (double)0.0F;
- var4.setConstraints(var6, var5);
- ((Container)this).add("West", var6);
- Panel var9 = new Panel();
- ((Container)var9).setLayout(new GridLayout(0, 5, 4, 4));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Next")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Cont")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Step")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("StepUp")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Print")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("ScrollUp")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Up")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Clear")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("StopAt")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("StopIn")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("ScrollDn")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Down")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Threads")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Suspend")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Resume")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Run")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Where")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Methods")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Memory")));
- ((Container)var9).add(new Button(BrowserOptions.messages.getString("Quit")));
- var5.gridwidth = 0;
- var5.gridheight = 1;
- var5.weightx = (double)1.0F;
- var5.weighty = (double)0.0F;
- var4.setConstraints(var9, var5);
- ((Container)this).add("East", var9);
- Panel var10 = new Panel();
- GridBagLayout var11 = new GridBagLayout();
- ((Container)var10).setLayout(var11);
- var5.fill = 1;
- var5.ipadx = 0;
- var5.ipady = 0;
- var5.anchor = 10;
- var5.gridx = -1;
- var5.gridy = -1;
- this.textArea = new TextArea();
- this.textArea.setEditable(false);
- var5.gridwidth = 1;
- var5.gridheight = 2;
- var5.weightx = 0.6;
- var5.weighty = (double)1.0F;
- var11.setConstraints(this.textArea, var5);
- ((Container)var10).add(this.textArea);
- Label var12 = new Label(BrowserOptions.messages.getString("Breaks"), 0);
- var5.gridwidth = 0;
- var5.gridheight = 1;
- var5.weightx = (double)0.0F;
- var5.weighty = (double)0.0F;
- var11.setConstraints(var12, var5);
- ((Container)var10).add(var12);
- this.breakList = new List();
- var5.gridwidth = 0;
- var5.gridheight = 1;
- var5.weightx = 0.4;
- var5.weighty = (double)1.0F;
- var11.setConstraints(this.breakList, var5);
- ((Container)var10).add(this.breakList);
- var5.gridwidth = 0;
- var5.gridheight = 0;
- var5.weightx = (double)1.0F;
- var5.weighty = (double)1.0F;
- var4.setConstraints(var10, var5);
- ((Container)this).add("South", var10);
- ((Frame)this).setIconImage(BrowserOptions.iconImage);
- }
-
- DebugGUI(String var1, String var2, String var3, int var4) {
- super(var1);
- this.init(var2, var3, false);
- ((Window)this).pack();
- this.initProcess();
- this.evaluateInit(var3, var4);
- ((Window)this).show();
- }
-
- void evaluateReinit(String var1) {
- this.clearAllBreakpoints(true);
- this.write("use .");
- this.setClassName(var1);
- this.write("load " + var1);
- this.write(BrowserOptions.messages.getString("StopIn") + " " + var1 + ".main");
- this.write(BrowserOptions.messages.getString("Run") + " " + var1);
- }
-
- void evaluateInit(String var1, int var2) {
- this.write(BrowserOptions.messages.getString("StopAt") + " " + var1 + ":" + (new Integer(4 + var2)).toString());
- }
- }
-