home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / classBrowser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  3.8 KB  |  133 lines

  1. package com.sfs.hardcore;
  2.  
  3. import com.sfs.awt.treeview.Folder;
  4. import com.sfs.awt.treeview.TreeView;
  5. import com.sfs.awt.treeview.TreeViewException;
  6. import com.sfs.debug.Debug;
  7. import java.awt.BorderLayout;
  8. import java.awt.Container;
  9. import java.awt.Frame;
  10. import java.awt.Label;
  11. import java.awt.Panel;
  12. import java.io.ByteArrayInputStream;
  13. import java.io.DataInputStream;
  14. import java.io.FileInputStream;
  15. import java.io.IOException;
  16.  
  17. public class classBrowser extends Panel {
  18.    FileInputStream fis;
  19.  
  20.    public classBrowser(Frame var1, String var2) {
  21.       ((Container)this).setLayout(new BorderLayout());
  22.       ClassFile var3 = new ClassFile();
  23.  
  24.       try {
  25.          this.fis = new FileInputStream(var2);
  26.       } catch (IOException var16) {
  27.          this.fis = null;
  28.          ((Container)this).add("Center", new Label("Could'nt open classFile.", 1));
  29.          return;
  30.       }
  31.  
  32.       try {
  33.          if (!var3.read(this.fis)) {
  34.             throw new Exception();
  35.          }
  36.       } catch (Exception var18) {
  37.          ((Container)this).add("Center", new Label("Could'nt read classFile.", 1));
  38.          return;
  39.       }
  40.  
  41.       try {
  42.          String var4 = var3.printClassName(var3.thisClass.arg1.strValue);
  43.          String var5 = var3.printClassName(var3.superClass.arg1.strValue);
  44.          Object var6 = null;
  45.          String var7 = ClassFile.accessString(var3.accessFlags) + "class " + var4 + " extends " + var5;
  46.          TreeView var8 = new TreeView(var1, var7, (Object)null);
  47.          var8.setAllowSelection(false);
  48.          ((Container)this).add("Center", var8);
  49.          if (!var3.isValidClass) {
  50.             var8.addItem("This is not a valid class.", (Object)null);
  51.          }
  52.  
  53.          if (var3.attributes != null) {
  54.             Folder var9 = var8.addFolder("Optional attributes", (Object)null);
  55.  
  56.             for(int var12 = 0; var12 < var3.attributes.length; ++var12) {
  57.                String var13 = var3.attributes[var12].name.strValue;
  58.                DataInputStream var10 = new DataInputStream(new ByteArrayInputStream(var3.attributes[var12].data));
  59.                if (var13.compareTo("SourceFile") == 0) {
  60.                   ConstantPoolInfo var11 = null;
  61.  
  62.                   try {
  63.                      var11 = var3.constantPool[var10.readShort()];
  64.                   } catch (IOException var15) {
  65.                   }
  66.  
  67.                   var13 = var13 + ": " + var11;
  68.                } else {
  69.                   var13 = "Type " + var13;
  70.                }
  71.  
  72.                var9.addItem(var13, (Object)null);
  73.             }
  74.          }
  75.  
  76.          Folder var19 = null;
  77.  
  78.          for(int var23 = 1; var23 < var3.constantPool.length; ++var23) {
  79.             if (var3.constantPool[var23] != null && var3.constantPool[var23] != var3.thisClass && var3.constantPool[var23] != var3.superClass && var3.constantPool[var23].type == 7) {
  80.                String var27 = var3.constantPool[var23].arg1.strValue;
  81.                if (var27.charAt(0) != '[') {
  82.                   var27 = var3.printClassName(var3.constantPool[var23].arg1.strValue);
  83.                   if (var6 == null || !var27.startsWith((String)var6)) {
  84.                      if (var19 == null) {
  85.                         var19 = var8.addFolder("imported classes", (Object)null);
  86.                      }
  87.  
  88.                      var19.addItem(var3.printClassName(var27), (Object)null);
  89.                   }
  90.                }
  91.             }
  92.          }
  93.  
  94.          if (var3.interfaces != null) {
  95.             var19 = var8.addFolder("implemented Interfaces", (Object)null);
  96.  
  97.             for(int var24 = 0; var24 < var3.interfaces.length; ++var24) {
  98.                var19.addItem(var3.interfaces[var24].arg1.strValue.replace('/', '.'), (Object)null);
  99.             }
  100.          }
  101.  
  102.          if (var3.fields != null) {
  103.             var19 = var8.addFolder("Instance variables", (Object)null);
  104.  
  105.             for(int var25 = 0; var25 < var3.fields.length; ++var25) {
  106.                var19.addItem(var3.fields[var25].toString(var3.constantPool), (Object)null);
  107.             }
  108.          }
  109.  
  110.          if (var3.methods != null) {
  111.             var19 = var8.addFolder("Methods", (Object)null);
  112.  
  113.             for(int var26 = 0; var26 < var3.methods.length; ++var26) {
  114.                var19.addItem(var3.methods[var26].toString(var3.getClassName()), (Object)null);
  115.             }
  116.  
  117.             return;
  118.          }
  119.       } catch (TreeViewException var17) {
  120.          Debug.Info(var17.getMessage());
  121.       }
  122.  
  123.    }
  124.  
  125.    public void flush() {
  126.       try {
  127.          this.fis.close();
  128.       } catch (IOException var3) {
  129.          ((Throwable)var3).printStackTrace(System.out);
  130.       }
  131.    }
  132. }
  133.