home *** CD-ROM | disk | FTP | other *** search
- import java.io.BufferedReader;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FilterInputStream;
- import java.io.FilterOutputStream;
- import java.io.IOException;
- import java.io.StreamTokenizer;
- import java.io.StringReader;
- import java.io.StringWriter;
- import java.util.Observable;
- import java.util.Observer;
-
- public class BrowserModel extends Observable implements Observer {
- boolean lineNumbers = false;
- int currentMethodSelector = -1;
- int currentClassSelector = -1;
- int currentPackageSelector;
- int oldIndex = -1;
- int[] methodRef;
- int[] classRef;
- long lastModified;
- String textState = "";
- String currentPackageName;
- String currentClassName;
- String currentMethodName;
- String currentOutput;
- String[] staticClassList;
- String[] packageList;
- String[] classList;
- String[] methodList;
- String[] packageFilter;
- String[] classFilter;
- String[] methodFilter;
- MethodRecord[] listMethod;
- BrowserFileLoader fileLoader;
- String rootDir;
- boolean newMethodCreated = false;
- String newClassName;
- boolean isSystemBrowser = false;
- boolean isClassBrowser = false;
- boolean isMethodFilterBrowser = false;
- boolean saveOperation = false;
- boolean creatingNewMethod = false;
- static int Save;
- static int SaveCompile = 1;
- static int Compile = 2;
- static int Java = 3;
- static int Debug = 4;
- static int Evaluate = 5;
- static int WorkSpace = 6;
- static int Exit = 7;
- static int FindNext = 8;
- static int Find = 9;
- static int Replace = 10;
- static int Format = 11;
- static int NewMethod = 12;
- static int NewClass = 13;
- static int Match = 14;
- static int LineNumbers = 15;
- static int Options = 16;
- static int BrowseReferences = 17;
- static int BrowseSenders = 18;
- static int BrowseReceivers = 19;
- static int BrowseHierarchy = 20;
- static int BrowseInterfaces = 21;
- static int BrowseClass = 22;
- static int BrowseSystem = 23;
- static int RemoveMethod = 24;
- static int HelpContents = 25;
- static int HelpAbout = 26;
- static int BrowseImplementors = 27;
- static int BrowseExtenders = 28;
- static int SaveRun = 29;
- static int NewInterface = 30;
- static int RenameClass = 31;
- static int RenameMethod = 32;
- static int DeleteClass = 33;
- static int AppletViewer = 34;
- static int HtmlBrowser = 35;
- static int AppletViewerDebug = 36;
- static int Transcript = 37;
- static int DiscardEdits = 38;
- static int Document = 39;
- static int StackTrace = 40;
- static int SaveAll = 41;
- static int MaxState = 42;
- boolean[] state;
- boolean[] changes;
- static int PackageLoad;
- static int ClassLoad = 1;
- static int MethodLoad = 2;
- static int OutputLoad = 3;
- static int SelectClass = 4;
- static int SelectMethod = 5;
- static int ChangeState = 6;
- static int AnyEdits = 7;
- static int PackageList = 8;
- static int ClassList = 9;
- static int MethodList = 10;
- static int OutOfDate = 11;
- static int MaxChanges = 12;
-
- BrowserModel(String var1, String[] var2, String[] var3, String[] var4) {
- this.state = new boolean[MaxState];
- this.packageList = var2;
- this.classFilter = var3;
- this.methodFilter = var4;
- this.isMethodFilterBrowser = true;
- this.init(var1);
- }
-
- BrowserModel(String var1, String[] var2, String[] var3) {
- this.state = new boolean[MaxState];
- this.packageList = var2;
- this.classFilter = var3;
- this.init(var1);
- }
-
- BrowserModel(String var1, String[] var2) {
- this.state = new boolean[MaxState];
- this.staticClassList = var2;
- this.isClassBrowser = true;
- this.init(var1);
- }
-
- BrowserModel() {
- this.state = new boolean[MaxState];
- this.init((String)null);
- this.packageList = this.fileLoader.ListDirectory();
- String[] var1 = this.packageList;
- QSortAlgorithm.QuickSort(var1, 0, var1.length - 1);
- this.isSystemBrowser = true;
- }
-
- public boolean setLineNumbers() {
- this.lineNumbers = !this.lineNumbers;
- this.changes = new boolean[MaxChanges];
- if (this.textState == "Method") {
- this.changes[MethodLoad] = true;
- this.changes[SelectMethod] = true;
- this.changes[OutputLoad] = true;
- this.changes[ChangeState] = true;
- } else if (this.textState == "Class") {
- this.changes[MethodLoad] = true;
- this.changes[OutputLoad] = true;
- this.changes[ChangeState] = true;
- }
-
- boolean[] var1 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- return this.lineNumbers;
- }
-
- public boolean[] currentState() {
- this.state[Save] = this.currentClassName == null || this.lineNumbers;
- this.state[SaveAll] = this.currentClassName == null || this.lineNumbers;
- this.state[SaveCompile] = this.currentClassName == null || this.lineNumbers;
- this.state[Compile] = this.currentClassName == null;
- this.state[Java] = this.currentClassName == null;
- this.state[Debug] = this.currentClassName == null;
- this.state[Evaluate] = this.currentClassName == null;
- this.state[FindNext] = this.currentClassName == null;
- this.state[Find] = this.currentClassName == null;
- this.state[Replace] = this.currentClassName == null || this.lineNumbers;
- this.state[Format] = this.currentClassName == null || this.lineNumbers;
- this.state[NewMethod] = this.currentClassName == null || this.lineNumbers || !this.isSystemBrowser() && !this.isClassBrowser();
- this.state[NewClass] = this.currentPackageName == null && this.currentClassName == null || this.lineNumbers || !this.isSystemBrowser();
- this.state[Match] = this.currentClassName == null;
- this.state[BrowseReferences] = this.currentClassName == null;
- this.state[BrowseSenders] = this.currentClassName == null;
- this.state[BrowseReceivers] = this.currentClassName == null;
- this.state[BrowseHierarchy] = this.currentClassName == null;
- this.state[BrowseInterfaces] = this.currentClassName == null;
- this.state[BrowseExtenders] = this.currentClassName == null;
- this.state[BrowseImplementors] = this.currentClassName == null;
- this.state[BrowseClass] = this.currentClassName == null;
- this.state[RemoveMethod] = this.currentMethodName == null || this.lineNumbers || !this.isSystemBrowser() && !this.isClassBrowser();
- this.state[SaveRun] = this.currentClassName == null || this.lineNumbers;
- this.state[NewInterface] = this.currentPackageName == null && this.currentClassName == null || this.lineNumbers || !this.isSystemBrowser();
- this.state[RenameClass] = this.creatingNewMethod || this.currentClassName == null || this.lineNumbers || this.currentMethodName != null || !this.isSystemBrowser();
- this.state[RenameMethod] = this.currentMethodName == null || this.lineNumbers || !this.isSystemBrowser() && !this.isClassBrowser();
- this.state[DeleteClass] = this.currentClassName == null || this.lineNumbers || this.currentMethodName != null || !this.isSystemBrowser();
- this.state[AppletViewerDebug] = this.currentClassName == null;
- this.state[HtmlBrowser] = !BrowserOptions.htmlBrowserValid;
- this.state[HelpContents] = !BrowserOptions.htmlBrowserValid;
- this.state[Transcript] = !BrowserOptions.transcript;
- this.state[DiscardEdits] = this.currentClassName == null || this.lineNumbers;
- this.state[Document] = this.currentPackageName == null;
- this.state[StackTrace] = this.currentPackageName == null;
- return this.state;
- }
-
- private void changed(boolean[] var1) {
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- }
-
- private void changed() {
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers();
- }
-
- public String getCurrentOutput() {
- if (this.currentOutput != null) {
- return this.currentOutput;
- } else {
- this.currentOutput = null;
- String var1 = new String("");
- if (this.listMethod == null) {
- return var1;
- } else {
- if (this.textState == "Method") {
- String[] var2 = this.fileLoader.loadMethod(this.currentClassName, this.listMethod, this.currentMethodSelector);
- int var3 = 0;
- if (this.lineNumbers) {
- if (this.currentMethodSelector == MethodRecord.FindFirst(this.listMethod)) {
- var3 = this.listMethod[this.currentMethodSelector].commentStartRow();
- } else {
- var3 = this.listMethod[MethodRecord.FindPrevious(this.listMethod, this.currentMethodSelector)].endRow() + 1;
- }
- }
-
- try {
- for(int var4 = 0; var2 != null && var4 < var2.length; ++var4) {
- if (this.lineNumbers) {
- var1 = var1 + Integer.toString(var3 + var4) + "\t" + var2[var4] + "\n";
- } else {
- var1 = var1 + var2[var4] + "\n";
- }
- }
- } catch (NullPointerException var9) {
- }
- } else if (this.textState == "Class") {
- String[] var10 = this.fileLoader.loadClassPart(this.currentClassName, this.listMethod);
- String[] var11 = this.fileLoader.loadClassEnd(this.currentClassName, this.listMethod);
-
- try {
- int var12 = 1;
-
- for(int var5 = 0; var5 < var10.length; ++var5) {
- if (this.lineNumbers) {
- var1 = var1 + Integer.toString(var12 + var5) + "\t" + var10[var5] + "\n";
- } else {
- var1 = var1 + var10[var5] + "\n";
- }
- }
-
- int var6 = MethodRecord.FindLast(this.listMethod);
- if (var6 != -1) {
- var12 = this.listMethod[var6].endRow() + 1;
- }
-
- for(int var7 = 0; var7 < var11.length; ++var7) {
- if (this.lineNumbers) {
- var1 = var1 + Integer.toString(var12 + var7) + "\t" + var11[var7] + "\n";
- } else {
- var1 = var1 + var11[var7] + "\n";
- }
- }
- } catch (NullPointerException var8) {
- }
- }
-
- return var1;
- }
- }
- }
-
- public String[] currentPackages() {
- String[] var1 = new String[this.packageList.length];
-
- for(int var2 = 0; var2 < this.packageList.length; ++var2) {
- var1[var2] = this.packageList[var2].substring(1);
- }
-
- return var1;
- }
-
- void currentMethods() {
- int var1 = this.currentClassSelector;
- if (var1 >= 0) {
- this.currentClassName = this.classList[var1];
- String var2 = this.currentClassName;
- this.lastModified = this.fileLoader.lastModified(this.majorClassName(var2));
- this.fileLoader.loadClass(var2, true);
- }
-
- }
-
- void currentClasses() {
- if (this.packageList != null) {
- int var1 = this.currentPackageSelector;
- this.fileLoader.loadPackage(this.GetRootDir(), this.packageList[var1]);
- } else {
- this.updateClassList();
- }
- }
-
- public void selectPackage(int var1) {
- this.currentPackageSelector = var1;
- this.textState = "";
- this.currentPackageName = this.packageList[var1];
- this.currentClassName = null;
- this.currentClassSelector = -1;
- this.changes = new boolean[MaxChanges];
- this.changes[ClassLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- public void selectClass(int var1) {
- this.changes = new boolean[MaxChanges];
- this.currentMethodSelector = -1;
- if (this.textState != "" && this.currentClassSelector == this.classRef[var1]) {
- this.currentMethodName = null;
- this.changes[OutputLoad] = true;
- } else {
- this.currentClassSelector = this.classRef[var1];
- this.changes[OutputLoad] = true;
- this.changes[MethodLoad] = true;
- }
-
- this.textState = "Class";
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- public void selectMethod(int var1) {
- this.currentMethodSelector = this.methodRef[var1];
- this.currentMethodName = this.methodList[var1];
- this.textState = "Method";
- this.changes = new boolean[MaxChanges];
- this.changes[OutputLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- private void setCurrentClass(String var1) {
- this.currentOutput = var1;
- this.changes = new boolean[MaxChanges];
- this.changes[OutputLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- private void setCurrentMethod(String var1) {
- this.currentOutput = var1;
- this.changes = new boolean[MaxChanges];
- this.changes[OutputLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- public void newClass(String var1) {
- this.currentClassSelector = -1;
- this.changes = new boolean[MaxChanges];
- this.changes[ClassLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- this.setCurrentClassName(var1);
- this.setCurrentClass("/**\n * \n */\nclass " + var1 + " {\n/**\n * \n */\n" + var1 + " ( ) {\n\t\n\t}\n}\n");
- this.textState = "Class";
- this.currentOutput = null;
- this.lastModified = 0L;
- }
-
- public void newMethod(String var1) {
- this.creatingNewMethod = true;
- this.currentMethodName = null;
- String var2 = "";
- if (var1.indexOf(32) == -1) {
- var2 = "void ";
- }
-
- this.setCurrentMethod("/**\n * \n */\n" + var2 + var1 + " ( ) {\n\t\n\t}\n");
- this.currentMethodSelector = -1;
- this.textState = "Method";
- this.currentOutput = null;
- }
-
- public String systemTitle() {
- return AboutBrowser.systemName;
- }
-
- public String currentClassName() {
- return this.currentClassName;
- }
-
- public void setCurrentClassName(String var1) {
- this.currentClassName = this.currentPackageName + "." + var1;
- }
-
- public void setCurrentMethodName(String var1) {
- this.currentMethodName = var1;
- }
-
- public boolean grep(String var1, int var2) {
- String[] var3 = new String[1000];
- String[] var4 = new String[5000];
- int var5 = 0;
- int var6 = 0;
- Process var7 = null;
- String[] var8 = new String[]{null, "-n", null, this.GetRootDir() + BrowserFileLoader.correctFileName(this.currentPackageName()) + System.getProperty("file.separator") + "*.java"};
- if (Math.abs(var2) == 1) {
- var8[2] = BrowserOptions.getRESenders(var1);
- } else if (Math.abs(var2) == 2) {
- var8[2] = BrowserOptions.getREReceivers(var1);
- } else if (Math.abs(var2) == 3) {
- var8[2] = BrowserOptions.getREReferences(var1);
- } else if (var2 == 4) {
- var8[2] = BrowserOptions.getREExtenders("class", "extends", var1);
- } else if (var2 == 5) {
- var8[2] = BrowserOptions.getREImplementors("class", "implements", var1);
- }
-
- label171: {
- label166: {
- boolean var10000;
- if (System.getProperty("os.name").equals("Windows 95")) {
- var10000 = true;
- } else {
- if (!System.getProperty("os.name").equals("Windows NT")) {
- break label166;
- }
-
- var10000 = true;
- }
-
- if (var10000) {
- var8[0] = BrowserOptions.grep.trim();
- break label171;
- }
- }
-
- var8[0] = "grep";
-
- try {
- String var9;
- try {
- var9 = BrowserOptions.grep.trim().substring(1 + BrowserOptions.grep.trim().indexOf(32));
- } catch (StringIndexOutOfBoundsException var17) {
- var9 = "grep.s";
- System.err.println(BrowserOptions.messages.getString("GrepOption") + " " + var17);
- }
-
- DataOutputStream var10 = new DataOutputStream(new FileOutputStream(var9));
- var10.writeBytes(var8[0] + " ");
- var10.writeBytes(var8[1] + " ");
- var10.writeBytes(var8[2] + " ");
- var10.writeBytes(var8[3] + "\n");
- ((FilterOutputStream)var10).close();
- } catch (FileNotFoundException var18) {
- System.err.println(BrowserOptions.messages.getString("GrepFile") + " " + var18);
- } catch (IOException var19) {
- System.err.println(BrowserOptions.messages.getString("GrepFile") + " " + var19);
- }
- }
-
- Runtime var22 = Runtime.getRuntime();
-
- try {
- label156: {
- label155: {
- boolean var28;
- if (System.getProperty("os.name").equals("Windows 95")) {
- var28 = true;
- } else {
- if (!System.getProperty("os.name").equals("Windows NT")) {
- break label155;
- }
-
- var28 = true;
- }
-
- if (var28) {
- var7 = var22.exec(var8);
- break label156;
- }
- }
-
- var7 = var22.exec(BrowserOptions.grep.trim());
- }
- } catch (IOException var21) {
- System.out.println(BrowserOptions.messages.getString("IOExceptionOnG") + " " + var21);
- System.out.println("Process: " + var7);
- }
-
- DataInputStream var23 = new DataInputStream(var7.getInputStream());
-
- try {
- while(true) {
- String var11 = var23.readLine();
- if (var11 == null) {
- ((FilterInputStream)var23).close();
- break;
- }
-
- try {
- var3[var5++] = this.parseSearchResult(var11, true);
- var4[var6++] = this.parseSearchResult(var11, false);
- } catch (ArrayIndexOutOfBoundsException var16) {
- System.err.println(BrowserOptions.messages.getString("MaximumRes"));
- }
-
- if (var5 > 0 && var3[var5] == var3[var5 - 1]) {
- --var5;
- }
- }
- } catch (IOException var20) {
- System.out.println(BrowserOptions.messages.getString("ErrorOnGre"));
- }
-
- if (var5 == 0) {
- return false;
- } else {
- String[] var24 = new String[var5];
- String[] var12 = new String[var6];
- if (var2 < 4) {
- for(int var13 = 0; var13 < var5; ++var13) {
- var24[var13] = var3[var13];
- }
- } else {
- int var14 = 0;
-
- for(int var25 = 0; var25 < var5; ++var25) {
- for(int var15 = 0; var15 < this.classList.length; ++var15) {
- if (var3[var25].equalsIgnoreCase(this.classNamePart(this.classList[var15]))) {
- var24[var14++] = this.classList[var15];
- break;
- }
- }
- }
- }
-
- for(int var26 = 0; var26 < var6; ++var26) {
- var12[var26] = var4[var26];
- }
-
- String[] var27 = new String[]{this.currentPackageName()};
- if (var2 == 1) {
- new BrowserView(new BrowserModel(this.rootDir, var27, var24, var12), BrowserOptions.messages.getString("SendersOf") + " " + var1, true);
- } else if (var2 == 2) {
- new BrowserView(new BrowserModel(this.rootDir, var27, var24, var12), BrowserOptions.messages.getString("ReceiversO") + " " + var1, true);
- } else if (var2 == 3) {
- new BrowserView(new BrowserModel(this.rootDir, var27, var24, var12), BrowserOptions.messages.getString("ReferencesT") + " " + var1, true);
- } else if (var2 == 4) {
- new BrowserView(new BrowserModel(this.rootDir, var24), BrowserOptions.messages.getString("ExtendersO") + " " + var1, false);
- } else if (var2 == 5) {
- new BrowserView(new BrowserModel(this.rootDir, var24), BrowserOptions.messages.getString("Implementor") + " " + var1, false);
- } else if (var2 == -1 || var2 == -2 || var2 == -3) {
- this.packageList = var27;
- this.classFilter = var24;
- this.methodFilter = var12;
- this.init(this.rootDir);
- }
-
- return true;
- }
- }
-
- private String[] getInterface(String var1, String var2, String var3) {
- String[] var4;
- int var5;
- String[] var6;
- Process var7;
- label91: {
- label87: {
- var4 = new String[16];
- var5 = 0;
- var6 = new String[]{BrowserOptions.grep.trim(), "-n", BrowserOptions.getREInterfaces(var1, var3), var2 + System.getProperty("file.separator") + var1 + ".java"};
- var7 = null;
- boolean var10000;
- if (System.getProperty("os.name").equals("Windows 95")) {
- var10000 = true;
- } else {
- if (!System.getProperty("os.name").equals("Windows NT")) {
- break label87;
- }
-
- var10000 = true;
- }
-
- if (var10000) {
- var6[0] = BrowserOptions.grep.trim();
- break label91;
- }
- }
-
- var6[0] = "grep";
-
- try {
- String var8;
- try {
- var8 = BrowserOptions.grep.trim().substring(1 + BrowserOptions.grep.trim().indexOf(32));
- } catch (StringIndexOutOfBoundsException var11) {
- var8 = "grep.s";
- System.err.println(BrowserOptions.messages.getString("GrepOption") + " " + var11);
- }
-
- DataOutputStream var9 = new DataOutputStream(new FileOutputStream(var8));
- var9.writeBytes(var6[0] + " ");
- var9.writeBytes(var6[1] + " ");
- var9.writeBytes(var6[2] + " ");
- var9.writeBytes(var6[3] + "\n");
- ((FilterOutputStream)var9).close();
- } catch (FileNotFoundException var12) {
- System.err.println(BrowserOptions.messages.getString("GrepFile") + " " + var12);
- } catch (IOException var13) {
- System.err.println(BrowserOptions.messages.getString("GrepFile") + " " + var13);
- }
- }
-
- Runtime var16 = Runtime.getRuntime();
-
- try {
- label77: {
- label76: {
- boolean var18;
- if (System.getProperty("os.name").equals("Windows 95")) {
- var18 = true;
- } else {
- if (!System.getProperty("os.name").equals("Windows NT")) {
- break label76;
- }
-
- var18 = true;
- }
-
- if (var18) {
- var7 = var16.exec(var6);
- break label77;
- }
- }
-
- var7 = var16.exec(BrowserOptions.grep.trim());
- }
- } catch (IOException var15) {
- System.out.println(BrowserOptions.messages.getString("IOExceptionOnGr2"));
- }
-
- DataInputStream var17 = new DataInputStream(var7.getInputStream());
- StreamTokenizer var10 = new StreamTokenizer(var17);
- var10.ordinaryChar(47);
- var10.slashStarComments(true);
- var10.slashSlashComments(true);
-
- try {
- while(var10.nextToken() != -1) {
- switch ((char)var10.ttype) {
- case '�':
- if (var10.sval.equalsIgnoreCase(var3)) {
- while(var10.nextToken() != -1) {
- if ((char)var10.ttype == '{') {
- return var4;
- }
-
- if ((char)var10.ttype == '�') {
- var4[var5++] = var10.sval;
- }
- }
- }
- }
- }
- } catch (IOException var14) {
- }
-
- return var4;
- }
-
- private String getClassParent(String var1, String var2, String var3) {
- String[] var4;
- Process var5;
- label81: {
- label77: {
- var4 = new String[]{BrowserOptions.grep.trim(), "-n", BrowserOptions.getREHierarchy(var1, var3), var2 + System.getProperty("file.separator") + var1 + ".java"};
- var5 = null;
- boolean var10000;
- if (System.getProperty("os.name").equals("Windows 95")) {
- var10000 = true;
- } else {
- if (!System.getProperty("os.name").equals("Windows NT")) {
- break label77;
- }
-
- var10000 = true;
- }
-
- if (var10000) {
- var4[0] = BrowserOptions.grep.trim();
- break label81;
- }
- }
-
- var4[0] = "grep";
-
- try {
- String var6;
- try {
- var6 = BrowserOptions.grep.trim().substring(1 + BrowserOptions.grep.trim().indexOf(32));
- } catch (StringIndexOutOfBoundsException var9) {
- var6 = "grep.s";
- System.err.println(BrowserOptions.messages.getString("GrepOption") + " " + var9);
- }
-
- DataOutputStream var7 = new DataOutputStream(new FileOutputStream(var6));
- var7.writeBytes(var4[0] + " ");
- var7.writeBytes(var4[1] + " ");
- var7.writeBytes(var4[2] + " ");
- var7.writeBytes(var4[3] + "\n");
- ((FilterOutputStream)var7).close();
- } catch (FileNotFoundException var10) {
- System.err.println(BrowserOptions.messages.getString("GrepFile") + " " + var10);
- } catch (IOException var11) {
- System.err.println(BrowserOptions.messages.getString("GrepFile") + " " + var11);
- }
- }
-
- Runtime var14 = Runtime.getRuntime();
-
- try {
- label67: {
- label66: {
- boolean var16;
- if (System.getProperty("os.name").equals("Windows 95")) {
- var16 = true;
- } else {
- if (!System.getProperty("os.name").equals("Windows NT")) {
- break label66;
- }
-
- var16 = true;
- }
-
- if (var16) {
- var5 = var14.exec(var4);
- break label67;
- }
- }
-
- var5 = var14.exec(BrowserOptions.grep.trim());
- }
- } catch (IOException var13) {
- System.out.println(BrowserOptions.messages.getString("IOExceptionOnGr2"));
- }
-
- DataInputStream var15 = new DataInputStream(var5.getInputStream());
- StreamTokenizer var8 = new StreamTokenizer(var15);
- var8.ordinaryChar(47);
- var8.slashStarComments(true);
- var8.slashSlashComments(true);
-
- try {
- while(var8.nextToken() != -1) {
- switch ((char)var8.ttype) {
- case '�':
- if (var8.sval.equalsIgnoreCase(var3)) {
- var8.nextToken();
- if ((char)var8.ttype == '�') {
- return var8.sval;
- }
- }
- }
- }
- } catch (IOException var12) {
- }
-
- return "";
- }
-
- public String classNamePart() {
- return this.minorClassName(this.currentClassName.substring(this.currentClassName.lastIndexOf(46) + 1));
- }
-
- public String classNamePart(String var1) {
- return this.minorClassName(var1.substring(var1.lastIndexOf(46) + 1));
- }
-
- public void hierarchyBrowser(int var1) {
- String[] var2 = new String[100];
- String[] var3 = new String[100];
- int var4 = 0;
- int var5 = 0;
- String var6 = null;
- String var7 = null;
- if (var1 == 1) {
- var6 = "extends";
- var7 = BrowserOptions.messages.getString("HierarchyO") + " ";
- }
-
- if (var1 == 2) {
- var6 = "implements";
- var7 = BrowserOptions.messages.getString("InterfacesO") + " ";
- }
-
- var3[var5++] = this.currentClassName;
- var2[var4++] = this.currentPackageName();
- Object var8 = null;
- String var17 = this.getClassParent(this.classNamePart(), this.GetRootDir() + BrowserFileLoader.correctFileName(this.currentPackageName()), var6);
- String[] var9 = this.fileLoader.ListDirectory();
-
- while(var17 != "") {
- boolean var10 = true;
-
- for(int var11 = 0; var11 < var9.length && var10; ++var11) {
- String[] var12 = this.fileLoader.ListFiles(this.GetRootDir() + BrowserFileLoader.correctFileName(var9[var11]));
-
- for(int var13 = 0; var13 < var12.length && var10; ++var13) {
- if (var12[var13].indexOf(var17) != -1) {
- var3[var5++] = var9[var11] + "." + var17;
-
- int var14;
- for(var14 = 0; var14 < var4 && !var2[var14].equals(var9[var11]); ++var14) {
- }
-
- if (var14 == var4) {
- var2[var4++] = var9[var11];
- }
-
- var17 = this.getClassParent(var17, this.GetRootDir() + BrowserFileLoader.correctFileName(var9[var11]), var6);
- var10 = false;
- }
- }
- }
- }
-
- String[] var18 = new String[var5];
- int var19 = 0;
-
- for(int var20 = var5 - 1; var19 < var5; --var20) {
- var18[var20] = var3[var19];
- ++var19;
- }
-
- new BrowserView(new BrowserModel(this.rootDir, var18), var7 + this.classNamePart(this.currentClassName), false);
- }
-
- public boolean matchClass(String var1) {
- if (this.classFilter == null) {
- return true;
- } else {
- String var3 = this.majorClassName(var1.substring(var1.lastIndexOf(46) + 1));
-
- for(int var2 = 0; var2 < this.classFilter.length; ++var2) {
- if (var3.equalsIgnoreCase(this.classFilter[var2])) {
- return true;
- }
- }
-
- return false;
- }
- }
-
- private String parseSearchResult(String var1, boolean var2) {
- String var3 = var1.substring(0, var1.indexOf(".java"));
- String var4 = var3.substring(var3.lastIndexOf(BrowserOptions.delimiterChar()) + 1);
- if (var2) {
- return var4;
- } else {
- String var5 = var1.substring(var1.indexOf(58, 2) + 1);
- return var4 + " " + var5.substring(0, var5.indexOf(58));
- }
- }
-
- public boolean matchMethod(String var1, MethodRecord var2) {
- if (this.methodFilter == null) {
- return true;
- } else {
- String var4 = this.majorClassName().substring(this.majorClassName().lastIndexOf(46) + 1);
-
- for(int var3 = 0; var3 < this.methodFilter.length; ++var3) {
- String var5 = this.methodFilter[var3].substring(0, this.methodFilter[var3].indexOf(32));
- int var6 = Integer.parseInt(this.methodFilter[var3].substring(this.methodFilter[var3].indexOf(32) + 1));
- if (var4.equalsIgnoreCase(var5) && var6 >= var2.startRow() && var6 <= var2.endRow()) {
- return true;
- }
- }
-
- return false;
- }
- }
-
- public String GetRootDir() {
- if (this.rootDir == null) {
- this.rootDir = BrowserOptions.userDir;
- if (this.rootDir.equals("")) {
- this.rootDir = System.getProperty("user.dir");
- }
- }
-
- return this.rootDir;
- }
-
- private void tabber(int var1, StringWriter var2) {
- byte var3 = 32;
- int var4 = BrowserOptions.spaces;
- if (var4 == 0) {
- var4 = 1;
- var3 = 9;
- } else {
- var3 = 32;
- }
-
- for(int var6 = 0; var6 < var1; ++var6) {
- for(int var5 = 0; var5 < var4; ++var5) {
- var2.write(var3);
- }
- }
-
- }
-
- public String format(String var1) {
- StringReader var2 = new StringReader(var1);
- StringWriter var3 = new StringWriter();
- int var5 = 0;
- int var6 = 0;
- boolean var7 = true;
- boolean var8 = false;
- boolean var9 = false;
- boolean var10 = false;
- boolean var11 = false;
- boolean var12 = false;
- boolean var13 = false;
- boolean var14 = false;
-
- int var4;
- try {
- for(; (var4 = var2.read()) != -1; var5 = var4) {
- if (var4 == 10 && var11) {
- var11 = false;
- var10 = false;
- var7 = true;
- var3.write(var4);
- } else if (var11) {
- var3.write(var4);
- } else if (var13 && var5 == 42 && var4 == 47) {
- var13 = false;
- var3.write(var4);
- } else if (var13) {
- var3.write(var4);
- } else if (var14) {
- var14 = false;
- var3.write(var4);
- } else if (var4 == BrowserOptions.delimiterChar()) {
- var14 = true;
- var3.write(var4);
- } else if (var4 == 39 && var8 && !var14) {
- var8 = false;
- var3.write(var4);
- } else if (var4 == 34 && var9 && !var14) {
- var9 = false;
- var3.write(var4);
- } else if (!var8 && !var9) {
- if (var4 == 10) {
- var7 = true;
- var3.write(var4);
- } else if (var4 == 123) {
- ++var6;
- if (var7) {
- var7 = false;
- this.tabber(var6, var3);
- }
-
- var3.write(var4);
- } else if ((var4 != 32 || !var7) && (var4 != 9 || !var7)) {
- if (var7) {
- var7 = false;
- this.tabber(var6, var3);
- }
-
- if (var4 == 39 && !var14) {
- var8 = true;
- }
-
- if (var4 == 34 && !var14) {
- var9 = true;
- }
-
- if (var4 == 125) {
- --var6;
- }
-
- if (var10 && var4 == 47) {
- var11 = true;
- }
-
- if (var10 && !var11) {
- var10 = false;
- }
-
- if (var4 == 47) {
- var10 = true;
- }
-
- if (var12 && var4 == 42) {
- var13 = true;
- }
-
- if (var12 && !var13) {
- var12 = false;
- }
-
- if (var4 == 47 && !var13) {
- var12 = true;
- }
-
- var3.write(var4);
- }
- } else {
- var3.write(var4);
- }
- }
- } catch (IOException var15) {
- System.err.println(BrowserOptions.messages.getString("IOFailedOn"));
- }
-
- return var3.toString();
- }
-
- public int currentMethodViewSelector() {
- for(int var1 = 0; var1 < this.methodRef.length; ++var1) {
- if (this.methodRef[var1] == this.currentMethodSelector) {
- if (this.currentMethodName == null) {
- this.currentMethodName = this.currentMethodName();
- }
-
- return var1;
- }
- }
-
- return -1;
- }
-
- public int currentClassViewSelector() {
- for(int var1 = 0; var1 < this.classRef.length; ++var1) {
- if (this.classRef[var1] == this.currentClassSelector) {
- return var1;
- }
- }
-
- return -1;
- }
-
- public boolean save(String var1) {
- boolean var2 = false;
- String var3 = null;
- long var4 = this.fileLoader.lastModified(this.majorClassName(this.currentClassName));
- if (var4 != this.lastModified) {
- return false;
- } else {
- if (this.textState == "Method") {
- this.creatingNewMethod = false;
- this.fileLoader.saveMethod(this.majorClassName(this.currentClassName), this.listMethod, this.currentMethodSelector, var1);
- var3 = this.currentMethodName;
- if (this.currentMethodSelector == -1) {
- this.newMethodCreated = true;
- }
-
- if (var1.equals("")) {
- this.currentMethodSelector = -1;
- }
- } else if (this.textState == "Class") {
- this.fileLoader.saveClassDef(this.currentClassName, this.currentClassSelector == -1, var1);
- if (this.currentClassSelector == -1) {
- var2 = true;
- this.newClassName = this.currentClassName;
- this.fileLoader.loadPackage(this.GetRootDir(), this.packageList[this.currentPackageSelector]);
- }
-
- this.currentMethodSelector = -1;
- }
-
- this.saveOperation = true;
- String var6 = this.currentClassName;
- this.lastModified = this.fileLoader.lastModified(this.majorClassName(var6));
- this.fileLoader.loadClass(var6, true);
- this.saveOperation = false;
- if (var3 != null) {
- this.currentMethodName = var3;
- this.changes = new boolean[MaxChanges];
- boolean[] var7 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var7);
- }
-
- if (var2) {
- this.changes = new boolean[MaxChanges];
- this.changes[OutputLoad] = true;
- boolean[] var8 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var8);
- }
-
- BrowserRegistry.register.changing(this, this.majorClassName(this.currentClassName));
- return true;
- }
- }
-
- boolean classBrowser(String var1) {
- String[] var2 = new String[1];
- String var3;
- if (var1 != null && !var1.equals("")) {
- var3 = this.currentPackageName() + "." + var1;
- String[] var5 = this.fileLoader.getClasses(this.GetRootDir(), this.currentPackageName());
-
- int var4;
- for(var4 = 0; var4 < var5.length && !var5[var4].equals(var3); ++var4) {
- }
-
- if (var4 == var5.length) {
- return false;
- }
- } else {
- var3 = this.currentClassName;
- }
-
- var2[0] = var3;
- new BrowserView(new BrowserModel(this.rootDir, var2), "Class/Interface " + this.classNamePart(var3), false);
- return true;
- }
-
- private void loadClass(String var1, boolean var2) {
- this.lastModified = this.fileLoader.lastModified(this.majorClassName(var1));
- this.fileLoader.loadClass(var1, var2);
- }
-
- String currentPackageName() {
- return (this.currentPackageName == null || this.currentPackageName == "") && this.currentClassName != null ? this.currentClassName.substring(0, this.currentClassName.lastIndexOf(46)) : this.currentPackageName;
- }
-
- String currentMethodName() {
- return this.currentMethodSelector != -1 ? this.listMethod[this.currentMethodSelector].methodName() : "";
- }
-
- boolean removeMethod() {
- boolean var1 = false;
- if (var1 = this.save("")) {
- this.currentMethodName = null;
- this.textState = "Class";
- this.currentOutput = null;
- this.changes = new boolean[MaxChanges];
- this.changes[OutputLoad] = true;
- this.changes[MethodLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- return var1;
- }
-
- void init(String var1) {
- if (var1 != null) {
- this.rootDir = var1;
- }
-
- this.fileLoader = new BrowserFileLoader(this.GetRootDir());
- this.fileLoader.addObserver(this);
- BrowserRegistry.register.addObserver(this);
- }
-
- public void update(Observable var1, Object var2) {
- if (var1 instanceof BrowserRegistry) {
- String var3 = (String)var2;
- BrowserRegistry var4 = (BrowserRegistry)var1;
- if (var2 == null) {
- return;
- }
-
- if (var4.initiator() == this) {
- return;
- }
-
- if (this.currentClassName != null && this.majorClassName(this.currentClassName).equals(var3)) {
- this.changes = new boolean[MaxChanges];
- this.changes[AnyEdits] = true;
- if (this.isMethodFilterBrowser()) {
- this.changes[OutOfDate] = true;
- }
-
- boolean[] var5 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var5);
- return;
- }
- } else if (var1 instanceof BrowserFileLoader) {
- boolean[] var6 = (boolean[])var2;
- if (var2 == null) {
- return;
- }
-
- if (var6[BrowserFileLoader.PackageLoad]) {
- this.changes = new boolean[MaxChanges];
- this.changes[PackageList] = true;
- boolean[] var7 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var7);
- }
-
- if (var6[BrowserFileLoader.ClassLoad]) {
- this.updateClassList();
- }
-
- if (var6[BrowserFileLoader.MethodLoad]) {
- this.changes = new boolean[MaxChanges];
- this.changes[MethodList] = true;
- boolean[] var8 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var8);
- }
- }
-
- }
-
- void reload() {
- this.changes = new boolean[MaxChanges];
- this.changes[OutputLoad] = true;
- this.changes[MethodLoad] = true;
- if (this.textState == "Method") {
- this.changes[SelectMethod] = true;
- }
-
- boolean[] var1 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- }
-
- public void finalization() {
- BrowserRegistry.register.deleteObserver(this);
- }
-
- public void interfacesBrowser(int var1) {
- String[] var2 = new String[100];
- String[] var3 = new String[100];
- int var4 = 0;
- int var5 = 0;
- String var6 = null;
- String var7 = null;
- if (var1 == 1) {
- var6 = "extends";
- var7 = BrowserOptions.messages.getString("HierarchyO") + " ";
- }
-
- if (var1 == 2) {
- var6 = "implements";
- var7 = BrowserOptions.messages.getString("InterfacesO") + " ";
- }
-
- var3[var5++] = this.currentClassName;
- var2[var4++] = this.currentPackageName();
- String[] var8 = this.getInterface(this.classNamePart(), this.GetRootDir() + BrowserFileLoader.correctFileName(this.currentPackageName()), var6);
- String[] var9 = this.fileLoader.ListDirectory();
-
- for(int var10 = 0; var10 < var8.length && var8[var10] != null; ++var10) {
- boolean var11 = true;
-
- for(int var12 = 0; var12 < var9.length && var11; ++var12) {
- String[] var13 = this.fileLoader.ListFiles(this.GetRootDir() + BrowserFileLoader.correctFileName(var9[var12]));
-
- for(int var14 = 0; var14 < var13.length && var11; ++var14) {
- if (var13[var14].indexOf(var8[var10]) != -1) {
- var3[var5++] = var9[var12] + "." + var8[var10];
-
- int var15;
- for(var15 = 0; var15 < var4 && !var2[var15].equals(var9[var12]); ++var15) {
- }
-
- if (var15 == var4) {
- var2[var4++] = var9[var12];
- }
-
- var11 = false;
- }
- }
- }
- }
-
- String[] var18 = new String[var5];
- int var19 = 0;
-
- for(int var20 = var5 - 1; var19 < var5; --var20) {
- var18[var20] = var3[var19];
- ++var19;
- }
-
- new BrowserView(new BrowserModel(this.rootDir, var18), var7 + this.classNamePart(this.currentClassName), false);
- }
-
- void reinit() {
- if (this.packageList != null) {
- this.rootDir = null;
- this.fileLoader = new BrowserFileLoader(this.GetRootDir());
- this.fileLoader.addObserver(this);
- this.packageList = this.fileLoader.ListDirectory();
- String[] var1 = this.packageList;
- QSortAlgorithm.QuickSort(var1, 0, var1.length - 1);
- this.currentPackageName = null;
- this.changes = new boolean[MaxChanges];
- this.changes[PackageLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
- }
-
- void reloadNoOutput() {
- this.changes = new boolean[MaxChanges];
- this.changes[MethodLoad] = true;
- if (this.textState == "Method") {
- this.changes[SelectMethod] = true;
- }
-
- boolean[] var1 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- }
-
- public void newInterface(String var1) {
- this.changes = new boolean[MaxChanges];
- this.changes[ClassLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- this.setCurrentClassName(var1);
- this.setCurrentClass("/**\n * \n */\ninterface " + var1 + " {\n}\n");
- this.textState = "Class";
- this.currentClassSelector = -1;
- this.currentOutput = null;
- this.lastModified = 0L;
- }
-
- public boolean removeClass() {
- boolean var1;
- if (this.isMajorEqualMinor()) {
- var1 = this.fileLoader.removeClassFile(this.currentClassName());
- } else {
- var1 = this.fileLoader.removeInnerClass(this.currentClassName());
- }
-
- BrowserRegistry.register.changing(this, this.majorClassName(this.currentClassName));
- if (var1) {
- this.textState = "";
- this.currentClassName = null;
- this.currentClassSelector = -1;
- this.changes = new boolean[MaxChanges];
- this.changes[ClassLoad] = true;
- boolean[] var2 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var2);
- }
-
- return var1;
- }
-
- boolean renameMethod(String var1, String var2) {
- boolean var3 = false;
- if (var3 = this.save(var2)) {
- this.textState = "Method";
- this.currentOutput = null;
- this.changes = new boolean[MaxChanges];
- this.changes[MethodLoad] = true;
- boolean[] var4 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var4);
- this.currentMethodName = var1;
- this.changes = new boolean[MaxChanges];
- var4 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var4);
- }
-
- return var3;
- }
-
- boolean renameClass(String var1, String var2) {
- boolean var3 = true;
- String var4 = this.currentPackageName + "." + var2;
- boolean var5 = this.isMajorEqualMinor();
- this.fileLoader.saveClassDef(this.currentClassName, false, var1);
- if (var5) {
- var3 = this.fileLoader.renameClassFile(this.majorClassName(this.currentClassName), var4);
- }
-
- BrowserRegistry.register.changing(this, this.majorClassName(this.currentClassName));
- this.textState = "";
- this.currentClassName = null;
- this.currentClassSelector = -1;
- this.changes = new boolean[MaxChanges];
- this.changes[ClassLoad] = true;
- boolean[] var6 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var6);
- return var3;
- }
-
- private void updateClassList() {
- this.changes = new boolean[MaxChanges];
- this.changes[ClassList] = true;
- if (!this.saveOperation || !this.textState.equals("Method")) {
- this.changes[OutputLoad] = true;
- }
-
- boolean[] var1 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- }
-
- private void updateMethodList() {
- this.changes = new boolean[MaxChanges];
- this.changes[MethodList] = true;
- boolean[] var1 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- }
-
- private void updatePackageList() {
- this.changes = new boolean[MaxChanges];
- this.changes[PackageList] = true;
- boolean[] var1 = this.changes;
- ((Observable)this).setChanged();
- ((Observable)this).notifyObservers(var1);
- }
-
- public String[] getClasses() {
- int var1 = 0;
- Object var2 = null;
- String var3 = null;
- int var5 = 0;
- if (this.packageList == null) {
- this.classList = this.staticClassList;
- } else {
- String[] var12 = this.fileLoader.getClasses(this.GetRootDir(), this.packageList[this.currentPackageSelector]);
- MethodRecord[] var7 = this.fileLoader.partialClassList();
- String[] var8 = new String[var7.length];
- int var9 = 0;
- if (this.fileLoader.classFileName() == null) {
- this.currentClassSelector = -1;
- }
-
- if (this.currentClassSelector >= 0) {
- var3 = this.classNamePart(this.classList[this.currentClassSelector]);
- }
-
- if (var7 != null && var7.length > 1) {
- String var10 = this.classNamePart(this.fileLoader.classFileName());
-
- for(int var4 = 0; var4 < var7.length; ++var4) {
- if (var10.equals(var7[var4].className())) {
- --var1;
- var8[var9++] = this.currentPackageName() + "." + var10 + " " + var4 + "-" + var7[var4].className();
- } else {
- var8[var9] = this.currentPackageName() + "." + var10 + " " + var4 + "-";
- if (!var7[var4].isInner()) {
- var8[var9] = var8[var9] + "+";
- } else {
- for(int var20 = 0; var20 < var7[var4].inner(); ++var20) {
- var8[var9] = var8[var9] + " ";
- }
- }
-
- int var10003 = var9++;
- var8[var10003] = var8[var10003] + var7[var4].className();
- }
- }
-
- this.classList = new String[var12.length + var9 + var1];
- if (this.packageList != null) {
- int var13 = 0;
-
- int var6;
- for(var6 = 0; var13 < var12.length; ++var13) {
- if (!this.classNamePart(var12[var13]).equals(var10)) {
- this.classList[var6++] = var12[var13];
- }
- }
-
- for(var5 = 0; var5 < var9; ++var6) {
- this.classList[var6] = var8[var5];
- ++var5;
- }
- } else {
- int var14 = 0;
-
- int var21;
- for(var21 = 0; var14 < this.currentClassSelector; ++var14) {
- this.classList[var21++] = var12[var14];
- }
-
- for(var5 = 0; var5 < var9; ++var21) {
- this.classList[var21] = var8[var5];
- ++var5;
- }
-
- ++var14;
-
- while(var14 < var12.length) {
- this.classList[var21++] = var12[var14];
- ++var14;
- }
- }
- } else {
- this.classList = var12;
- }
- }
-
- if (this.packageList != null) {
- String[] var22 = this.classList;
- QSortAlgorithm.QuickSort(var22, 0, var22.length - 1);
- }
-
- if (var3 != null) {
- for(int var16 = 0; var16 < this.classList.length; ++var16) {
- if (var3.equals(this.classNamePart(this.classList[var16]))) {
- this.currentClassSelector = var16;
- }
- }
- }
-
- if (this.newClassName != null) {
- for(int var17 = 0; var17 < this.classList.length; ++var17) {
- if (this.currentClassName.equals(this.classList[var17])) {
- this.currentClassSelector = var17;
- }
- }
-
- this.newClassName = null;
- }
-
- this.classRef = new int[this.classList.length];
-
- try {
- int var18 = 0;
-
- for(var5 = 0; var18 < this.classList.length; ++var18) {
- if (this.matchClass(this.classList[var18])) {
- this.classRef[var5++] = var18;
- }
- }
- } catch (NullPointerException var11) {
- }
-
- String[] var23 = new String[var5];
-
- for(int var19 = 0; var19 < var5; ++var19) {
- var23[var19] = this.hierarchyClassNamePart(this.classList[this.classRef[var19]]);
- }
-
- this.currentMethodName = null;
- return var23;
- }
-
- public String[] getMethods() {
- MethodRecord var1 = null;
- if (this.currentMethodSelector >= 0) {
- var1 = this.listMethod[this.currentMethodSelector];
- }
-
- this.listMethod = this.fileLoader.getMethods(this.currentClassName);
- if (this.lineNumbers) {
- MethodRecord[] var2 = this.listMethod;
- QSortAlgorithm.QuickSortCardinal(var2, 0, var2.length - 1);
- } else {
- MethodRecord[] var6 = this.listMethod;
- QSortAlgorithm.QuickSort(var6, 0, var6.length - 1);
- }
-
- this.methodList = new String[this.listMethod.length];
- this.methodRef = new int[this.listMethod.length];
-
- try {
- int var7 = 0;
-
- for(int var3 = 0; var7 < this.listMethod.length; ++var7) {
- if (this.matchMethod(this.currentClassName, this.listMethod[var7])) {
- int var4 = MethodRecord.FindFirst(this.listMethod);
- this.methodRef[var3] = var7;
- if (this.lineNumbers) {
- this.methodList[var3] = this.listMethod[var7].methodName() + " (" + (var7 == var4 ? this.listMethod[var7].commentStartRow() : this.listMethod[MethodRecord.FindPrevious(this.listMethod, var7)].endRow() + 1) + ", " + this.listMethod[var7].endRow() + ")";
- } else {
- this.methodList[var3] = this.listMethod[var7].methodName();
- }
-
- ++var3;
- }
- }
- } catch (NullPointerException var5) {
- }
-
- if (this.newMethodCreated) {
- this.currentMethodSelector = MethodRecord.FindLast(this.listMethod);
- this.newMethodCreated = false;
- } else if (var1 != null) {
- for(int var8 = 0; var8 < this.listMethod.length; ++var8) {
- if (var1.startRow() == this.listMethod[var8].startRow()) {
- this.currentMethodSelector = var8;
- break;
- }
- }
-
- this.currentMethodName = null;
- }
-
- return this.methodList;
- }
-
- private String minorClassName(String var1) {
- int var2 = var1.lastIndexOf(45);
- if (var2 == -1) {
- return var1;
- } else {
- var1 = var1.substring(var2 + 1);
- var2 = var1.lastIndexOf(43);
- if (var2 >= 0) {
- return var1.substring(var2 + 1);
- } else {
- var2 = var1.lastIndexOf(32);
- return var2 >= 0 ? var1.substring(var2 + 1) : var1;
- }
- }
- }
-
- private String majorClassName(String var1) {
- int var2 = var1.indexOf(32);
- if (var2 >= 0) {
- return var1.substring(0, var2);
- } else {
- var2 = var1.indexOf(43);
- return var2 >= 0 ? var1.substring(0, var2) : var1;
- }
- }
-
- public String hierarchyClassNamePart(String var1) {
- String var2 = var1.substring(var1.lastIndexOf(46) + 1);
- int var3 = var2.lastIndexOf(45);
- return var3 == -1 ? var2 : var2.substring(var3 + 1);
- }
-
- boolean isSystemBrowser() {
- return this.isSystemBrowser;
- }
-
- boolean isClassBrowser() {
- return this.isClassBrowser;
- }
-
- boolean browseStack(String var1) {
- if (var1 != null && !var1.equals("")) {
- String[] var2 = this.makeClassListFromStack(var1);
- if (var2 != null && var2.length != 0) {
- String[] var3 = this.makeMethodListFromStack(var1);
- if (var3 != null && var3.length != 0) {
- new BrowserView(new BrowserModel(this.rootDir, var2, var3, true), BrowserOptions.messages.getString("StackTrace") + " ", false);
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
-
- BrowserModel(String var1, String[] var2, String[] var3, boolean var4) {
- this.state = new boolean[MaxState];
- this.staticClassList = var2;
- this.isClassBrowser = true;
- this.isMethodFilterBrowser = true;
- this.methodFilter = var3;
- this.init(var1);
- }
-
- String[] makeClassListFromStack(String var1) {
- String[] var2 = new String[256];
- int var3 = 0;
- Object var4 = null;
- BufferedReader var5 = new BufferedReader(new StringReader(var1));
-
- try {
- while((var10 = var5.readLine()) != null) {
- String var11 = var10.trim();
- int var6 = this.getStackPrefix(var11);
- if (var6 >= 0) {
- String var8 = var11.substring(var6, var11.indexOf(40));
- var8 = var8.substring(0, var8.lastIndexOf(46));
- if (var8.indexOf(46) == -1) {
- var8 = this.currentPackageName() + "." + var8;
- } else {
- var8 = "." + var8;
- }
-
- int var7;
- for(var7 = 0; var7 < var3 && !var8.equals(var2[var7]); ++var7) {
- }
-
- if (var7 == var3) {
- var2[var3++] = var8;
- }
- }
- }
- } catch (IOException var9) {
- }
-
- String[] var12 = new String[var3];
-
- for(int var13 = 0; var13 < var3; ++var13) {
- var12[var13] = var2[var13];
- }
-
- return var12;
- }
-
- String[] makeMethodListFromStack(String var1) {
- String[] var2 = new String[256];
- int var3 = 0;
- Object var4 = null;
- BufferedReader var5 = new BufferedReader(new StringReader(var1));
-
- try {
- while((var12 = var5.readLine()) != null) {
- String var13 = var12.trim();
- int var6 = this.getStackPrefix(var13);
- if (var6 >= 0) {
- String var8 = var13.substring(var6, var13.indexOf(40));
- var8 = var8.substring(0, var8.lastIndexOf(46));
- if (var8.indexOf(46) != -1) {
- var8 = var8.substring(var8.lastIndexOf(46) + 1);
- }
-
- String var9 = var13.substring(var13.indexOf(40));
- int var10 = var13.indexOf(58);
- if (var10 != -1) {
- var9 = var13.substring(var10 + 1);
- var9 = var9.substring(0, var9.indexOf(41));
- var8 = var8 + " " + var9;
-
- int var7;
- for(var7 = 0; var7 < var3 && !var8.equals(var2[var7]); ++var7) {
- }
-
- if (var7 == var3) {
- var2[var3++] = var8;
- }
- }
- }
- }
- } catch (IOException var11) {
- }
-
- String[] var14 = new String[var3];
-
- for(int var15 = 0; var15 < var3; ++var15) {
- var14[var15] = var2[var15];
- }
-
- return var14;
- }
-
- int getStackPrefix(String var1) {
- if (var1.startsWith("at ")) {
- return 3;
- } else {
- if (var1.startsWith("[")) {
- byte[] var2 = var1.getBytes();
-
- for(int var3 = 1; var3 < var2.length; ++var3) {
- Character.isDigit((char)var2[var3]);
- if (var2[var3] == 32) {
- return var3 + 1;
- }
- }
- }
-
- return -1;
- }
- }
-
- public String toString() {
- return "BrowserModel [ lineNumbers=" + this.lineNumbers + " currentMethodSelector=" + this.currentMethodSelector + " currentClassSelector=" + this.currentClassSelector + " currentPackageSelector=" + this.currentPackageSelector + " oldIndex=" + this.oldIndex + " methodRef=" + this.methodRef + " classRef=" + this.classRef + " lastModified=" + this.lastModified + " textState=" + this.textState + " currentPackageName=" + this.currentPackageName + " currentClassName=" + this.currentClassName + " currentMethodName=" + this.currentMethodName + " currentOutput=" + this.currentOutput + " rootDir=" + this.rootDir + " newMethodCreated=" + this.newMethodCreated + " newClassName=" + this.newClassName + " isSystemBrowser=" + this.isSystemBrowser + " isClassBrowser=" + this.isClassBrowser + "]";
- }
-
- String majorClassName() {
- int var1 = this.currentClassName.indexOf(32);
- if (var1 >= 0) {
- return this.currentClassName.substring(0, var1);
- } else {
- var1 = this.currentClassName.indexOf(43);
- return var1 >= 0 ? this.currentClassName.substring(0, var1) : this.currentClassName;
- }
- }
-
- public String majorClassNamePart() {
- return this.majorClassName().substring(this.majorClassName().lastIndexOf(46) + 1);
- }
-
- boolean isMajorEqualMinor() {
- return this.majorClassNamePart().equals(this.minorClassName(this.classNamePart()));
- }
-
- boolean isMethodFilterBrowser() {
- return this.isMethodFilterBrowser;
- }
-
- void discardingOutput() {
- this.creatingNewMethod = false;
- }
- }
-