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

  1. package com.sfs.iavazip.viewer;
  2.  
  3. import com.sfs.debug.Debug;
  4. import java.awt.BorderLayout;
  5. import java.awt.Container;
  6. import java.awt.Font;
  7. import java.awt.Frame;
  8. import java.awt.Label;
  9. import java.awt.TextArea;
  10. import java.io.FileInputStream;
  11. import java.io.FileNotFoundException;
  12. import java.io.IOException;
  13.  
  14. public class hexView extends Viewer implements Runnable {
  15.    Frame parent;
  16.    Thread thread;
  17.    FileInputStream fis;
  18.    TextArea content;
  19.  
  20.    public void setArgs(Frame var1, String var2) {
  21.       this.thread = new Thread(this);
  22.  
  23.       try {
  24.          this.fis = new FileInputStream(var2);
  25.          ((Container)this).add("Center", this.content = new TextArea());
  26.          this.content.setFont(new Font("DialogInput", 12, 0));
  27.          this.thread.start();
  28.       } catch (FileNotFoundException var3) {
  29.          this.flush();
  30.          ((Container)this).add("Center", new Label("file not found", 1));
  31.       }
  32.    }
  33.  
  34.    String parseBytes(int var1, byte[] var2, int var3) {
  35.       StringBuffer var4 = new StringBuffer(80);
  36.       var4.append(var1);
  37.       int var5 = 5 - var4.length();
  38.  
  39.       for(int var6 = 0; var6 < var5; ++var6) {
  40.          var4.append(" ");
  41.       }
  42.  
  43.       for(int var10 = 0; var10 < var3; ++var10) {
  44.          int var7 = var2[var10];
  45.          if (var7 < 0) {
  46.             var7 = 127 + -var7;
  47.          }
  48.  
  49.          String var8 = Integer.toHexString(var7);
  50.          var8 = var8.toUpperCase();
  51.          if (var8.length() < 2) {
  52.             var4.append("0");
  53.          }
  54.  
  55.          var4.append(var8).append(" ");
  56.          if (var10 == 7) {
  57.             var4.append("  ");
  58.          }
  59.       }
  60.  
  61.       var5 = 55 - var4.length();
  62.  
  63.       for(int var11 = 0; var11 < var5; ++var11) {
  64.          var4.append(" ");
  65.       }
  66.  
  67.       for(int var12 = 0; var12 < var3; ++var12) {
  68.          char var13 = (char)var2[var12];
  69.          if (Character.isLetterOrDigit(var13)) {
  70.             var4.append(var13);
  71.          } else {
  72.             var4.append(".");
  73.          }
  74.       }
  75.  
  76.       var4.append("\n");
  77.       return var4.toString();
  78.    }
  79.  
  80.    public void flush() {
  81.       this.thread.stop();
  82.       if (this.fis != null) {
  83.          try {
  84.             this.fis.close();
  85.             return;
  86.          } catch (IOException var3) {
  87.             Debug.Info("hexView.flush() failed during " + ((Throwable)var3).getMessage());
  88.          }
  89.       }
  90.  
  91.    }
  92.  
  93.    public void run() {
  94.       byte[] var1 = new byte[16];
  95.       int var3 = 0;
  96.  
  97.       try {
  98.          int var2;
  99.          while((var2 = this.fis.read(var1)) != -1) {
  100.             this.content.append(this.parseBytes(var3++, var1, var2));
  101.  
  102.             try {
  103.                Thread.sleep(10L);
  104.             } catch (InterruptedException var4) {
  105.             }
  106.          }
  107.  
  108.          this.thread.stop();
  109.       } catch (IOException var5) {
  110.       }
  111.    }
  112.  
  113.    public hexView() {
  114.       ((Container)this).setLayout(new BorderLayout());
  115.    }
  116. }
  117.