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

  1. package com.sfs.iavazip;
  2.  
  3. import com.sfs.awt.TexturePanel;
  4. import com.sfs.awt.treeview.Folder;
  5. import com.sfs.awt.treeview.Item;
  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.os.OS;
  12. import java.awt.AWTEvent;
  13. import java.awt.BorderLayout;
  14. import java.awt.Button;
  15. import java.awt.Checkbox;
  16. import java.awt.CheckboxGroup;
  17. import java.awt.Color;
  18. import java.awt.Component;
  19. import java.awt.Container;
  20. import java.awt.Dialog;
  21. import java.awt.FlowLayout;
  22. import java.awt.Font;
  23. import java.awt.GridLayout;
  24. import java.awt.Label;
  25. import java.awt.Panel;
  26. import java.awt.Rectangle;
  27. import java.awt.TextField;
  28. import java.awt.Window;
  29. import java.awt.event.ActionEvent;
  30. import java.awt.event.ActionListener;
  31. import java.awt.event.WindowEvent;
  32. import java.io.File;
  33. import java.io.FilenameFilter;
  34. import java.util.Vector;
  35.  
  36. public class ExtractDialog extends Dialog implements FilenameFilter, TreeViewListener, ActionListener {
  37.    // $FF: renamed from: tw com.sfs.awt.treeview.TreeView
  38.    TreeView field_0;
  39.    CheckboxGroup cbg;
  40.    Checkbox overWrite;
  41.    Checkbox useFoldernames;
  42.    TextField Files;
  43.    TextField destinationFolder;
  44.    public iavaZip mainApp;
  45.    boolean busy = true;
  46.    boolean retCode;
  47.    Panel main;
  48.    Panel lastPanel;
  49.    confirmNewPath confirm;
  50.    mkdirFailed failed;
  51.  
  52.    ExtractDialog(iavaZip var1) {
  53.       super(var1, "Extract", true);
  54.       this.mainApp = var1;
  55.       ((Container)this).setLayout(new BorderLayout());
  56.       this.main = new Panel();
  57.       this.main.setLayout(new BorderLayout());
  58.       Container var2 = new 1(this);
  59.       var2.setLayout(new GridLayout(2, 1));
  60.       Label var3;
  61.       var2.add(var3 = new Label("Destination folder:"));
  62.       Font var4 = ((Component)this).getFont();
  63.       Font var17;
  64.       ((Component)var3).setFont(var17 = new Font(var4.getName(), 1, var4.getSize()));
  65.       var2.add(this.destinationFolder = new TextField());
  66.       this.main.add("North", var2);
  67.       this.confirm = new confirmNewPath(this, var17);
  68.       this.failed = new mkdirFailed(this, var17);
  69.       this.field_0 = new TreeView(var1, System.getProperty("file.separator"), (Object)null);
  70.       this.field_0.setSorter(new ItemSorter());
  71.       this.field_0.setSize(200, 150);
  72.       this.field_0.setAllowSelection(false);
  73.       this.field_0.setBackground(Color.lightGray);
  74.       this.main.add("Center", this.field_0);
  75.       this.cbg = new CheckboxGroup();
  76.       var2 = new 2(this);
  77.       var2.setLayout(new BorderLayout());
  78.       Panel var5 = new Panel();
  79.       ((Container)var5).setLayout(new GridLayout(8, 1));
  80.       ((Container)var5).add(var3 = new Label("Files"));
  81.       ((Component)var3).setFont(var17);
  82.       ((Container)var5).add(new Checkbox("selected File(s)", this.cbg, true));
  83.       Checkbox var6;
  84.       ((Container)var5).add(var6 = new Checkbox("all Files", this.cbg, false));
  85.       ((Container)var5).add(new Label("from selected folders:"));
  86.       String var7 = var1.properties.getProperty("Extract.allFiles");
  87.       if (var7 != null && Boolean.valueOf(var7)) {
  88.          this.cbg.setSelectedCheckbox(var6);
  89.       }
  90.  
  91.       ((Container)var5).add(this.Files = new TextField());
  92.       var7 = var1.properties.getProperty("Extract.Files");
  93.       this.Files.setText(var7 != null ? var7 : "*");
  94.       ((Container)var5).add(var3 = new Label("Options"));
  95.       ((Component)var3).setFont(var17);
  96.       ((Container)var5).add(this.overWrite = new Checkbox("Overwrite existing files", (CheckboxGroup)null, false));
  97.       var7 = var1.properties.getProperty("Extract.overWrite");
  98.       if (var7 != null && Boolean.valueOf(var7)) {
  99.          this.overWrite.setState(true);
  100.       }
  101.  
  102.       ((Container)var5).add(this.useFoldernames = new Checkbox("Use folder names", (CheckboxGroup)null, true));
  103.       var7 = var1.properties.getProperty("Extract.useFoldernames");
  104.       if (var7 != null && !Boolean.valueOf(var7)) {
  105.          this.useFoldernames.setState(false);
  106.       }
  107.  
  108.       var2.add("North", var5);
  109.       this.main.add("West", var2);
  110.       TexturePanel var8 = new TexturePanel(this, var1.backgroundTexture);
  111.       ((Container)var8).setLayout(new FlowLayout());
  112.       Button var9 = new Button("Extract");
  113.       ((Container)var8).add(var9);
  114.       var9.addActionListener(this);
  115.       var9 = new Button("Cancel");
  116.       ((Container)var8).add(var9);
  117.       var9.addActionListener(this);
  118.       var9 = new Button("Help");
  119.       ((Container)var8).add(var9);
  120.       var9.addActionListener(this);
  121.       this.main.add("South", var8);
  122.       ((Container)this).add("Center", this.lastPanel = this.main);
  123.  
  124.       try {
  125.          if (OS.hasDrives()) {
  126.             Vector var10 = OS.getDrives();
  127.  
  128.             for(int var11 = 0; var11 < var10.size(); ++var11) {
  129.                var7 = (String)var10.elementAt(var11);
  130.                Folder var12 = this.field_0.addFolder(var7, var7);
  131.                var12.addItem("temp", (Object)null);
  132.             }
  133.          } else {
  134.             this.field_0.Root.setName(System.getProperty("file.separator"));
  135.             this.fillFolder(this.field_0.Root, System.getProperty("file.separator"));
  136.          }
  137.       } catch (TreeViewException var13) {
  138.       }
  139.  
  140.       this.field_0.addTreeViewListener(this);
  141.       ((Dialog)this).setResizable(true);
  142.       ((Component)this).enableEvents(64L);
  143.    }
  144.  
  145.    protected void processWindowEvent(WindowEvent var1) {
  146.       switch (((AWTEvent)var1).getID()) {
  147.          case 201:
  148.             ((Window)this).dispose();
  149.             this.busy = false;
  150.             return;
  151.          default:
  152.       }
  153.    }
  154.  
  155.    protected void fillFolder(Folder var1, String var2) throws TreeViewException {
  156.       File var3 = new File(var2);
  157.       if (!var3.canRead()) {
  158.          var1.setOpen(false);
  159.          ((Item)var1).setDisabled(true);
  160.          var1.addItem("temp", (Object)null);
  161.          ((Item)var1).setContent(var2);
  162.       } else {
  163.          String[] var4 = var3.list(this);
  164.  
  165.          for(int var5 = 0; var5 < var4.length; ++var5) {
  166.             Folder var6 = var1.addFolder(var4[var5], var2 + System.getProperty("file.separator") + var4[var5]);
  167.             var6.addItem("temp", (Object)null);
  168.          }
  169.  
  170.          ((Item)var1).setDisabled(false);
  171.       }
  172.    }
  173.  
  174.    public boolean accept(File var1, String var2) {
  175.       File var3 = new File(var1, var2);
  176.       return var3.isDirectory();
  177.    }
  178.  
  179.    public void handleTreeViewEvent(TreeViewEventObject var1) {
  180.       Folder var2 = (Folder)var1.getItem();
  181.       if (((Item)var2).getContent() != null) {
  182.          String var3 = (String)((Item)var2).getContent();
  183.          ((Item)var2).setContent((Object)null);
  184.  
  185.          try {
  186.             var2.removeItem("temp");
  187.             this.fillFolder(var2, var3);
  188.          } catch (TreeViewException var4) {
  189.          }
  190.       }
  191.  
  192.       String var5 = var1.getItem().getAbsoluteName();
  193.       if (OS.hasDrives()) {
  194.          if (var5.length() > 2) {
  195.             var5 = var5.substring(2);
  196.          } else {
  197.             var5 = var5.substring(1);
  198.          }
  199.       } else {
  200.          var5 = var5.substring(1);
  201.          var5 = var5.replace('\\', File.separatorChar);
  202.       }
  203.  
  204.       if (var1.getItem().isDisabled()) {
  205.          var5 = "";
  206.       }
  207.  
  208.       this.destinationFolder.setText(var5);
  209.    }
  210.  
  211.    public void actionPerformed(ActionEvent var1) {
  212.       String var2 = var1.getActionCommand();
  213.       if (var2.equals("Cancel")) {
  214.          ((Window)this).dispose();
  215.          this.busy = false;
  216.       } else if (var2.equals("Create folder")) {
  217.          File var3 = new File(this.destinationFolder.getText());
  218.          if (!var3.mkdirs()) {
  219.             ((Container)this).remove(this.lastPanel);
  220.             this.failed.setPath(this.destinationFolder.getText());
  221.             ((Container)this).add("Center", this.lastPanel = this.failed);
  222.             ((Window)this).pack();
  223.          } else {
  224.             var2 = "Extract";
  225.          }
  226.       }
  227.  
  228.       if (var2.equals("<< Back")) {
  229.          ((Container)this).remove(this.lastPanel);
  230.          ((Container)this).add("Center", this.lastPanel = this.main);
  231.          ((Window)this).pack();
  232.       }
  233.  
  234.       if (var2.equals("Help")) {
  235.          InfoDialog var5 = new InfoDialog(this.mainApp, "help/extracting.html");
  236.          var5.doModal();
  237.          ((Window)this).toFront();
  238.       }
  239.  
  240.       if (var2.equals("Extract")) {
  241.          this.mainApp.properties.put("Extract.overWrite", this.overWrite.getState() ? "TRUE" : "FALSE");
  242.          this.mainApp.properties.put("Extract.useFoldernames", this.useFoldernames.getState() ? "TRUE" : "FALSE");
  243.          Checkbox var6 = this.cbg.getSelectedCheckbox();
  244.          this.mainApp.properties.put("Extract.allFiles", var6.getLabel().equals("selected File(s)") ? "FALSE" : "TRUE");
  245.          this.mainApp.properties.put("Extract.Destination", this.destinationFolder.getText());
  246.          this.mainApp.properties.put("Extract.Files", this.Files.getText());
  247.          File var4 = new File(this.destinationFolder.getText());
  248.          if (var4.exists()) {
  249.             this.retCode = true;
  250.             this.busy = false;
  251.             ((Window)this).dispose();
  252.          } else {
  253.             ((Dialog)this).setTitle("Confirm destination folder");
  254.             ((Container)this).remove(this.main);
  255.             ((Container)this).add("Center", this.lastPanel = this.confirm);
  256.             this.confirm.setPath(this.destinationFolder.getText());
  257.             ((Window)this).pack();
  258.          }
  259.       }
  260.    }
  261.  
  262.    public boolean doModal() {
  263.       ((Window)this).pack();
  264.       Rectangle var1 = ((Component)this).getParent().getBounds();
  265.       Rectangle var2 = ((Component)this).getBounds();
  266.       var2.x = var1.x + (var1.width - var2.width) / 2;
  267.       var2.y = var1.y + (var1.height - var2.height) / 2;
  268.       ((Component)this).setBounds(var2);
  269.       ((Dialog)this).show();
  270.       if (this.retCode) {
  271.          ((Component)this).setVisible(false);
  272.          processExtract var3 = new processExtract(this);
  273.          return ((processDlg)var3).doModal();
  274.       } else {
  275.          return this.retCode;
  276.       }
  277.    }
  278. }
  279.