home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 27 / CDROM27.iso / share / wnt / jig / data1.cab / Program_Executable_Files / lib / jig.jar / BrowserView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-08-19  |  31.2 KB  |  2,023 lines

  1. import java.awt.CheckboxMenuItem;
  2. import java.awt.Component;
  3. import java.awt.Container;
  4. import java.awt.Dialog;
  5. import java.awt.Dimension;
  6. import java.awt.Event;
  7. import java.awt.FileDialog;
  8. import java.awt.Font;
  9. import java.awt.Frame;
  10. import java.awt.GridBagConstraints;
  11. import java.awt.GridBagLayout;
  12. import java.awt.List;
  13. import java.awt.Menu;
  14. import java.awt.MenuBar;
  15. import java.awt.MenuItem;
  16. import java.awt.PopupMenu;
  17. import java.awt.TextArea;
  18. import java.awt.Window;
  19. import java.io.File;
  20. import java.io.FileOutputStream;
  21. import java.io.IOException;
  22. import java.io.StreamTokenizer;
  23. import java.io.StringReader;
  24. import java.io.TextTokenizer;
  25. import java.util.Observable;
  26. import java.util.Observer;
  27. import java.util.StringTokenizer;
  28.  
  29. public class BrowserView extends Frame implements Observer, CallbackWaiter {
  30.    BrowserModel model;
  31.    TextArea output;
  32.    WorkSpace workSpace;
  33.    List packages;
  34.    List classes;
  35.    List methods;
  36.    String oldText;
  37.    static int BrowserCount = 1;
  38.    static int ViewCollectionMax = 256;
  39.    static BrowserView[] ViewCollection;
  40.    DebugGUI debugger;
  41.    DebugGUI evaluateDebugger;
  42.    String debugFilename;
  43.    String evaluateClass;
  44.    int evaluateNumber;
  45.    int evaluateBreakLine;
  46.    boolean updateSelector = true;
  47.    int oldMethodIndex = -1;
  48.    int oldClassIndex = -1;
  49.    int oldPackageIndex = -1;
  50.    boolean newClassOrMethod = false;
  51.    String recordedSelectedText;
  52.    MenuItem itemCopy;
  53.    MenuItem itemCut;
  54.    MenuItem itemPaste;
  55.    MenuItem itemUndo;
  56.    MenuItem itemFormat;
  57.    MenuItem itemSave;
  58.    MenuItem itemSaveAll;
  59.    MenuItem itemNewMethod;
  60.    MenuItem itemNewClass;
  61.    MenuItem itemSaveCompile;
  62.    MenuItem itemCompile;
  63.    MenuItem itemJava;
  64.    MenuItem itemDebug;
  65.    MenuItem itemEvaluate;
  66.    MenuItem itemWorkSpace;
  67.    MenuItem itemExit;
  68.    MenuItem itemFindNext;
  69.    MenuItem itemFind;
  70.    MenuItem itemReplace;
  71.    MenuItem itemDiscardEdits;
  72.    MenuItem itemMatch;
  73.    MenuItem itemLineNumbers;
  74.    MenuItem itemOptions;
  75.    MenuItem itemBrowseReferences;
  76.    MenuItem itemBrowseSenders;
  77.    MenuItem itemBrowseReceivers;
  78.    MenuItem itemBrowseHierarchy;
  79.    MenuItem itemBrowseInterfaces;
  80.    MenuItem itemBrowseExtenders;
  81.    MenuItem itemBrowseImplementors;
  82.    MenuItem itemBrowseClass;
  83.    MenuItem itemBrowseSystem;
  84.    MenuItem itemRemoveMethod;
  85.    MenuItem itemHelpContents;
  86.    MenuItem itemHelpAbout;
  87.    MenuItem itemSaveRun;
  88.    MenuItem itemNewInterface;
  89.    MenuItem itemRenameClass;
  90.    MenuItem itemRenameMethod;
  91.    MenuItem itemDeleteClass;
  92.    MenuItem itemAppletViewer;
  93.    MenuItem itemAppletViewerDebug;
  94.    MenuItem itemHtmlBrowser;
  95.    MenuItem itemTranscript;
  96.    MenuItem itemDocument;
  97.    MenuItem itemBrowseStack;
  98.    private static String DebugEvaluate;
  99.    private static String Options;
  100.    private static String Accept;
  101.    private static String Interpret;
  102.    private static String Debug;
  103.    private static String Evaluate;
  104.    private static String Format;
  105.    private static String Copy;
  106.    private static String Cut;
  107.    private static String Paste;
  108.    private static String Undo;
  109.    private static String Match;
  110.    private static String Fonts;
  111.    private static String Save;
  112.    private static String SaveAll;
  113.    private static String SaveCompile;
  114.    private static String Exit;
  115.    private static String Find;
  116.    private static String Replace;
  117.    private static String DiscardEdits;
  118.    private static String FindNext;
  119.    private static String Contents;
  120.    private static String About;
  121.    private static String LineNumbers;
  122.    private static String NewMethod;
  123.    private static String NewClass;
  124.    private static String RemoveMethod;
  125.    private static String Senders;
  126.    private static String Receivers;
  127.    private static String Implementors;
  128.    private static String References;
  129.    private static String Interfaces;
  130.    private static String Extenders;
  131.    private static String Hierarchy;
  132.    private static String NewBrowser;
  133.    private static String ClassBrowser;
  134.    private static String NewWorkSpace;
  135.    private static String SaveRun;
  136.    private static String NewInterface;
  137.    private static String RenameClass;
  138.    private static String RenameMethod;
  139.    private static String DeleteClass;
  140.    private static String AppletViewer;
  141.    private static String AppletViewerDebug;
  142.    private static String HtmlBrowser;
  143.    private static String Transcript;
  144.    private static String Document;
  145.    private static String BrowseStack;
  146.    int delta = 3;
  147.  
  148.    BrowserView(BrowserModel var1, String var2, boolean var3) {
  149.       super(var2 == null ? AboutBrowser.systemName : var2);
  150.       this.model = var1;
  151.       ((Observable)var1).addObserver(this);
  152.       ViewCollectionAdd(this);
  153.       Options = BrowserOptions.messages.getString("Options");
  154.       Accept = BrowserOptions.messages.getString("Compile");
  155.       Interpret = BrowserOptions.messages.getString("Run0");
  156.       Debug = BrowserOptions.messages.getString("Debug");
  157.       Evaluate = BrowserOptions.messages.getString("Evaluate");
  158.       Format = BrowserOptions.messages.getString("Format");
  159.       Copy = BrowserOptions.messages.getString("Copy");
  160.       Cut = BrowserOptions.messages.getString("Cut");
  161.       Paste = BrowserOptions.messages.getString("Paste");
  162.       Undo = BrowserOptions.messages.getString("Undo");
  163.       Match = BrowserOptions.messages.getString("Match");
  164.       Fonts = BrowserOptions.messages.getString("Fonts");
  165.       Save = BrowserOptions.messages.getString("Save");
  166.       SaveAll = BrowserOptions.messages.getString("SaveAll");
  167.       SaveCompile = BrowserOptions.messages.getString("SaveCompil");
  168.       Exit = BrowserOptions.messages.getString("Exit");
  169.       Find = BrowserOptions.messages.getString("Find");
  170.       Replace = BrowserOptions.messages.getString("Replace");
  171.       DiscardEdits = BrowserOptions.messages.getString("DiscardEdi");
  172.       FindNext = BrowserOptions.messages.getString("FindNext");
  173.       Contents = BrowserOptions.messages.getString("Documentat");
  174.       About = BrowserOptions.messages.getString("About");
  175.       LineNumbers = BrowserOptions.messages.getString("LineNumber");
  176.       NewMethod = BrowserOptions.messages.getString("NewMethod");
  177.       NewClass = BrowserOptions.messages.getString("NewClass");
  178.       RemoveMethod = BrowserOptions.messages.getString("DeleteMeth");
  179.       Senders = BrowserOptions.messages.getString("Senders");
  180.       Receivers = BrowserOptions.messages.getString("Receivers");
  181.       Implementors = BrowserOptions.messages.getString("Implemento");
  182.       References = BrowserOptions.messages.getString("References");
  183.       Interfaces = BrowserOptions.messages.getString("Interfaces");
  184.       Extenders = BrowserOptions.messages.getString("Extenders");
  185.       Hierarchy = BrowserOptions.messages.getString("Hierarchy");
  186.       NewBrowser = BrowserOptions.messages.getString("System");
  187.       ClassBrowser = BrowserOptions.messages.getString("ClassOrInt");
  188.       NewWorkSpace = BrowserOptions.messages.getString("WorkSpace");
  189.       SaveRun = BrowserOptions.messages.getString("SaveRun");
  190.       NewInterface = BrowserOptions.messages.getString("NewInterfa");
  191.       RenameClass = BrowserOptions.messages.getString("RenameClas");
  192.       RenameMethod = BrowserOptions.messages.getString("RenameMeth");
  193.       DeleteClass = BrowserOptions.messages.getString("DeleteClas");
  194.       AppletViewer = BrowserOptions.messages.getString("AppletView");
  195.       AppletViewerDebug = BrowserOptions.messages.getString("AppletViewD");
  196.       HtmlBrowser = BrowserOptions.messages.getString("HTMLBrowse");
  197.       Transcript = BrowserOptions.messages.getString("Transcript");
  198.       Document = BrowserOptions.messages.getString("Document");
  199.       BrowseStack = BrowserOptions.messages.getString("StackTrace");
  200.       MenuBar var4 = new MenuBar();
  201.       ((Frame)this).setMenuBar(var4);
  202.       Menu var6;
  203.       var4.add(var6 = new Menu(BrowserOptions.messages.getString("File"), true));
  204.       var6.add(this.itemSave = new MenuItem(Save));
  205.       var6.add(this.itemSaveAll = new MenuItem(SaveAll));
  206.       var6.add(this.itemSaveRun = new MenuItem(SaveRun));
  207.       var6.add(this.itemSaveCompile = new MenuItem(SaveCompile));
  208.       var6.add(this.itemCompile = new MenuItem(Accept));
  209.       var6.addSeparator();
  210.       var6.add(this.itemJava = new MenuItem(Interpret));
  211.       var6.add(this.itemDebug = new MenuItem(Debug));
  212.       var6.add(this.itemEvaluate = new MenuItem(Evaluate));
  213.       var6.addSeparator();
  214.       var6.add(this.itemAppletViewer = new MenuItem(AppletViewer));
  215.       var6.add(this.itemAppletViewerDebug = new MenuItem(AppletViewerDebug));
  216.       var6.add(this.itemHtmlBrowser = new MenuItem(HtmlBrowser));
  217.       var6.addSeparator();
  218.       var6.add(this.itemDocument = new MenuItem(Document));
  219.       var6.addSeparator();
  220.       var6.add(this.itemWorkSpace = new MenuItem(NewWorkSpace));
  221.       var6.addSeparator();
  222.       var6.add(this.itemExit = new MenuItem(Exit));
  223.       Menu var7;
  224.       var4.add(var7 = new Menu(BrowserOptions.messages.getString("Edit")));
  225.       var7.add(this.itemFindNext = new MenuItem(FindNext));
  226.       var7.add(this.itemFind = new MenuItem(Find));
  227.       var7.add(this.itemReplace = new MenuItem(Replace));
  228.       var7.addSeparator();
  229.       var7.add(this.itemFormat = new MenuItem(Format));
  230.       var7.addSeparator();
  231.       var7.add(this.itemDiscardEdits = new MenuItem(DiscardEdits));
  232.       this.itemUndo = new MenuItem(Undo);
  233.       this.itemCopy = new MenuItem(Copy);
  234.       this.itemCut = new MenuItem(Cut);
  235.       this.itemPaste = new MenuItem(Paste);
  236.       Menu var11;
  237.       var4.add(var11 = new Menu(BrowserOptions.messages.getString("View")));
  238.       var11.add(this.itemMatch = new MenuItem(Match));
  239.       var11.add(this.itemLineNumbers = new CheckboxMenuItem(LineNumbers));
  240.       var11.addSeparator();
  241.       var11.add(this.itemOptions = new MenuItem(Options));
  242.       var11.add(this.itemTranscript = new MenuItem(Transcript));
  243.       Menu var8;
  244.       var4.add(var8 = new Menu(BrowserOptions.messages.getString("Browse")));
  245.       var8.add(this.itemBrowseSystem = new MenuItem(NewBrowser));
  246.       var8.addSeparator();
  247.       var8.add(this.itemBrowseReferences = new MenuItem(References));
  248.       var8.add(this.itemBrowseSenders = new MenuItem(Senders));
  249.       var8.add(this.itemBrowseReceivers = new MenuItem(Receivers));
  250.       var8.addSeparator();
  251.       var8.add(this.itemBrowseClass = new MenuItem(ClassBrowser));
  252.       var8.add(this.itemBrowseHierarchy = new MenuItem(Hierarchy));
  253.       var8.add(this.itemBrowseInterfaces = new MenuItem(Interfaces));
  254.       var8.addSeparator();
  255.       var8.add(this.itemBrowseExtenders = new MenuItem(Extenders));
  256.       var8.add(this.itemBrowseImplementors = new MenuItem(Implementors));
  257.       var8.addSeparator();
  258.       var8.add(this.itemBrowseStack = new MenuItem(BrowseStack));
  259.       Menu var9;
  260.       var4.add(var9 = new Menu(BrowserOptions.messages.getString("Source")));
  261.       var9.add(this.itemNewMethod = new MenuItem(NewMethod));
  262.       var9.add(this.itemNewClass = new MenuItem(NewClass));
  263.       var9.add(this.itemNewInterface = new MenuItem(NewInterface));
  264.       var9.addSeparator();
  265.       var9.add(this.itemRenameMethod = new MenuItem(RenameMethod));
  266.       var9.add(this.itemRenameClass = new MenuItem(RenameClass));
  267.       var9.addSeparator();
  268.       var9.add(this.itemRemoveMethod = new MenuItem(RemoveMethod));
  269.       var9.add(this.itemDeleteClass = new MenuItem(DeleteClass));
  270.       Menu var10;
  271.       var4.add(var10 = new Menu(BrowserOptions.messages.getString("Help")));
  272.       if (BrowserOptions.testRecord) {
  273.          var10.add(new MenuItem(BrowserOptions.messages.getString("Test")));
  274.       }
  275.  
  276.       var10.add(this.itemHelpContents = new MenuItem(Contents));
  277.       var10.add(this.itemHelpAbout = new MenuItem(About));
  278.       this.classes = new List();
  279.       this.methods = new List();
  280.       this.output = new TextArea(10, 30);
  281.       this.output.setEditable(true);
  282.       this.output.setFont(new Font("Courier", 0, 12));
  283.       if (var3) {
  284.          this.packages = new List();
  285.          String[] var12 = var1.currentPackages();
  286.  
  287.          for(int var13 = 0; var13 < var12.length; ++var13) {
  288.             this.packages.addItem(var12[var13]);
  289.          }
  290.       } else {
  291.          var1.currentClasses();
  292.       }
  293.  
  294.       GridBagLayout var14 = new GridBagLayout();
  295.       GridBagConstraints var15 = new GridBagConstraints();
  296.       ((Container)this).setLayout(var14);
  297.       var15.fill = 1;
  298.       var15.weightx = (double)1.0F;
  299.       var15.weighty = 0.6;
  300.       if (var3) {
  301.          var14.setConstraints(this.packages, var15);
  302.          ((Container)this).add(this.packages);
  303.       }
  304.  
  305.       var14.setConstraints(this.classes, var15);
  306.       ((Container)this).add(this.classes);
  307.       var15.gridwidth = 0;
  308.       var14.setConstraints(this.methods, var15);
  309.       ((Container)this).add(this.methods);
  310.       var15.weighty = (double)1.0F;
  311.       var15.gridy = 1;
  312.       var15.gridheight = -1;
  313.       PopupMenu var5 = new PopupMenu();
  314.       ((Menu)var5).add(new MenuItem(BrowserOptions.messages.getString("Undo")));
  315.       ((Menu)var5).addSeparator();
  316.       ((Menu)var5).add(new MenuItem(Cut));
  317.       ((Menu)var5).add(new MenuItem(Copy));
  318.       ((Menu)var5).add(new MenuItem(Paste));
  319.       ((Menu)var5).addSeparator();
  320.       ((Menu)var5).add(new MenuItem(BrowserOptions.messages.getString("Select")));
  321.       ((Menu)var5).add(new MenuItem(Accept));
  322.       ((Menu)var5).add(new MenuItem(Save));
  323.       this.output.add(var5);
  324.       var15.weightx = (double)0.0F;
  325.       var14.setConstraints(this.output, var15);
  326.       ((Container)this).add(this.output);
  327.       if (((Frame)this).getTitle().equals(AboutBrowser.systemName)) {
  328.          this.output.setText("\n\n\t" + AboutBrowser.name + "\n" + "\t" + AboutBrowser.version() + "\n" + "\t" + AboutBrowser.copyright + "\n" + "\t" + AboutBrowser.company + "\n" + "\t" + AboutBrowser.rights + "\n" + AboutBrowser.licenseInfo());
  329.       }
  330.  
  331.       ((Frame)this).setIconImage(BrowserOptions.iconImage);
  332.       ((Window)this).pack();
  333.       ((Container)this).validate();
  334.       ((Component)this).setSize(600, 420);
  335.       ((Window)this).show();
  336.       this.updateState();
  337.    }
  338.  
  339.    private void destroy() {
  340.       if (((Frame)this).getTitle() == this.model.systemTitle()) {
  341.          for(int var1 = 1; var1 < ViewCollectionMax; ++var1) {
  342.             if (ViewCollection[var1] != null && !ViewCollection[var1].testDiscard()) {
  343.                return;
  344.             }
  345.          }
  346.  
  347.          if (this.testDiscard()) {
  348.             System.exit(0);
  349.          }
  350.       } else if (this.testDiscard()) {
  351.          this.model.finalization();
  352.          ViewCollectionDelete(this);
  353.          ((Frame)this).dispose();
  354.       }
  355.    }
  356.  
  357.    private String getSelectedText() {
  358.       String var1 = this.getSelectedTextNotTitle();
  359.       if (!var1.equals("")) {
  360.          return var1;
  361.       } else {
  362.          String var2 = ((Frame)this).getTitle();
  363.          int var3 = 0;
  364.          if ((var3 = var2.indexOf(BrowserOptions.messages.getString("OutOfDate"))) >= 0) {
  365.             var2 = var2.substring(0, var3);
  366.          }
  367.  
  368.          var3 = var2.indexOf(32);
  369.          if (var3 >= 0) {
  370.             var1 = var2.substring(var3 + 1);
  371.             var3 = var1.indexOf(32);
  372.             if (var3 >= 0) {
  373.                return var1.substring(var3 + 1);
  374.             }
  375.          }
  376.  
  377.          return "";
  378.       }
  379.    }
  380.  
  381.    public boolean newMethod() {
  382.       if (!this.testDiscard()) {
  383.          return false;
  384.       } else {
  385.          String var1 = null;
  386.          if (this.recordedSelectedText == null) {
  387.             QueryDialog var2 = new QueryDialog(this, BrowserOptions.messages.getString("MethodCrea"), BrowserOptions.messages.getString("EnterTheNe"));
  388.             if (var2.getText() != null) {
  389.                var1 = var2.getText();
  390.                if (Recorder.ois != null || Recorder.oos != null && true) {
  391.                   this.recordedSelectedText = var2.getText();
  392.                }
  393.             }
  394.          } else {
  395.             var1 = this.recordedSelectedText;
  396.          }
  397.  
  398.          if (var1 != null) {
  399.             int var3 = this.methods.getSelectedIndex();
  400.             if (var3 != -1) {
  401.                this.methods.deselect(var3);
  402.             }
  403.  
  404.             this.oldMethodIndex = -1;
  405.             this.newClassOrMethod = true;
  406.             this.model.newMethod(var1);
  407.             return true;
  408.          } else {
  409.             return false;
  410.          }
  411.       }
  412.    }
  413.  
  414.    public boolean newClass() {
  415.       if (!this.testDiscard()) {
  416.          return false;
  417.       } else {
  418.          String var1 = null;
  419.          if (this.recordedSelectedText == null) {
  420.             QueryDialog var2 = new QueryDialog(this, BrowserOptions.messages.getString("ClassCreat"), BrowserOptions.messages.getString("EnterTheNew"));
  421.             if (var2.getText() != null) {
  422.                if (this.model.fileLoader.existClassFile(this.model.currentPackageName() + "." + var2.getText())) {
  423.                   new InformationDialog(this, BrowserOptions.messages.getString("TheClassFi") + " " + var2.getText() + BrowserOptions.messages.getString("JavaAlread"));
  424.                   return false;
  425.                }
  426.  
  427.                var1 = var2.getText();
  428.                if (Recorder.ois != null || Recorder.oos != null && true) {
  429.                   this.recordedSelectedText = var2.getText();
  430.                }
  431.             }
  432.          } else {
  433.             var1 = this.recordedSelectedText;
  434.          }
  435.  
  436.          if (var1 != null) {
  437.             int var3 = this.classes.getSelectedIndex();
  438.             if (var3 != -1) {
  439.                this.classes.deselect(var3);
  440.             }
  441.  
  442.             var3 = this.methods.getSelectedIndex();
  443.             if (var3 != -1) {
  444.                this.methods.deselect(var3);
  445.             }
  446.  
  447.             this.oldClassIndex = -1;
  448.             this.oldMethodIndex = -1;
  449.             this.newClassOrMethod = true;
  450.             this.model.newClass(var1);
  451.             this.oldText = "";
  452.             return true;
  453.          } else {
  454.             return false;
  455.          }
  456.       }
  457.    }
  458.  
  459.    private void browse(int var1) {
  460.       if (this.whichFitsBrowserType(var1) && this.selectedTextIsFromTitle()) {
  461.          String var5 = this.getSelectedText();
  462.          var1 = -var1;
  463.          if (!this.model.grep(var5, var1)) {
  464.             new InformationDialog(this, BrowserOptions.messages.getString("NoMatchesF"));
  465.             this.destroy();
  466.             return;
  467.          }
  468.  
  469.          if (this.testDiscard()) {
  470.             this.model.currentClasses();
  471.             this.resetTitle();
  472.             return;
  473.          }
  474.       } else {
  475.          if (var1 <= 5) {
  476.             String var4 = this.getSelectedText();
  477.             if (var4 != null && !var4.equals("")) {
  478.                if (!this.model.grep(var4, var1)) {
  479.                   new InformationDialog(this, BrowserOptions.messages.getString("NoMatchesF"));
  480.                   return;
  481.                }
  482.             } else {
  483.                new InformationDialog(this, BrowserOptions.messages.getString("NoTextWasS"));
  484.             }
  485.  
  486.             return;
  487.          }
  488.  
  489.          if (var1 == 6) {
  490.             String var2 = this.getSelectedTextNotTitle();
  491.             if (!this.model.classBrowser(var2)) {
  492.                new InformationDialog(this, BrowserOptions.messages.getString("TheSelecte"));
  493.             }
  494.          }
  495.       }
  496.  
  497.    }
  498.  
  499.    public boolean interpret(String var1) {
  500.       String var2 = this.model.GetRootDir() + BrowserFileLoader.correctFileName(this.model.currentPackageName());
  501.       String var3 = BrowserOptions.interpreter + " ";
  502.       String var4 = "-classpath " + var2 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  503.       Object var5 = null;
  504.       String var8;
  505.       if (var1 != null && !var1.equals("")) {
  506.          var8 = var1;
  507.       } else {
  508.          var8 = this.model.classNamePart();
  509.          if (!this.model.fileLoader.isClassCompiled(this.model.majorClassName())) {
  510.             ProcessThread var6 = this.compile((String)null);
  511.  
  512.             try {
  513.                Thread.sleep(100L);
  514.             } catch (InterruptedException var7) {
  515.             }
  516.  
  517.             (new ProcessThread(var3 + var4 + BrowserOptions.java + " " + var8, new Monolog(this, "Java " + var8, false), BrowserOptions.messages.getString("JavaComple"), var6, BrowserOptions.messages.getString("Error"))).start();
  518.             return true;
  519.          }
  520.       }
  521.  
  522.       (new ProcessThread(var3 + var4 + BrowserOptions.java + " " + var8, new Monolog(this, "Java " + var8), BrowserOptions.messages.getString("JavaComple"))).start();
  523.       return true;
  524.    }
  525.  
  526.    public void spawnBrowser() {
  527.       new BrowserView(new BrowserModel(), this.model.systemTitle() + ++BrowserCount, true);
  528.    }
  529.  
  530.    public ProcessThread compile(String var1) {
  531.       String var2 = this.model.GetRootDir() + BrowserFileLoader.correctFileName(this.model.currentPackageName());
  532.       String var3 = BrowserOptions.compiler + " ";
  533.       String var4 = "-classpath " + var2 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  534.       String var5 = "-d " + (!BrowserOptions.destination.equals("") ? BrowserOptions.destination : var2) + " ";
  535.       Object var6 = null;
  536.       Object var7 = null;
  537.       String var9;
  538.       String var10;
  539.       if (var1 != null && !var1.equals("")) {
  540.          var9 = var1;
  541.          var10 = var1;
  542.       } else {
  543.          var9 = var2 + System.getProperty("file.separator") + this.model.majorClassNamePart() + ".java";
  544.          var10 = this.model.classNamePart();
  545.       }
  546.  
  547.       ProcessThread var8 = new ProcessThread(var3 + var4 + var5 + BrowserOptions.compile + " " + var9, new Monolog(this, BrowserOptions.messages.getString("Compiling") + " " + var10), BrowserOptions.messages.getString("CompileCom"));
  548.       ((Thread)var8).start();
  549.       return var8;
  550.    }
  551.  
  552.    public ProcessThread compileEvaluate() {
  553.       Monolog var1 = new Monolog(this, BrowserOptions.messages.getString("CompilerOu"));
  554.       ProcessThread var2 = new ProcessThread(BrowserOptions.compiler + " -g " + this.evaluateClass + ".java", var1, BrowserOptions.messages.getString("CompileCom"));
  555.       ((Thread)var2).start();
  556.       return var2;
  557.    }
  558.  
  559.    private boolean isDebuggerActive(DebugGUI var1) {
  560.       return var1 == null ? false : var1.isDebuggerActive();
  561.    }
  562.  
  563.    private String makeEvaluateClass() {
  564.       return this.evaluateClass = DebugEvaluate + (new Integer(this.evaluateNumber++)).toString();
  565.    }
  566.  
  567.    public void evaluate() {
  568.       String var1 = this.getSelectedText();
  569.       File var2 = new File(".");
  570.       String[] var3 = var2.list();
  571.       int var5 = 0;
  572.  
  573.       for(int var4 = 0; var4 < var3.length; ++var4) {
  574.          if (var3[var4].indexOf(DebugEvaluate) != -1) {
  575.             File var6 = new File(var3[var4]);
  576.             var6.delete();
  577.          }
  578.       }
  579.  
  580.       if (var1 != null && !var1.equals("")) {
  581.          try {
  582.             File var10 = new File(this.makeEvaluateClass() + ".java");
  583.             FileOutputStream var7 = new FileOutputStream(var10);
  584.  
  585.             for(StringTokenizer var8 = new StringTokenizer(BrowserOptions.imports); var8.hasMoreTokens(); var5 += 2) {
  586.                var7.write(("\nimport " + var8.nextToken() + ";\n").getBytes());
  587.             }
  588.  
  589.             var7.write(("public class " + this.evaluateClass + " extends Frame {\n").getBytes());
  590.             var7.write("static public void main(String[] args){\n".getBytes());
  591.             var7.write((var1 + "\n").getBytes());
  592.             var7.write("return;\n\t}\n}\n".getBytes());
  593.             var7.close();
  594.          } catch (IOException var9) {
  595.             System.out.println(var9);
  596.          }
  597.  
  598.          this.evaluateBreakLine = var5 + this.countLines(var1);
  599.          ProcessThread var11 = this.compileEvaluate();
  600.          (new WaitThread(BrowserOptions.messages.getString("WaitingFor"), var11, BrowserOptions.messages.getString("Error"), this)).start();
  601.       }
  602.  
  603.    }
  604.  
  605.    public void debug(String var1) {
  606.       DebugGUI var2 = this.debugger;
  607.       if (var2 == null ? false : var2.isDebuggerActive()) {
  608.          this.debugger.quit();
  609.       }
  610.  
  611.       String var7 = this.model.GetRootDir() + BrowserFileLoader.correctFileName(this.model.currentPackageName());
  612.       String var3 = BrowserOptions.debugger + " ";
  613.       String var4 = "-classpath " + var7 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  614.       this.debugFilename = null;
  615.       if (var1 != null && !var1.equals("")) {
  616.          this.debugFilename = var1;
  617.       } else {
  618.          this.debugFilename = this.model.classNamePart();
  619.          if (!this.model.fileLoader.isClassCompiled(this.model.majorClassName())) {
  620.             ProcessThread var5 = this.compile((String)null);
  621.  
  622.             try {
  623.                Thread.sleep(100L);
  624.             } catch (InterruptedException var6) {
  625.             }
  626.  
  627.             this.evaluateBreakLine = -1;
  628.             (new WaitThread(BrowserOptions.messages.getString("WaitingFor"), var5, BrowserOptions.messages.getString("Error"), this)).start();
  629.             return;
  630.          }
  631.       }
  632.  
  633.       this.debugger = new DebugGUI(BrowserOptions.messages.getString("Debug") + " " + this.debugFilename, var3 + var4 + BrowserOptions.debug + " ", this.debugFilename, false);
  634.    }
  635.  
  636.    public boolean find(String var1, String var2) {
  637.       if (var1 != null) {
  638.          int var3 = var2.indexOf(var1, this.output.getCaretPosition() + 1);
  639.          if (var3 != -1) {
  640.             this.output.setSelectionStart(var3);
  641.             this.output.setSelectionEnd(var3 + var1.length());
  642.             return true;
  643.          }
  644.       }
  645.  
  646.       return false;
  647.    }
  648.  
  649.    private int countLines(String var1) {
  650.       StringReader var2 = new StringReader(var1);
  651.       int var4 = 0;
  652.  
  653.       int var3;
  654.       try {
  655.          while((var3 = var2.read()) != -1) {
  656.             if (var3 == 10) {
  657.                ++var4;
  658.             }
  659.          }
  660.       } catch (IOException var5) {
  661.       }
  662.  
  663.       return var4;
  664.    }
  665.  
  666.    public int adjust(String var1, int var2) {
  667.       if (BrowserOptions.specialSystem[2].equalsIgnoreCase("adjust selection")) {
  668.          for(int var3 = 0; var3 < var1.length() && var3 < var2; ++var3) {
  669.             if (var1.charAt(var3) == '\n') {
  670.                --var2;
  671.             }
  672.          }
  673.       }
  674.  
  675.       return var2;
  676.    }
  677.  
  678.    private int locateMatch(String var1, char var2, char var3, int var4, boolean var5) {
  679.       int var6 = 0;
  680.       TextTokenizer var7 = new TextTokenizer(var1.substring(var4));
  681.       int var8 = 0;
  682.  
  683.       try {
  684.          while((var8 = ((StreamTokenizer)var7).nextToken()) != -1) {
  685.             if (var8 == var2) {
  686.                ++var6;
  687.             }
  688.  
  689.             if (var8 == var3) {
  690.                --var6;
  691.                if (!var5 && var6 == 0) {
  692.                   return var4 + var7.position() - 1;
  693.                }
  694.             }
  695.          }
  696.       } catch (IOException var10) {
  697.          System.out.println(var10);
  698.       }
  699.  
  700.       return var5 ? var6 : -1;
  701.    }
  702.  
  703.    public boolean match(String var1) {
  704.       char var2 = 0;
  705.       char var3 = 0;
  706.       if (var1 != null && var1.startsWith("{")) {
  707.          var2 = '{';
  708.          var3 = '}';
  709.       } else if (var1 != null && var1.startsWith("(")) {
  710.          var2 = '(';
  711.          var3 = ')';
  712.       }
  713.  
  714.       if (var2 != 0) {
  715.          String var4 = this.output.getText();
  716.          int var5 = this.output.getSelectionStart();
  717.          int var6 = this.locateMatch(var4, var2, var3, this.adjust(var4, var5), false);
  718.          if (var6 == -1) {
  719.             return false;
  720.          } else {
  721.             this.output.setSelectionEnd(this.adjust(var4, var6) + 1);
  722.             this.output.setSelectionStart(this.adjust(var4, var5));
  723.             return true;
  724.          }
  725.       } else {
  726.          return false;
  727.       }
  728.    }
  729.  
  730.    public boolean action(Event var1, Object var2) {
  731.       if (var1.target instanceof MenuItem) {
  732.          MenuItem var3 = (MenuItem)var1.target;
  733.          String var4 = this.output.getText();
  734.          String var5 = this.getSelectedTextNotTitle();
  735.          if (var3.getLabel().equals(Exit)) {
  736.             this.destroy();
  737.          } else if (var3.getLabel().equals(BrowserOptions.messages.getString("Test"))) {
  738.             QueryDialog var21 = new QueryDialog(this, BrowserOptions.messages.getString("Test"), "Enter the Test Filename, mode (r|w) [,timing (r only)]");
  739.             this.recorder(var21.getText());
  740.          } else if (!var3.getLabel().equals(Save) && !var3.getLabel().equals(SaveCompile) && !var3.getLabel().equals(SaveRun)) {
  741.             if (var3.getLabel().equals(Accept)) {
  742.                String var20 = this.getSelectedTextNotTitle();
  743.                this.compile(var20);
  744.             } else if (var3.getLabel().equals(SaveAll)) {
  745.                this.saveAll();
  746.             } else if (var3.getLabel().equals(Options)) {
  747.                new BrowserOptions(this, BrowserOptions.messages.getString("JIGBrowser"));
  748.             } else if (var3.getLabel().equals(Transcript)) {
  749.                new Monolog(this, "");
  750.             } else {
  751.                if (var3.getLabel().equals(NewMethod) && !this.newMethod()) {
  752.                   return true;
  753.                }
  754.  
  755.                if (var3.getLabel().equals(NewClass) && !this.newClass()) {
  756.                   return true;
  757.                }
  758.  
  759.                if (var3.getLabel().equals(NewInterface) && !this.newInterface()) {
  760.                   return true;
  761.                }
  762.  
  763.                if (var3.getLabel().equals(RemoveMethod) && !this.removeMethod()) {
  764.                   return true;
  765.                }
  766.  
  767.                if (var3.getLabel().equals(DeleteClass) && !this.removeClass()) {
  768.                   return true;
  769.                }
  770.  
  771.                if (var3.getLabel().equals(RenameMethod) && !this.renameMethod()) {
  772.                   return true;
  773.                }
  774.  
  775.                if (var3.getLabel().equals(RenameClass) && !this.renameClass()) {
  776.                   return true;
  777.                }
  778.  
  779.                if (var3.getLabel().equals(Match)) {
  780.                   String var19 = this.getSelectedText();
  781.                   if (var19 != null && !var19.equals("")) {
  782.                      this.match(var19);
  783.                   }
  784.                } else if (var3.getLabel().equals(Interpret)) {
  785.                   String var18 = this.getSelectedTextNotTitle();
  786.                   this.interpret(var18);
  787.                } else if (var3.getLabel().equals(Format)) {
  788.                   this.output.setText(this.model.format(this.output.getText()));
  789.                } else if (var3.getLabel().equals(Senders)) {
  790.                   this.browse(1);
  791.                } else if (var3.getLabel().equals(Receivers)) {
  792.                   this.browse(2);
  793.                } else if (var3.getLabel().equals(References)) {
  794.                   this.browse(3);
  795.                } else if (var3.getLabel().equals(Extenders)) {
  796.                   this.browse(4);
  797.                } else if (var3.getLabel().equals(Implementors)) {
  798.                   this.browse(5);
  799.                } else if (var3.getLabel().equals(Hierarchy)) {
  800.                   this.model.hierarchyBrowser(1);
  801.                } else if (var3.getLabel().equals(Interfaces)) {
  802.                   this.model.interfacesBrowser(2);
  803.                } else if (var3.getLabel().equals(NewBrowser)) {
  804.                   this.spawnBrowser();
  805.                } else if (var3.getLabel().equals(ClassBrowser)) {
  806.                   this.browse(6);
  807.                } else if (var3.getLabel().equals(NewWorkSpace)) {
  808.                   this.spawnNewWorkSpace();
  809.                } else if (var3.getLabel().equals(About)) {
  810.                   new AboutBrowser(this, BrowserOptions.messages.getString("About") + " " + this.model.systemTitle());
  811.                } else if (var3.getLabel().equals(Contents)) {
  812.                   this.helpProcess();
  813.                } else if (var3.getLabel().equals(Document)) {
  814.                   String var17 = this.getSelectedTextNotTitle();
  815.                   this.docProcess(var17);
  816.                } else if (var3.getLabel().equals(HtmlBrowser)) {
  817.                   String var16 = this.getSelectedTextNotTitle();
  818.                   this.htmlProcess(BrowserOptions.htmlBrowser.trim(), var16);
  819.                } else if (var3.getLabel().equals(AppletViewer)) {
  820.                   String var15 = this.getSelectedTextNotTitle();
  821.                   this.appletProcess(BrowserOptions.appletViewer, var15, false);
  822.                } else if (var3.getLabel().equals(AppletViewerDebug)) {
  823.                   String var14 = this.getSelectedTextNotTitle();
  824.                   this.appletProcess(BrowserOptions.appletViewer, var14, true);
  825.                } else if (var3.getLabel().equals(Replace)) {
  826.                   String var13 = this.getSelectedText();
  827.                   QueryDialog var25 = new QueryDialog(this, BrowserOptions.messages.getString("Replace1") + " " + var13, BrowserOptions.messages.getString("EnterTheNewT"), "");
  828.                   String var24 = var25.getText();
  829.                   if (var24 != null) {
  830.                      this.replaceAll(var13, var24);
  831.                   }
  832.                } else if (var3.getLabel().equals(Find)) {
  833.                   String var12 = this.getSelectedText();
  834.                   if (var12 == null) {
  835.                      var12 = "";
  836.                   }
  837.  
  838.                   QueryDialog var8 = new QueryDialog(this, BrowserOptions.messages.getString("Find"), BrowserOptions.messages.getString("EnterTheTe"), var12);
  839.                   String var23 = var8.getText();
  840.                   if (var23 != null) {
  841.                      this.find(var23, this.output.getText());
  842.                   }
  843.                } else if (var3.getLabel().equals(FindNext)) {
  844.                   String var11 = this.getSelectedText();
  845.                   if (var11 != null) {
  846.                      this.find(var11, this.output.getText());
  847.                   }
  848.                } else if (var3.getLabel().equals(DiscardEdits)) {
  849.                   if (this.testDiscard()) {
  850.                      int var10 = this.model.currentClassViewSelector();
  851.                      int var7 = this.model.currentMethodViewSelector();
  852.                      if (var10 != -1 && var7 == -1) {
  853.                         this.model.reloadNoOutput();
  854.                         this.model.selectClass(var10);
  855.                      } else if (var10 == -1) {
  856.                         this.model.selectPackage(this.oldPackageIndex);
  857.                      }
  858.  
  859.                      this.updateOutput();
  860.                   }
  861.                } else if (var3.getLabel().equals(LineNumbers)) {
  862.                   if (this.testDiscard()) {
  863.                      this.output.setEditable(!this.model.setLineNumbers());
  864.                   } else {
  865.                      ((CheckboxMenuItem)this.itemLineNumbers).setState(false);
  866.                   }
  867.                } else if (var3.getLabel().equals(Debug)) {
  868.                   String var6 = this.getSelectedTextNotTitle();
  869.                   this.debug(var6);
  870.                } else if (var3.getLabel().equals(BrowseStack)) {
  871.                   String var9 = this.getSelectedTextNotTitle();
  872.                   this.model.browseStack(var9);
  873.                } else if (var3.getLabel().equals(Evaluate)) {
  874.                   this.evaluate();
  875.                }
  876.             }
  877.          } else {
  878.             ((Frame)this).setCursor(3);
  879.             if (this.locateMatch(this.output.getText(), '{', '}', 0, true) != 0) {
  880.                ((Frame)this).setCursor(0);
  881.                new InformationDialog(this, BrowserOptions.messages.getString("TheSourceC"));
  882.             } else if (!this.model.save(this.output.getText())) {
  883.                ((Frame)this).setCursor(0);
  884.                new InformationDialog(this, BrowserOptions.messages.getString("TheClassFil") + " " + this.model.currentClassName() + BrowserOptions.messages.getString("JavaHasBee"));
  885.             } else {
  886.                ((Frame)this).setCursor(0);
  887.                this.oldText = this.output.getText();
  888.                if (var3.getLabel().equals(SaveCompile)) {
  889.                   this.compile((String)null);
  890.                }
  891.  
  892.                if (var3.getLabel().equals(SaveRun)) {
  893.                   this.interpret((String)null);
  894.                }
  895.             }
  896.          }
  897.  
  898.          if (Recorder.oos != null && true && !var3.getLabel().equals(BrowserOptions.messages.getString("Test"))) {
  899.             Event var22 = new Event(var3.getLabel(), var1.id, var1.arg);
  900.             (new Recorder(var22, true, var4, this.recordedSelectedText != null ? this.recordedSelectedText : var5, ((Frame)this).getTitle())).write();
  901.             this.recordedSelectedText = null;
  902.          }
  903.       }
  904.  
  905.       return true;
  906.    }
  907.  
  908.    boolean testDiscard() {
  909.       if (this.oldText != null && this.oldText.compareTo(this.output.getText()) != 0) {
  910.          SimpleDialog var1 = new SimpleDialog(this, BrowserOptions.messages.getString("DiscardCha") + ((Frame)this).getTitle() + "'?");
  911.          boolean var2 = var1.result;
  912.          if (var2) {
  913.             this.model.discardingOutput();
  914.          }
  915.  
  916.          return var2;
  917.       } else {
  918.          return true;
  919.       }
  920.    }
  921.  
  922.    public boolean handleEvent(Event var1) {
  923.       switch (var1.id) {
  924.          case 201:
  925.             this.destroy();
  926.             super.handleEvent(var1);
  927.       }
  928.  
  929.       if (var1.target instanceof List) {
  930.          List var2 = (List)var1.target;
  931.          String var3 = var2 == this.packages ? "packages" : (var2 == this.classes ? "classes" : "methods");
  932.          switch (var1.id) {
  933.             case 701:
  934.                int var4 = (Integer)var1.arg;
  935.                if (Recorder.ois != null || Recorder.oos != null && true) {
  936.                   Event var5 = new Event(var3, var1.id, var1.arg);
  937.                   (new Recorder(var5, false, this.output.getText(), ((Frame)this).getTitle())).write();
  938.                }
  939.  
  940.                if (var3 == "packages") {
  941.                   if (!this.testDiscardSave(BrowserOptions.autoSave)) {
  942.                      if (this.oldPackageIndex > -1) {
  943.                         this.packages.select(this.oldPackageIndex);
  944.                      }
  945.  
  946.                      return super.handleEvent(var1);
  947.                   }
  948.  
  949.                   this.model.selectPackage(var4);
  950.                   this.oldPackageIndex = var4;
  951.                   this.oldClassIndex = -1;
  952.                   this.oldMethodIndex = -1;
  953.                   this.output.setText("");
  954.                   this.oldText = null;
  955.                } else if (var3 == "classes") {
  956.                   if (!this.testDiscardSave(BrowserOptions.autoSave)) {
  957.                      if (this.oldClassIndex > -1) {
  958.                         this.classes.select(this.oldClassIndex);
  959.                      } else {
  960.                         int var6 = this.classes.getSelectedIndex();
  961.                         if (var6 != -1) {
  962.                            this.classes.deselect(var6);
  963.                         }
  964.                      }
  965.  
  966.                      return super.handleEvent(var1);
  967.                   }
  968.  
  969.                   this.model.selectClass(var4);
  970.                   this.oldClassIndex = var4;
  971.                   if (!this.updateSelector) {
  972.                      this.updateSelector = true;
  973.                      this.classes.select(var4);
  974.                   }
  975.  
  976.                   if (this.oldMethodIndex > -1) {
  977.                      this.methods.deselect(this.oldMethodIndex);
  978.                   }
  979.  
  980.                   this.oldMethodIndex = -1;
  981.                } else if (var3 == "methods") {
  982.                   if (!this.testDiscardSave(BrowserOptions.autoSave)) {
  983.                      if (this.oldMethodIndex > -1) {
  984.                         this.methods.select(this.oldMethodIndex);
  985.                      } else {
  986.                         int var7 = this.methods.getSelectedIndex();
  987.                         if (var7 != -1) {
  988.                            this.methods.deselect(var7);
  989.                         }
  990.                      }
  991.  
  992.                      return super.handleEvent(var1);
  993.                   }
  994.  
  995.                   this.model.selectMethod(var4);
  996.                   this.oldMethodIndex = var4;
  997.                   this.methods.select(var4);
  998.                }
  999.                break;
  1000.             case 702:
  1001.                (Integer)var1.arg;
  1002.          }
  1003.       }
  1004.  
  1005.       return super.handleEvent(var1);
  1006.    }
  1007.  
  1008.    private void updatePackage() {
  1009.       String[] var1 = this.model.currentPackages();
  1010.       this.packages.removeAll();
  1011.       this.classes.removeAll();
  1012.       this.methods.removeAll();
  1013.  
  1014.       try {
  1015.          for(int var2 = 0; var2 < var1.length; ++var2) {
  1016.             this.packages.addItem(var1[var2]);
  1017.          }
  1018.       } catch (NullPointerException var3) {
  1019.       }
  1020.  
  1021.       this.output.setText("");
  1022.       this.oldText = null;
  1023.    }
  1024.  
  1025.    private void updateClass() {
  1026.       this.model.currentClasses();
  1027.    }
  1028.  
  1029.    private void updateMethod() {
  1030.       this.model.currentMethods();
  1031.    }
  1032.  
  1033.    private void updateOutput() {
  1034.       String var1 = this.model.getCurrentOutput();
  1035.       this.output.setText(var1);
  1036.       if (var1.length() > 0) {
  1037.          this.output.setCaretPosition(0);
  1038.       }
  1039.  
  1040.       if (!this.newClassOrMethod) {
  1041.          this.oldText = this.output.getText();
  1042.       } else {
  1043.          this.newClassOrMethod = false;
  1044.       }
  1045.    }
  1046.  
  1047.    private void updateSelectClass() {
  1048.       int var1 = this.model.currentClassViewSelector();
  1049.       if (var1 >= 0) {
  1050.          this.classes.select(var1);
  1051.          this.oldClassIndex = var1;
  1052.       }
  1053.  
  1054.    }
  1055.  
  1056.    private void updateSelectMethod() {
  1057.       int var1 = this.model.currentMethodViewSelector();
  1058.       if (var1 >= 0) {
  1059.          this.methods.select(var1);
  1060.          this.oldMethodIndex = var1;
  1061.       }
  1062.  
  1063.    }
  1064.  
  1065.    void updateState() {
  1066.       boolean[] var1 = this.model.currentState();
  1067.       int var10001 = BrowserModel.Compile;
  1068.       var1[var10001] &= this.workSpace == null;
  1069.       var10001 = BrowserModel.Java;
  1070.       var1[var10001] &= this.workSpace == null;
  1071.       var10001 = BrowserModel.Debug;
  1072.       var1[var10001] &= this.workSpace == null;
  1073.       var10001 = BrowserModel.Evaluate;
  1074.       var1[var10001] &= this.workSpace == null;
  1075.       if (var1[BrowserModel.Save]) {
  1076.          this.itemSave.disable();
  1077.       } else {
  1078.          this.itemSave.enable();
  1079.       }
  1080.  
  1081.       if (var1[BrowserModel.SaveAll]) {
  1082.          this.itemSaveAll.disable();
  1083.       } else {
  1084.          this.itemSaveAll.enable();
  1085.       }
  1086.  
  1087.       if (var1[BrowserModel.SaveCompile]) {
  1088.          this.itemSaveCompile.disable();
  1089.       } else {
  1090.          this.itemSaveCompile.enable();
  1091.       }
  1092.  
  1093.       if (var1[BrowserModel.Compile]) {
  1094.          this.itemCompile.disable();
  1095.       } else {
  1096.          this.itemCompile.enable();
  1097.       }
  1098.  
  1099.       if (var1[BrowserModel.Java]) {
  1100.          this.itemJava.disable();
  1101.       } else {
  1102.          this.itemJava.enable();
  1103.       }
  1104.  
  1105.       if (var1[BrowserModel.Debug]) {
  1106.          this.itemDebug.disable();
  1107.       } else {
  1108.          this.itemDebug.enable();
  1109.       }
  1110.  
  1111.       if (var1[BrowserModel.Evaluate]) {
  1112.          this.itemEvaluate.disable();
  1113.       } else {
  1114.          this.itemEvaluate.enable();
  1115.       }
  1116.  
  1117.       if (var1[BrowserModel.WorkSpace]) {
  1118.          this.itemWorkSpace.disable();
  1119.       } else {
  1120.          this.itemWorkSpace.enable();
  1121.       }
  1122.  
  1123.       if (var1[BrowserModel.Exit]) {
  1124.          this.itemExit.disable();
  1125.       } else {
  1126.          this.itemExit.enable();
  1127.       }
  1128.  
  1129.       if (var1[BrowserModel.FindNext]) {
  1130.          this.itemFindNext.disable();
  1131.       } else {
  1132.          this.itemFindNext.enable();
  1133.       }
  1134.  
  1135.       if (var1[BrowserModel.Find]) {
  1136.          this.itemFind.disable();
  1137.       } else {
  1138.          this.itemFind.enable();
  1139.       }
  1140.  
  1141.       if (var1[BrowserModel.Replace]) {
  1142.          this.itemReplace.disable();
  1143.       } else {
  1144.          this.itemReplace.enable();
  1145.       }
  1146.  
  1147.       if (var1[BrowserModel.DiscardEdits]) {
  1148.          this.itemDiscardEdits.disable();
  1149.       } else {
  1150.          this.itemDiscardEdits.enable();
  1151.       }
  1152.  
  1153.       if (var1[BrowserModel.Format]) {
  1154.          this.itemFormat.disable();
  1155.       } else {
  1156.          this.itemFormat.enable();
  1157.       }
  1158.  
  1159.       if (var1[BrowserModel.NewMethod]) {
  1160.          this.itemNewMethod.disable();
  1161.       } else {
  1162.          this.itemNewMethod.enable();
  1163.       }
  1164.  
  1165.       if (var1[BrowserModel.NewClass]) {
  1166.          this.itemNewClass.disable();
  1167.       } else {
  1168.          this.itemNewClass.enable();
  1169.       }
  1170.  
  1171.       if (var1[BrowserModel.Match]) {
  1172.          this.itemMatch.disable();
  1173.       } else {
  1174.          this.itemMatch.enable();
  1175.       }
  1176.  
  1177.       if (var1[BrowserModel.LineNumbers]) {
  1178.          this.itemLineNumbers.disable();
  1179.       } else {
  1180.          this.itemLineNumbers.enable();
  1181.       }
  1182.  
  1183.       if (var1[BrowserModel.Options]) {
  1184.          this.itemOptions.disable();
  1185.       } else {
  1186.          this.itemOptions.enable();
  1187.       }
  1188.  
  1189.       if (var1[BrowserModel.BrowseReferences]) {
  1190.          this.itemBrowseReferences.disable();
  1191.       } else {
  1192.          this.itemBrowseReferences.enable();
  1193.       }
  1194.  
  1195.       if (var1[BrowserModel.BrowseSenders]) {
  1196.          this.itemBrowseSenders.disable();
  1197.       } else {
  1198.          this.itemBrowseSenders.enable();
  1199.       }
  1200.  
  1201.       if (var1[BrowserModel.BrowseReceivers]) {
  1202.          this.itemBrowseReceivers.disable();
  1203.       } else {
  1204.          this.itemBrowseReceivers.enable();
  1205.       }
  1206.  
  1207.       if (var1[BrowserModel.BrowseHierarchy]) {
  1208.          this.itemBrowseHierarchy.disable();
  1209.       } else {
  1210.          this.itemBrowseHierarchy.enable();
  1211.       }
  1212.  
  1213.       if (var1[BrowserModel.BrowseInterfaces]) {
  1214.          this.itemBrowseInterfaces.disable();
  1215.       } else {
  1216.          this.itemBrowseInterfaces.enable();
  1217.       }
  1218.  
  1219.       if (var1[BrowserModel.BrowseExtenders]) {
  1220.          this.itemBrowseExtenders.disable();
  1221.       } else {
  1222.          this.itemBrowseExtenders.enable();
  1223.       }
  1224.  
  1225.       if (var1[BrowserModel.BrowseImplementors]) {
  1226.          this.itemBrowseImplementors.disable();
  1227.       } else {
  1228.          this.itemBrowseImplementors.enable();
  1229.       }
  1230.  
  1231.       if (var1[BrowserModel.BrowseClass]) {
  1232.          this.itemBrowseClass.disable();
  1233.       } else {
  1234.          this.itemBrowseClass.enable();
  1235.       }
  1236.  
  1237.       if (var1[BrowserModel.BrowseSystem]) {
  1238.          this.itemBrowseSystem.disable();
  1239.       } else {
  1240.          this.itemBrowseSystem.enable();
  1241.       }
  1242.  
  1243.       if (var1[BrowserModel.RemoveMethod]) {
  1244.          this.itemRemoveMethod.disable();
  1245.       } else {
  1246.          this.itemRemoveMethod.enable();
  1247.       }
  1248.  
  1249.       if (var1[BrowserModel.HelpContents]) {
  1250.          this.itemHelpContents.disable();
  1251.       } else {
  1252.          this.itemHelpContents.enable();
  1253.       }
  1254.  
  1255.       if (var1[BrowserModel.HelpAbout]) {
  1256.          this.itemHelpAbout.disable();
  1257.       } else {
  1258.          this.itemHelpAbout.enable();
  1259.       }
  1260.  
  1261.       if (var1[BrowserModel.SaveRun]) {
  1262.          this.itemSaveRun.disable();
  1263.       } else {
  1264.          this.itemSaveRun.enable();
  1265.       }
  1266.  
  1267.       if (var1[BrowserModel.NewInterface]) {
  1268.          this.itemNewInterface.disable();
  1269.       } else {
  1270.          this.itemNewInterface.enable();
  1271.       }
  1272.  
  1273.       if (var1[BrowserModel.RenameClass]) {
  1274.          this.itemRenameClass.disable();
  1275.       } else {
  1276.          this.itemRenameClass.enable();
  1277.       }
  1278.  
  1279.       if (var1[BrowserModel.RenameMethod]) {
  1280.          this.itemRenameMethod.disable();
  1281.       } else {
  1282.          this.itemRenameMethod.enable();
  1283.       }
  1284.  
  1285.       if (var1[BrowserModel.DeleteClass]) {
  1286.          this.itemDeleteClass.disable();
  1287.       } else {
  1288.          this.itemDeleteClass.enable();
  1289.       }
  1290.  
  1291.       if (var1[BrowserModel.AppletViewer]) {
  1292.          this.itemAppletViewer.disable();
  1293.       } else {
  1294.          this.itemAppletViewer.enable();
  1295.       }
  1296.  
  1297.       if (var1[BrowserModel.AppletViewerDebug]) {
  1298.          this.itemAppletViewerDebug.disable();
  1299.       } else {
  1300.          this.itemAppletViewerDebug.enable();
  1301.       }
  1302.  
  1303.       if (var1[BrowserModel.HtmlBrowser]) {
  1304.          this.itemHtmlBrowser.disable();
  1305.       } else {
  1306.          this.itemHtmlBrowser.enable();
  1307.       }
  1308.  
  1309.       if (var1[BrowserModel.Transcript]) {
  1310.          this.itemTranscript.disable();
  1311.       } else {
  1312.          this.itemTranscript.enable();
  1313.       }
  1314.  
  1315.       if (var1[BrowserModel.Document]) {
  1316.          this.itemDocument.disable();
  1317.       } else {
  1318.          this.itemDocument.enable();
  1319.       }
  1320.  
  1321.       if (var1[BrowserModel.StackTrace]) {
  1322.          this.itemBrowseStack.disable();
  1323.       } else {
  1324.          this.itemBrowseStack.enable();
  1325.       }
  1326.    }
  1327.  
  1328.    public void update(Observable var1, Object var2) {
  1329.       boolean[] var3 = (boolean[])var2;
  1330.       if (var2 != null) {
  1331.          if (var3[BrowserModel.PackageLoad]) {
  1332.             this.updatePackage();
  1333.          }
  1334.  
  1335.          if (var3[BrowserModel.ClassLoad]) {
  1336.             this.model.currentClasses();
  1337.          }
  1338.  
  1339.          if (var3[BrowserModel.PackageList]) {
  1340.             this.updatePackageList();
  1341.          }
  1342.  
  1343.          if (var3[BrowserModel.ClassList]) {
  1344.             this.updateClassList();
  1345.          }
  1346.  
  1347.          if (var3[BrowserModel.MethodList]) {
  1348.             this.updateMethodList();
  1349.          }
  1350.  
  1351.          if (var3[BrowserModel.MethodLoad]) {
  1352.             this.model.currentMethods();
  1353.          }
  1354.  
  1355.          if (var3[BrowserModel.OutputLoad]) {
  1356.             this.updateOutput();
  1357.          }
  1358.  
  1359.          if (var3[BrowserModel.SelectClass]) {
  1360.             this.updateSelectClass();
  1361.          }
  1362.  
  1363.          if (var3[BrowserModel.SelectMethod]) {
  1364.             this.updateSelectMethod();
  1365.          }
  1366.  
  1367.          if (var3[BrowserModel.AnyEdits]) {
  1368.             this.updateAnyEdits();
  1369.          }
  1370.  
  1371.          if (var3[BrowserModel.OutOfDate]) {
  1372.             this.updateOutOfDate();
  1373.          }
  1374.  
  1375.          this.updateState();
  1376.       }
  1377.    }
  1378.  
  1379.    public static void main(String[] var0) {
  1380.       for(int var1 = 0; var1 < var0.length; var1 += 2) {
  1381.          if (var0[var1].equalsIgnoreCase("-j")) {
  1382.             String var2 = var0[var1 + 1];
  1383.             BrowserOptions.jigHome = var2;
  1384.          }
  1385.  
  1386.          if (var0[var1].equalsIgnoreCase("-i")) {
  1387.             String var3 = var0[var1 + 1];
  1388.             BrowserOptions.iniFileName = var3;
  1389.          }
  1390.       }
  1391.  
  1392.       BrowserOptions.init();
  1393.       new BrowserView(new BrowserModel(), (String)null, true);
  1394.    }
  1395.  
  1396.    private void spawnNewWorkSpace() {
  1397.       if (this.workSpace == null) {
  1398.          this.workSpace = new WorkSpace(this, BrowserOptions.messages.getString("WorkSpaceF") + " " + ((Frame)this).getTitle());
  1399.       }
  1400.  
  1401.       this.updateState();
  1402.    }
  1403.  
  1404.    public void deleteWorkSpace() {
  1405.       this.workSpace = null;
  1406.       this.updateState();
  1407.    }
  1408.  
  1409.    private boolean replace(String var1) {
  1410.       int var2 = this.adjust(this.output.getText(), this.output.getSelectionStart());
  1411.       int var3 = this.adjust(this.output.getText(), this.output.getSelectionEnd());
  1412.       this.output.replaceRange(var1, var2, var3);
  1413.       return true;
  1414.    }
  1415.  
  1416.    private boolean replaceAll(String var1, String var2) {
  1417.       boolean var3 = true;
  1418.       if (var1 != null && !var1.equals("")) {
  1419.          while(var3) {
  1420.             int var4 = this.adjust(this.output.getText(), this.output.getSelectionStart());
  1421.             int var5 = this.adjust(this.output.getText(), this.output.getSelectionEnd());
  1422.             this.output.replaceRange(var2, var4, var5);
  1423.             this.output.setCaretPosition(this.adjust(this.output.getText(), this.output.getCaretPosition()));
  1424.             var3 = this.find(var1, this.output.getText());
  1425.          }
  1426.       }
  1427.  
  1428.       return true;
  1429.    }
  1430.  
  1431.    boolean removeMethod() {
  1432.       if (this.methods.getSelectedIndex() == -1) {
  1433.          return false;
  1434.       } else {
  1435.          SimpleDialog var1 = new SimpleDialog(this, BrowserOptions.messages.getString("DeleteMetho") + " " + this.model.currentMethodName() + BrowserOptions.messages.getString("AreYouSure"));
  1436.          if (var1.result) {
  1437.             ((Frame)this).setCursor(3);
  1438.             if (!this.model.removeMethod()) {
  1439.                ((Frame)this).setCursor(0);
  1440.                new InformationDialog(this, BrowserOptions.messages.getString("TheClassFil") + " " + this.model.currentClassName() + BrowserOptions.messages.getString("JavaHasBeen"));
  1441.                return false;
  1442.             }
  1443.  
  1444.             ((Frame)this).setCursor(0);
  1445.          }
  1446.  
  1447.          return true;
  1448.       }
  1449.    }
  1450.  
  1451.    boolean removeClass() {
  1452.       if (!this.testDiscard()) {
  1453.          return false;
  1454.       } else {
  1455.          SimpleDialog var1 = new SimpleDialog(this, BrowserOptions.messages.getString("DeletingCl") + " " + this.model.classNamePart() + BrowserOptions.messages.getString("AreYouSure"));
  1456.          if (var1.result) {
  1457.             this.model.removeClass();
  1458.             return true;
  1459.          } else {
  1460.             return false;
  1461.          }
  1462.       }
  1463.    }
  1464.  
  1465.    void updateAnyEdits() {
  1466.       if (this.oldText != null && this.oldText.compareTo(this.output.getText()) != 0 && true) {
  1467.          this.model.reloadNoOutput();
  1468.       } else {
  1469.          this.model.reload();
  1470.       }
  1471.    }
  1472.  
  1473.    static void ViewCollectionAdd(BrowserView var0) {
  1474.       for(int var1 = 0; var1 < ViewCollectionMax; ++var1) {
  1475.          if (ViewCollection[var1] == null) {
  1476.             ViewCollection[var1] = var0;
  1477.             return;
  1478.          }
  1479.       }
  1480.  
  1481.    }
  1482.  
  1483.    static void ViewCollectionDelete(BrowserView var0) {
  1484.       for(int var1 = 0; var1 < ViewCollectionMax; ++var1) {
  1485.          if (ViewCollection[var1] == var0) {
  1486.             ViewCollection[var1] = null;
  1487.             return;
  1488.          }
  1489.       }
  1490.  
  1491.    }
  1492.  
  1493.    private String getSelectedTextNotTitle() {
  1494.       if (this.recordedSelectedText != null) {
  1495.          return this.recordedSelectedText;
  1496.       } else {
  1497.          String var1 = this.output.getText();
  1498.          int var2 = this.adjust(var1, this.output.getSelectionStart());
  1499.          int var3 = this.adjust(var1, this.output.getSelectionEnd());
  1500.          String var4 = var1.substring(var2, var3);
  1501.          if (!var4.equals("")) {
  1502.             return var4;
  1503.          } else {
  1504.             if (this.workSpace != null) {
  1505.                var1 = this.workSpace.getSelectedText();
  1506.                if (!var1.equals("")) {
  1507.                   return var1;
  1508.                }
  1509.             }
  1510.  
  1511.             if (Monolog.Transcript != null) {
  1512.                var1 = Monolog.Transcript.textArea().getSelectedText();
  1513.                if (!var1.equals("")) {
  1514.                   return var1;
  1515.                }
  1516.             }
  1517.  
  1518.             return "";
  1519.          }
  1520.       }
  1521.    }
  1522.  
  1523.    private boolean testDiscardNoDialog() {
  1524.       return this.oldText == null || this.oldText.compareTo(this.output.getText()) == 0;
  1525.    }
  1526.  
  1527.    public boolean newInterface() {
  1528.       if (!this.testDiscard()) {
  1529.          return false;
  1530.       } else {
  1531.          String var1 = null;
  1532.          if (this.recordedSelectedText == null) {
  1533.             QueryDialog var2 = new QueryDialog(this, BrowserOptions.messages.getString("InterfaceC"), BrowserOptions.messages.getString("EnterTheNewI"));
  1534.             if (var2.getText() != null) {
  1535.                if (this.model.fileLoader.existClassFile(this.model.currentPackageName() + "." + var2.getText())) {
  1536.                   new InformationDialog(this, BrowserOptions.messages.getString("TheClassFi") + " " + var2.getText() + BrowserOptions.messages.getString("JavaAlread"));
  1537.                   return false;
  1538.                }
  1539.  
  1540.                var1 = var2.getText();
  1541.                if (Recorder.ois != null || Recorder.oos != null && true) {
  1542.                   this.recordedSelectedText = var2.getText();
  1543.                }
  1544.             }
  1545.          } else {
  1546.             var1 = this.recordedSelectedText;
  1547.          }
  1548.  
  1549.          if (var1 != null) {
  1550.             int var3 = this.classes.getSelectedIndex();
  1551.             if (var3 != -1) {
  1552.                this.classes.deselect(var3);
  1553.             }
  1554.  
  1555.             var3 = this.methods.getSelectedIndex();
  1556.             if (var3 != -1) {
  1557.                this.methods.deselect(var3);
  1558.             }
  1559.  
  1560.             this.oldClassIndex = -1;
  1561.             this.oldMethodIndex = -1;
  1562.             this.newClassOrMethod = true;
  1563.             this.model.newInterface(var1);
  1564.             this.oldText = "";
  1565.             return true;
  1566.          } else {
  1567.             return false;
  1568.          }
  1569.       }
  1570.    }
  1571.  
  1572.    boolean renameMethod() {
  1573.       String var1 = null;
  1574.       if (this.recordedSelectedText == null) {
  1575.          QueryDialog var2 = new QueryDialog(this, BrowserOptions.messages.getString("RenameMeth"), BrowserOptions.messages.getString("EnterTheNe"));
  1576.          if (var2.getText() != null) {
  1577.             var1 = var2.getText();
  1578.             if (Recorder.ois != null || Recorder.oos != null && true) {
  1579.                this.recordedSelectedText = var2.getText();
  1580.             }
  1581.          }
  1582.       } else {
  1583.          var1 = this.recordedSelectedText;
  1584.       }
  1585.  
  1586.       if (var1 != null) {
  1587.          TextTokenizer var6 = new TextTokenizer(this.output.getText());
  1588.          int var3 = 0;
  1589.  
  1590.          try {
  1591.             while((var3 = ((StreamTokenizer)var6).nextToken()) != -1) {
  1592.                if (var3 == -3 && var6.sval.equals(this.model.currentMethodName())) {
  1593.                   this.output.setSelectionStart(var6.position() - 1);
  1594.                   this.output.setSelectionEnd(var6.position() + var6.sval.length() - 1);
  1595.                   this.replace(var1);
  1596.                   if (this.model.renameMethod(var1, this.output.getText())) {
  1597.                      this.oldText = this.output.getText();
  1598.                      return true;
  1599.                   }
  1600.  
  1601.                   new InformationDialog(this, BrowserOptions.messages.getString("TheClassFil") + " " + this.model.currentClassName() + BrowserOptions.messages.getString("JavaHasBee"));
  1602.                }
  1603.             }
  1604.          } catch (IOException var5) {
  1605.             System.out.println(var5);
  1606.          }
  1607.       }
  1608.  
  1609.       return false;
  1610.    }
  1611.  
  1612.    boolean renameClass() {
  1613.       if (!this.testDiscard()) {
  1614.          return false;
  1615.       } else {
  1616.          Object var1 = null;
  1617.          String var7;
  1618.          if (this.recordedSelectedText == null) {
  1619.             QueryDialog var2 = new QueryDialog(this, BrowserOptions.messages.getString("RenameClass"), BrowserOptions.messages.getString("EnterTheNew"));
  1620.             if (var2.getText() != null) {
  1621.                var7 = this.model.currentPackageName() + "." + var2.getText();
  1622.                if (this.model.fileLoader.existClassFile(var7)) {
  1623.                   new InformationDialog(this, BrowserOptions.messages.getString("TheClassFi") + " " + var2.getText() + BrowserOptions.messages.getString("JavaAlready"));
  1624.                   return false;
  1625.                }
  1626.             }
  1627.  
  1628.             var7 = var2.getText();
  1629.             if (Recorder.ois != null || Recorder.oos != null && true) {
  1630.                this.recordedSelectedText = var2.getText();
  1631.             }
  1632.          } else {
  1633.             var7 = this.recordedSelectedText;
  1634.          }
  1635.  
  1636.          if (var7 != null) {
  1637.             TextTokenizer var8 = new TextTokenizer(this.output.getText());
  1638.             int var3 = 0;
  1639.  
  1640.             try {
  1641.                while((var3 = ((StreamTokenizer)var8).nextToken()) != -1) {
  1642.                   if (var3 == -3 && var8.sval.equals(this.model.classNamePart())) {
  1643.                      this.output.setSelectionStart(var8.position() - 1);
  1644.                      this.output.setSelectionEnd(var8.position() + var8.sval.length() - 1);
  1645.                      this.replace(var7);
  1646.                      if (this.model.renameClass(this.output.getText(), var7)) {
  1647.                         return true;
  1648.                      }
  1649.  
  1650.                      new InformationDialog(this, BrowserOptions.messages.getString("TheClassFil") + " " + this.model.currentClassName() + BrowserOptions.messages.getString("JavaHasBee"));
  1651.                   }
  1652.                }
  1653.             } catch (IOException var5) {
  1654.                System.out.println(var5);
  1655.             }
  1656.          }
  1657.  
  1658.          return false;
  1659.       }
  1660.    }
  1661.  
  1662.    void helpProcess() {
  1663.       String var1 = BrowserOptions.htmlBrowser.trim() + " " + (!BrowserOptions.jigHome.equals("") ? BrowserOptions.jigHome : System.getProperty("user.dir")) + System.getProperty("file.separator") + "JIGDocument.htm";
  1664.       Runtime var2 = Runtime.getRuntime();
  1665.  
  1666.       try {
  1667.          var2.exec(var1);
  1668.       } catch (IOException var3) {
  1669.          System.out.println(BrowserOptions.messages.getString("IOExceptionOn"));
  1670.       }
  1671.    }
  1672.  
  1673.    void htmlProcess(String var1, String var2) {
  1674.       String var3 = var2;
  1675.       if (var2 == null || var2.equals("")) {
  1676.          String[] var4 = new String[]{".html", ".htm"};
  1677.          FileDialog var5 = new FileDialog(this, BrowserOptions.messages.getString("SelectAnHT"));
  1678.          var5.setFilenameFilter(new HtmlFilter(var4));
  1679.          var5.setDirectory(this.model.GetRootDir() + (this.model.currentPackageName() != null ? BrowserFileLoader.correctFileName(this.model.currentPackageName()) : ""));
  1680.          ((Dialog)var5).show();
  1681.          var3 = var5.getDirectory() + var5.getFile();
  1682.          if (var5.getFile() == null) {
  1683.             return;
  1684.          }
  1685.       }
  1686.  
  1687.       String var8 = var1 + " " + var3;
  1688.       Runtime var9 = Runtime.getRuntime();
  1689.  
  1690.       try {
  1691.          var9.exec(var8);
  1692.       } catch (IOException var7) {
  1693.          System.out.println(BrowserOptions.messages.getString("IOExceptionOnH") + " " + var7);
  1694.       }
  1695.    }
  1696.  
  1697.    void appletProcess(String var1, String var2, boolean var3) {
  1698.       String var4 = var2;
  1699.       if (var2 == null || var2.equals("")) {
  1700.          FileDialog var5 = new FileDialog(this, BrowserOptions.messages.getString("SelectAnHT"));
  1701.          var5.setDirectory(this.model.GetRootDir() + BrowserFileLoader.correctFileName(this.model.currentPackageName()));
  1702.          ((Dialog)var5).show();
  1703.          String var6 = var5.getFile();
  1704.          if (var6 == null) {
  1705.             return;
  1706.          }
  1707.  
  1708.          var4 = "file:" + var5.getDirectory() + var6;
  1709.       }
  1710.  
  1711.       String var8 = "";
  1712.       if (this.model.currentPackageName() != null) {
  1713.          var8 = this.model.GetRootDir() + BrowserFileLoader.correctFileName(this.model.currentPackageName());
  1714.          if (var4.substring(0, 5).equalsIgnoreCase("file:") && var4.indexOf(System.getProperty("file.separator")) == -1) {
  1715.             var4 = var4.substring(0, 5) + var8 + System.getProperty("file.separator") + var4.substring(5);
  1716.          }
  1717.       }
  1718.  
  1719.       if (var3) {
  1720.          String var10 = "-classpath " + var8 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  1721.          DebugGUI var7 = this.debugger;
  1722.          if (var7 == null ? false : var7.isDebuggerActive()) {
  1723.             this.debugger.quit();
  1724.          }
  1725.  
  1726.          this.debugger = new DebugGUI(BrowserOptions.messages.getString("DebugView") + " " + var4, BrowserOptions.debugger + " " + var10 + BrowserOptions.debug + " sun.applet.AppletViewer " + var4, this.model.currentClassName() != null ? this.model.classNamePart() : null, true);
  1727.       } else {
  1728.          String var9 = "-J-classpath -J" + var8 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  1729.          (new ProcessThread(var1 + " " + var9 + BrowserOptions.appletOption + " " + var4, new Monolog(this, BrowserOptions.messages.getString("View") + " " + var4), BrowserOptions.messages.getString("ViewerComp"))).start();
  1730.       }
  1731.    }
  1732.  
  1733.    void updatePackageList() {
  1734.    }
  1735.  
  1736.    void updateClassList() {
  1737.       String[] var1 = this.model.getClasses();
  1738.       if (this.classes.getItemCount() > 0) {
  1739.          this.classes.removeAll();
  1740.       }
  1741.  
  1742.       if (this.methods.getItemCount() > 0) {
  1743.          this.methods.removeAll();
  1744.       }
  1745.  
  1746.       try {
  1747.          for(int var2 = 0; var2 < var1.length; ++var2) {
  1748.             this.classes.addItem(var1[var2]);
  1749.          }
  1750.       } catch (NullPointerException var3) {
  1751.       }
  1752.  
  1753.       if (this.model.currentClassViewSelector() >= 0) {
  1754.          this.classes.select(this.model.currentClassViewSelector());
  1755.       }
  1756.  
  1757.       if (this.model.textState.equals("Class")) {
  1758.          this.updateSelector = true;
  1759.       }
  1760.  
  1761.       if (BrowserOptions.specialSystem[0].equalsIgnoreCase("short list")) {
  1762.          Dimension var4 = ((Component)this).getSize();
  1763.          var4.height += this.delta;
  1764.          ((Component)this).setSize(var4);
  1765.          ((Container)this).validate();
  1766.          var4.height -= this.delta;
  1767.          ((Component)this).setSize(var4);
  1768.          ((Container)this).validate();
  1769.       }
  1770.  
  1771.    }
  1772.  
  1773.    void updateMethodList() {
  1774.       String[] var1 = this.model.getMethods();
  1775.       if (this.methods.getItemCount() > 0) {
  1776.          this.methods.removeAll();
  1777.       }
  1778.  
  1779.       try {
  1780.          for(int var2 = 0; var2 < var1.length; ++var2) {
  1781.             this.methods.addItem(var1[var2]);
  1782.          }
  1783.       } catch (NullPointerException var4) {
  1784.       }
  1785.  
  1786.       int var5 = this.model.currentMethodViewSelector();
  1787.       if (var5 >= 0) {
  1788.          this.methods.select(var5);
  1789.          this.oldMethodIndex = var5;
  1790.       }
  1791.  
  1792.       if (BrowserOptions.specialSystem[0].equalsIgnoreCase("short list")) {
  1793.          Dimension var3 = ((Component)this).getSize();
  1794.          var3.height += this.delta;
  1795.          ((Component)this).setSize(var3);
  1796.          ((Container)this).validate();
  1797.          var3.height -= this.delta;
  1798.          ((Component)this).setSize(var3);
  1799.          ((Container)this).validate();
  1800.       }
  1801.  
  1802.    }
  1803.  
  1804.    public void callbackWaiting() {
  1805.       String var1 = "-classpath " + System.getProperty("user.dir") + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  1806.       String var2 = BrowserOptions.debugger + " ";
  1807.       if (this.evaluateBreakLine == -1) {
  1808.          this.debugger = new DebugGUI(BrowserOptions.messages.getString("Debug") + " " + this.debugFilename, var2 + var1 + BrowserOptions.debug + " ", this.debugFilename, false);
  1809.       } else {
  1810.          DebugGUI var3 = this.evaluateDebugger;
  1811.          if (!(var3 == null ? false : var3.isDebuggerActive())) {
  1812.             this.evaluateDebugger = new DebugGUI(BrowserOptions.messages.getString("Evaluate"), var2 + var1 + BrowserOptions.debug + " ", this.evaluateClass, this.evaluateBreakLine);
  1813.          } else {
  1814.             this.evaluateDebugger.evaluateReinit(this.evaluateClass);
  1815.             this.evaluateDebugger.evaluateInit(this.evaluateClass, this.evaluateBreakLine);
  1816.          }
  1817.       }
  1818.    }
  1819.  
  1820.    private boolean testDiscardSave(boolean var1) {
  1821.       if (this.oldText != null && this.oldText.compareTo(this.output.getText()) != 0) {
  1822.          if (!var1) {
  1823.             SimpleDialog var2 = new SimpleDialog(this, BrowserOptions.messages.getString("DiscardCha") + ((Frame)this).getTitle() + "'?");
  1824.             return var2.result;
  1825.          }
  1826.  
  1827.          this.updateSelector = false;
  1828.          ((Frame)this).setCursor(3);
  1829.          if (this.locateMatch(this.output.getText(), '{', '}', 0, true) != 0) {
  1830.             ((Frame)this).setCursor(0);
  1831.             new InformationDialog(this, BrowserOptions.messages.getString("TheSourceC"));
  1832.             return false;
  1833.          }
  1834.  
  1835.          if (!this.model.save(this.output.getText())) {
  1836.             ((Frame)this).setCursor(0);
  1837.             new InformationDialog(this, BrowserOptions.messages.getString("TheClassFil") + " " + this.model.currentClassName() + BrowserOptions.messages.getString("JavaHasBee"));
  1838.             return false;
  1839.          }
  1840.  
  1841.          ((Frame)this).setCursor(0);
  1842.          this.oldText = this.output.getText();
  1843.       }
  1844.  
  1845.       return true;
  1846.    }
  1847.  
  1848.    void docProcess(String var1) {
  1849.       String var2 = this.model.GetRootDir() + BrowserFileLoader.correctFileName(this.model.currentPackageName());
  1850.       String var3 = BrowserOptions.documenter + " ";
  1851.       String var4 = "-sourcepath " + var2 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  1852.       String var5 = "-d " + var2 + " ";
  1853.       Object var6 = null;
  1854.       Object var7 = null;
  1855.       if (var1 != null && !var1.equals("")) {
  1856.          (new ProcessThread(var3 + BrowserOptions.document + " " + var1, new Monolog(this, BrowserOptions.messages.getString("Documentin") + " " + var1), BrowserOptions.messages.getString("Documentati"))).start();
  1857.       } else if (this.oldClassIndex == -1 && this.oldPackageIndex != -1) {
  1858.          String var8 = this.model.currentPackageName();
  1859.          String var9 = var8.substring(0, var8.lastIndexOf(46));
  1860.          String var10 = var8.substring(var8.lastIndexOf(46) + 1);
  1861.          var2 = this.model.GetRootDir() + BrowserFileLoader.correctFileName(var9);
  1862.          var4 = "-sourcepath " + var2 + System.getProperty("path.separator") + (!BrowserOptions.optionalClasspath.equals("") ? BrowserOptions.optionalClasspath : System.getProperty("java.class.path")) + " ";
  1863.          var5 = "-d " + var2 + " ";
  1864.          (new ProcessThread(var3 + var4 + var5 + BrowserOptions.document + " " + var10, new Monolog(this, BrowserOptions.messages.getString("Documentin") + " " + var10), BrowserOptions.messages.getString("Documentati"))).start();
  1865.       } else {
  1866.          String var14 = this.model.classNamePart() + ".java";
  1867.          String var15 = this.model.classNamePart();
  1868.          (new ProcessThread(var3 + var4 + var5 + BrowserOptions.document + " " + var14, new Monolog(this, BrowserOptions.messages.getString("Documentin") + " " + var15), BrowserOptions.messages.getString("Documentati"))).start();
  1869.       }
  1870.    }
  1871.  
  1872.    void recorder(String var1) {
  1873.       if (var1 != null && !var1.equals("")) {
  1874.          String var2 = null;
  1875.          Object var3 = null;
  1876.          int var4 = 0;
  1877.          StringTokenizer var5 = new StringTokenizer(var1, ", ", false);
  1878.          if (var5.hasMoreTokens()) {
  1879.             var2 = var5.nextToken();
  1880.          }
  1881.  
  1882.          if (var5.hasMoreTokens()) {
  1883.             String var12 = var5.nextToken();
  1884.             if (var5.hasMoreTokens()) {
  1885.                var4 = new Integer(var5.nextToken());
  1886.             }
  1887.  
  1888.             if (Recorder.ois != null || Recorder.oos != null && true) {
  1889.                Recorder.close();
  1890.             }
  1891.  
  1892.             if (var12.equalsIgnoreCase("w")) {
  1893.                Recorder.OutputStream(var2);
  1894.             } else {
  1895.                if (var12.equalsIgnoreCase("r")) {
  1896.                   Recorder.InputStream(var2);
  1897.                   Object var6 = null;
  1898.  
  1899.                   for(int var7 = 1; (var13 = new Recorder()).read(); ++var7) {
  1900.                      int var8;
  1901.                      for(var8 = 0; var8 < ViewCollectionMax && (ViewCollection[var8] == null || !ViewCollection[var8].getTitle().equals(var13.windowTitle())); ++var8) {
  1902.                      }
  1903.  
  1904.                      if (var8 != ViewCollectionMax) {
  1905.                         Event var9 = var13.event();
  1906.                         if (var13.actionEvent() && (((String)var9.target).equals(Save) || ((String)var9.target).equals(SaveCompile) || ((String)var9.target).equals(SaveRun) || ((String)var9.target).equals(LineNumbers) || ((String)var9.target).equals(NewMethod) || ((String)var9.target).equals(NewClass) || ((String)var9.target).equals(NewInterface) || ((String)var9.target).equals(RenameMethod) || ((String)var9.target).equals(RenameClass) || ((String)var9.target).equals(Senders) || ((String)var9.target).equals(Receivers) || ((String)var9.target).equals(References) || ((String)var9.target).equals(Extenders) || ((String)var9.target).equals(Implementors) || ((String)var9.target).equals(Hierarchy) || ((String)var9.target).equals(Interfaces) || ((String)var9.target).equals(NewBrowser) || ((String)var9.target).equals(ClassBrowser) || ((String)var9.target).equals(DiscardEdits))) {
  1907.                            if (((String)var9.target).equals(SaveCompile) || ((String)var9.target).equals(SaveRun)) {
  1908.                               var9.target = Save;
  1909.                            }
  1910.  
  1911.                            var9.target = new MenuItem((String)var9.target);
  1912.                            ViewCollection[var8].output.setText(var13.text());
  1913.                            ViewCollection[var8].recordedSelectedText = var13.selected();
  1914.                            ViewCollection[var8].action(var9, (Object)null);
  1915.                            ViewCollection[var8].recordedSelectedText = null;
  1916.                         } else if (var13.actionEvent() && ((String)var9.target).equals(RemoveMethod)) {
  1917.                            this.model.removeMethod();
  1918.                         } else if (var13.actionEvent() && ((String)var9.target).equals(DeleteClass)) {
  1919.                            this.model.removeClass();
  1920.                         } else if (var13.event() != null && var13.event().target instanceof String && var13.event().id == 701) {
  1921.                            String var10 = (String)var9.target;
  1922.                            if (var10.equals("packages")) {
  1923.                               var9.target = ViewCollection[var8].packages;
  1924.                               ViewCollection[var8].packages.select((Integer)var9.arg);
  1925.                            }
  1926.  
  1927.                            if (var10.equals("classes")) {
  1928.                               var9.target = ViewCollection[var8].classes;
  1929.                               ViewCollection[var8].classes.select((Integer)var9.arg);
  1930.                            }
  1931.  
  1932.                            if (var10.equals("methods")) {
  1933.                               var9.target = ViewCollection[var8].methods;
  1934.                               ViewCollection[var8].methods.select((Integer)var9.arg);
  1935.                            }
  1936.  
  1937.                            ViewCollection[var8].output.setText(var13.text());
  1938.                            ViewCollection[var8].handleEvent(var9);
  1939.                         }
  1940.  
  1941.                         try {
  1942.                            Thread.sleep((long)(var4 * 100));
  1943.                         } catch (InterruptedException var11) {
  1944.                         }
  1945.                      }
  1946.                   }
  1947.                }
  1948.  
  1949.                Recorder.close();
  1950.             }
  1951.          }
  1952.       } else {
  1953.          if (Recorder.ois != null || Recorder.oos != null && true) {
  1954.             Recorder.close();
  1955.          }
  1956.  
  1957.       }
  1958.    }
  1959.  
  1960.    void updateOutOfDate() {
  1961.       String var1 = ((Frame)this).getTitle();
  1962.       if (BrowserOptions.suggestUpdate && var1.indexOf(BrowserOptions.messages.getString("OutOfDate")) < 0) {
  1963.          ((Frame)this).setTitle(var1 + BrowserOptions.messages.getString("OutOfDate"));
  1964.       }
  1965.  
  1966.    }
  1967.  
  1968.    private boolean whichFitsBrowserType(int var1) {
  1969.       if (var1 == 1 && ((Frame)this).getTitle().startsWith(BrowserOptions.messages.getString("SendersOf"))) {
  1970.          return true;
  1971.       } else if (var1 == 2 && ((Frame)this).getTitle().startsWith(BrowserOptions.messages.getString("ReceiversO"))) {
  1972.          return true;
  1973.       } else {
  1974.          return var1 == 3 && ((Frame)this).getTitle().startsWith(BrowserOptions.messages.getString("ReferencesT"));
  1975.       }
  1976.    }
  1977.  
  1978.    private boolean selectedTextIsFromTitle() {
  1979.       String var1 = this.getSelectedText();
  1980.       if (var1 != null && !var1.equals("")) {
  1981.          String var2 = ((Frame)this).getTitle();
  1982.          int var3 = 0;
  1983.          if ((var3 = var2.indexOf(BrowserOptions.messages.getString("OutOfDate"))) >= 0) {
  1984.             var2 = var2.substring(0, var3);
  1985.          }
  1986.  
  1987.          var3 = var2.indexOf(32);
  1988.          if (var3 >= 0) {
  1989.             String var4 = var2.substring(var3 + 1);
  1990.             var3 = var4.indexOf(32);
  1991.             if (var3 >= 0 && var4.substring(var3 + 1).equals(var1)) {
  1992.                return true;
  1993.             }
  1994.          }
  1995.       }
  1996.  
  1997.       return false;
  1998.    }
  1999.  
  2000.    private void resetTitle() {
  2001.       String var1 = ((Frame)this).getTitle();
  2002.       boolean var2 = false;
  2003.       if (var1.indexOf(BrowserOptions.messages.getString("OutOfDate")) >= 0) {
  2004.          ((Frame)this).setTitle(var1.substring(0, var1.indexOf(BrowserOptions.messages.getString("OutOfDate"))));
  2005.       }
  2006.  
  2007.    }
  2008.  
  2009.    void saveAll() {
  2010.       for(int var1 = 0; var1 < ViewCollectionMax; ++var1) {
  2011.          if (ViewCollection[var1] != null) {
  2012.             ViewCollection[var1].testDiscardSave(true);
  2013.          }
  2014.       }
  2015.  
  2016.    }
  2017.  
  2018.    static {
  2019.       ViewCollection = new BrowserView[ViewCollectionMax];
  2020.       DebugEvaluate = "zDbgEval";
  2021.    }
  2022. }
  2023.