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

  1. package com.sfs.iavazip;
  2.  
  3. import com.sfs.awt.Picture;
  4. import com.sfs.awt.TexturePanel;
  5. import com.sfs.awt.treeview.Folder;
  6. import com.sfs.awt.treeview.ItemSorter;
  7. import com.sfs.awt.treeview.TreeView;
  8. import com.sfs.awt.treeview.TreeViewEventObject;
  9. import com.sfs.awt.treeview.TreeViewException;
  10. import com.sfs.awt.treeview.TreeViewListener;
  11. import com.sfs.debug.Debug;
  12. import com.sfs.util.Reg;
  13. import java.awt.AWTEvent;
  14. import java.awt.BorderLayout;
  15. import java.awt.Button;
  16. import java.awt.Color;
  17. import java.awt.Component;
  18. import java.awt.Container;
  19. import java.awt.Dialog;
  20. import java.awt.Dimension;
  21. import java.awt.FileDialog;
  22. import java.awt.FlowLayout;
  23. import java.awt.Frame;
  24. import java.awt.Image;
  25. import java.awt.Label;
  26. import java.awt.Rectangle;
  27. import java.awt.Toolkit;
  28. import java.awt.Window;
  29. import java.awt.event.ActionEvent;
  30. import java.awt.event.ActionListener;
  31. import java.awt.event.MouseEvent;
  32. import java.awt.event.WindowEvent;
  33. import java.io.File;
  34. import java.io.FileInputStream;
  35. import java.io.FileOutputStream;
  36. import java.io.FilenameFilter;
  37. import java.io.IOException;
  38. import java.util.Enumeration;
  39. import java.util.Properties;
  40. import java.util.StringTokenizer;
  41. import java.util.zip.ZipEntry;
  42. import java.util.zip.ZipFile;
  43.  
  44. public class iavaZip extends Frame implements TreeViewListener, ActionListener, FilenameFilter {
  45.    boolean dialogOpen;
  46.    Properties assigments = new Properties();
  47.    Properties properties = new Properties();
  48.    Image backgroundTexture;
  49.    Image progressAnimation;
  50.    Image Logo;
  51.    // $FF: renamed from: tw com.sfs.awt.treeview.TreeView
  52.    TreeView field_0;
  53.    ZipFile zipFile;
  54.    String zipFileName;
  55.    ViewerPanel viewerpanel;
  56.    Label Status;
  57.    Button bImport;
  58.    Button bExport;
  59.    Button bDelete;
  60.    boolean ZipIsEmpty;
  61.    TexturePanel LogoPanel;
  62.  
  63.    public iavaZip(String var1) {
  64.       super("iavaZip");
  65.       ((Container)this).setLayout(new BorderLayout());
  66.  
  67.       try {
  68.          this.backgroundTexture = ((Window)this).getToolkit().getImage(this.getClass().getResource("texture.jpg"));
  69.       } catch (InternalError var14) {
  70.          System.out.println("No display available for iavaZip.\nDescription: This error occures typically under unix if no display\n(no started X) is available.\nPlease start X and try it again.\n\nSFS Software Gbr");
  71.          super.dispose();
  72.          System.exit(0);
  73.       }
  74.  
  75.       ((Component)this).prepareImage(this.backgroundTexture, this);
  76.       this.Logo = ((Window)this).getToolkit().getImage(this.getClass().getResource("logo.gif"));
  77.       ((Component)this).prepareImage(this.Logo, this);
  78.       this.progressAnimation = ((Window)this).getToolkit().getImage(this.getClass().getResource("progress.gif"));
  79.       ((Component)this).prepareImage(this.progressAnimation, this);
  80.       this.LogoPanel = new TexturePanel(this, this.backgroundTexture);
  81.       this.LogoPanel.setLayout(new BorderLayout());
  82.       this.LogoPanel.add("Center", new Picture(this, this.Logo, false));
  83.       TexturePanel var2 = new TexturePanel(this, this.backgroundTexture);
  84.       ((Container)var2).setLayout(new FlowLayout(0));
  85.       Button var3;
  86.       ((Container)var2).add(var3 = new Button("New"));
  87.       var3.addActionListener(this);
  88.       ((Container)var2).add(var3 = new Button("Open"));
  89.       var3.addActionListener(this);
  90.       ((Container)var2).add(this.bImport = new Button("Import"));
  91.       this.bImport.addActionListener(this);
  92.       if (var1 == null) {
  93.          this.bImport.setEnabled(false);
  94.       }
  95.  
  96.       ((Container)var2).add(this.bExport = new Button("Extract"));
  97.       this.bExport.addActionListener(this);
  98.       if (var1 == null) {
  99.          this.bExport.setEnabled(false);
  100.       }
  101.  
  102.       ((Container)var2).add(this.bDelete = new Button("Delete"));
  103.       this.bDelete.addActionListener(this);
  104.       if (var1 == null) {
  105.          this.bDelete.setEnabled(false);
  106.       }
  107.  
  108.       ((Container)var2).add(var3 = new Button("About iavaZip"));
  109.       var3.addActionListener(this);
  110.       ((Container)var2).add(var3 = new Button("Quit"));
  111.       var3.addActionListener(this);
  112.       ((Container)var2).add(var3 = new Button("Help"));
  113.       var3.addActionListener(this);
  114.       ((Container)this).add("North", var2);
  115.       ((Container)this).add(this.viewerpanel = new ViewerPanel(this));
  116.       ((Container)this).add(this.LogoPanel);
  117.       this.viewerpanel.setVisible(false);
  118.       this.Status = new Label("");
  119.       this.Status.setBackground(Color.gray);
  120.       ((Container)this).add("South", this.Status);
  121.       ((Component)this).setBackground(Color.lightGray);
  122.  
  123.       try {
  124.          this.showStatus("loading assignments ...");
  125.          this.assigments.load(this.getClass().getResourceAsStream("iavaZip.assignments"));
  126.          this.showStatus("ready");
  127.       } catch (IOException var13) {
  128.          this.showStatus("Error reading property file iavaZip.assignments: " + ((Throwable)var13).getMessage());
  129.       }
  130.  
  131.       boolean var4 = false;
  132.  
  133.       try {
  134.          this.showStatus("loading properties ...");
  135.          this.properties.load(new FileInputStream(System.getProperty("user.home") + File.separator + "iavaZip.properties"));
  136.          this.showStatus("ready");
  137.       } catch (IOException var12) {
  138.          this.showStatus("iavaZip.properties not found. Create new property file.");
  139.          var4 = true;
  140.       }
  141.  
  142.       String var5;
  143.       if ((var5 = this.properties.getProperty("main.window")) == null) {
  144.          ((Window)this).getToolkit();
  145.          Dimension var6 = Toolkit.getDefaultToolkit().getScreenSize();
  146.          ((Component)this).setBounds((var6.width - 640) / 2, (var6.height - 480) / 2, 640, 480);
  147.       } else {
  148.          StringTokenizer var20 = new StringTokenizer(var5, ",");
  149.          int var7 = Integer.parseInt(var20.nextToken());
  150.          int var8 = Integer.parseInt(var20.nextToken());
  151.          int var9 = Integer.parseInt(var20.nextToken());
  152.          int var10 = Integer.parseInt(var20.nextToken());
  153.          ((Component)this).setBounds(var7, var8, var9, var10);
  154.       }
  155.  
  156.       ((Frame)this).setResizable(true);
  157.       if (var1 != null) {
  158.          this.Open(var1);
  159.       }
  160.  
  161.       if (!Reg.isSerialRegcode(this.properties.getProperty("user.Code", "-1"))) {
  162.          EvaluationDialog var21 = new EvaluationDialog(this);
  163.          if (!var21.doModal()) {
  164.             this.dispose();
  165.             System.exit(0);
  166.          }
  167.       }
  168.  
  169.       ((Component)this).enableEvents(96L);
  170.    }
  171.  
  172.    protected void processWindowEvent(WindowEvent var1) {
  173.       switch (((AWTEvent)var1).getID()) {
  174.          case 201:
  175.             this.cleanup();
  176.             this.dispose();
  177.             return;
  178.          default:
  179.       }
  180.    }
  181.  
  182.    public boolean accept(File var1, String var2) {
  183.       File var3 = new File(var1, var2);
  184.       if (var3.isDirectory()) {
  185.          return true;
  186.       } else {
  187.          int var4 = var2.lastIndexOf(".");
  188.          if (var4 != -1) {
  189.             String var5 = var2.substring(var4 + 1, var2.length());
  190.             var5.toLowerCase();
  191.             if (var5.equals("zip")) {
  192.                return true;
  193.             }
  194.          }
  195.  
  196.          return false;
  197.       }
  198.    }
  199.  
  200.    protected void cleanup() {
  201.       if (this.field_0 != null) {
  202.          this.field_0.removeTreeViewListener(this);
  203.          ((Container)this).remove(this.field_0);
  204.          this.field_0 = null;
  205.  
  206.          try {
  207.             if (this.zipFile != null) {
  208.                this.zipFile.close();
  209.             }
  210.          } catch (IOException var1) {
  211.             this.showStatus("IOException occured while closing " + this.zipFile.getName());
  212.          }
  213.  
  214.          this.zipFile = null;
  215.          System.runFinalization();
  216.          System.gc();
  217.       }
  218.  
  219.       this.viewerpanel.setVisible(false);
  220.    }
  221.  
  222.    public void handleTreeViewEvent(TreeViewEventObject var1) {
  223.       if ((var1.getAction() == 3 || var1.getAction() == 2) && var1.getClickCount() == 2 && !(var1.getItem() instanceof Folder)) {
  224.          if (this.LogoPanel != null) {
  225.             ((Container)this).remove(this.LogoPanel);
  226.             this.LogoPanel = null;
  227.             ((Container)this).add(this.viewerpanel);
  228.          }
  229.  
  230.          this.viewerpanel.viewZipEntry((ZipEntry)var1.getItem().getContent());
  231.       }
  232.  
  233.    }
  234.  
  235.    public void actionPerformed(ActionEvent var1) {
  236.       String var2 = var1.getActionCommand();
  237.       if (!this.dialogOpen) {
  238.          if (var2.equals("New")) {
  239.             this.dialogOpen = true;
  240.             FileDialog var3 = new FileDialog(this, "New Zip File", 1);
  241.             var3.setFilenameFilter(this);
  242.             ((Window)var3).toFront();
  243.             ((Dialog)var3).show();
  244.             String var4 = var3.getFile();
  245.             if (var4 != null) {
  246.                String var5 = var3.getDirectory();
  247.                Debug.Info("new: " + var5 + var4);
  248.  
  249.                try {
  250.                   new FileOutputStream(var5 + var4);
  251.                } catch (IOException var8) {
  252.                   Debug.Info("IOException occured: " + ((Throwable)var8).getMessage());
  253.                   ((Throwable)var8).printStackTrace();
  254.                   this.showStatus("IOException occured: " + ((Throwable)var8).getMessage());
  255.                   return;
  256.                }
  257.  
  258.                this.Open(var5 + var4);
  259.             }
  260.          } else if (var2.equals("Open")) {
  261.             this.dialogOpen = true;
  262.             FileDialog var9 = new FileDialog(this, "Load Zip File", 0);
  263.             var9.setFilenameFilter(this);
  264.             ((Window)var9).toFront();
  265.             ((Dialog)var9).show();
  266.             String var15 = var9.getFile();
  267.             if (var15 != null) {
  268.                String var16 = var9.getDirectory();
  269.                this.Open(var16 + var15);
  270.             }
  271.          } else if (var2.equals("Quit")) {
  272.             this.dialogOpen = true;
  273.             this.dispose();
  274.          } else if (var2.equals("Extract")) {
  275.             this.dialogOpen = true;
  276.             ExtractDialog var10 = new ExtractDialog(this);
  277.             var10.doModal();
  278.          } else if (var2.equals("Help")) {
  279.             this.dialogOpen = true;
  280.             InfoDialog var11 = new InfoDialog(this, "help/index.html");
  281.             var11.doModal();
  282.             ((Window)this).toFront();
  283.          } else if (var2.equals("Import")) {
  284.             this.dialogOpen = true;
  285.             ImportDialog var12 = new ImportDialog(this);
  286.             var12.doModal();
  287.          } else if (var2.equals("Delete")) {
  288.             this.dialogOpen = true;
  289.             DeleteDialog var13 = new DeleteDialog(this);
  290.             var13.doModal();
  291.          } else if (var2.equals("About iavaZip")) {
  292.             this.dialogOpen = true;
  293.             About var14 = new About(this);
  294.             var14.doModal();
  295.          }
  296.  
  297.          ((Window)this).toFront();
  298.          this.dialogOpen = false;
  299.       }
  300.    }
  301.  
  302.    public void setWaitCursor() {
  303.       ((Frame)this).setCursor(3);
  304.    }
  305.  
  306.    public static void main(String[] var0) {
  307.       System.runFinalizersOnExit(true);
  308.       iavaZip var1 = new iavaZip(var0.length > 0 ? var0[0] : null);
  309.       ((Window)var1).show();
  310.    }
  311.  
  312.    protected void processMouseMotionEvent(MouseEvent var1) {
  313.    }
  314.  
  315.    void insertZipEntry(ZipEntry var1) {
  316.       if (this.field_0 != null) {
  317.          Object var2 = this.field_0.Root;
  318.          StringTokenizer var3 = new StringTokenizer(var1.getName(), "/");
  319.  
  320.          while(var3.hasMoreTokens()) {
  321.             String var4 = var3.nextToken();
  322.             if (var3.hasMoreTokens()) {
  323.                Folder var5 = (Folder)((Folder)var2).lookup(var4);
  324.                if (var5 == null) {
  325.                   try {
  326.                      var2 = ((Folder)var2).addFolder(var4, (Object)null);
  327.                   } catch (TreeViewException var6) {
  328.                   }
  329.                } else {
  330.                   var2 = var5;
  331.                }
  332.             } else {
  333.                try {
  334.                   if (var1.isDirectory()) {
  335.                      ((Folder)var2).addFolder(var4, var1);
  336.                   } else {
  337.                      ((Folder)var2).addItem(var4, var1);
  338.                   }
  339.                } catch (TreeViewException var7) {
  340.                }
  341.             }
  342.          }
  343.  
  344.       }
  345.    }
  346.  
  347.    public void showStatus(String var1) {
  348.       this.Status.setText(var1);
  349.    }
  350.  
  351.    public void dispose() {
  352.       try {
  353.          this.cleanup();
  354.          Rectangle var1 = ((Component)this).getBounds();
  355.          StringBuffer var2 = new StringBuffer();
  356.          var2.append(var1.x).append(',').append(var1.y).append(',').append(var1.width).append(',').append(var1.height);
  357.          this.properties.put("main.window", var2.toString());
  358.          FileOutputStream var3 = new FileOutputStream(System.getProperty("user.home") + File.separator + "iavaZip.properties");
  359.          this.properties.save(var3, "iavaZip.properties" + System.getProperty("line.separator") + "#DO NOT MAKE CHANGES BY HAND. THIS FILE IS MACHINE GENERATED !");
  360.          var3.close();
  361.       } catch (IOException var4) {
  362.          Debug.Info("Unable to change settings.");
  363.       }
  364.  
  365.       super.dispose();
  366.       System.exit(0);
  367.    }
  368.  
  369.    protected synchronized void Open(String var1) {
  370.       this.cleanup();
  371.       String var2 = var1.substring(var1.lastIndexOf(File.separatorChar) + 1, var1.length());
  372.       this.field_0 = new TreeView(this, var2, (Object)null);
  373.       this.field_0.setSorter(new ItemSorter());
  374.       this.field_0.setBackground(Color.lightGray);
  375.       ((Container)this).add("West", this.field_0);
  376.       this.field_0.addTreeViewListener(this);
  377.       this.field_0.setSize(200, 480);
  378.       this.bImport.setEnabled(true);
  379.       ((Container)this).doLayout();
  380.       if (this.LogoPanel != null) {
  381.          this.LogoPanel.doLayout();
  382.       }
  383.  
  384.       this.zipFileName = var1;
  385.       File var3 = new File(var1);
  386.       if (var3.length() == 0L) {
  387.          this.ZipIsEmpty = true;
  388.          this.bExport.setEnabled(false);
  389.          this.bDelete.setEnabled(false);
  390.       } else {
  391.          try {
  392.             this.showStatus("loading zipFile ...");
  393.             this.zipFile = new ZipFile(var1);
  394.             Enumeration var4 = this.zipFile.entries();
  395.  
  396.             while(var4.hasMoreElements()) {
  397.                ZipEntry var5 = (ZipEntry)var4.nextElement();
  398.                this.insertZipEntry(var5);
  399.             }
  400.          } catch (IOException var7) {
  401.             this.cleanup();
  402.             ((Container)this).doLayout();
  403.             this.showStatus("Error reading file \"" + var1 + "\": " + ((Throwable)var7).getMessage());
  404.             return;
  405.          }
  406.  
  407.          this.ZipIsEmpty = false;
  408.          this.bExport.setEnabled(true);
  409.          this.bDelete.setEnabled(true);
  410.       }
  411.  
  412.       ((Frame)this).setTitle("iavaZip - " + var1);
  413.       this.showStatus("ready");
  414.       this.field_0.repaint();
  415.    }
  416.  
  417.    public void setDefaultCursor() {
  418.       ((Frame)this).setCursor(0);
  419.    }
  420. }
  421.