home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / ImportDialog.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  10.2 KB  |  458 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.debug.Debug;
  12. import com.sfs.os.OS;
  13. import com.sfs.util.SortableVector;
  14. import com.sfs.util.WildCard;
  15. import java.awt.AWTEvent;
  16. import java.awt.BorderLayout;
  17. import java.awt.Button;
  18. import java.awt.Checkbox;
  19. import java.awt.CheckboxGroup;
  20. import java.awt.Choice;
  21. import java.awt.Color;
  22. import java.awt.Component;
  23. import java.awt.Container;
  24. import java.awt.Dialog;
  25. import java.awt.FlowLayout;
  26. import java.awt.Font;
  27. import java.awt.Frame;
  28. import java.awt.GridLayout;
  29. import java.awt.Label;
  30. import java.awt.Panel;
  31. import java.awt.Rectangle;
  32. import java.awt.TextField;
  33. import java.awt.Window;
  34. import java.awt.event.ActionEvent;
  35. import java.awt.event.ActionListener;
  36. import java.awt.event.ItemEvent;
  37. import java.awt.event.ItemListener;
  38. import java.awt.event.WindowEvent;
  39. import java.io.File;
  40. import java.util.Vector;
  41.  
  42. public class ImportDialog extends Dialog implements TreeViewListener, ActionListener, ItemListener {
  43.    // $FF: renamed from: tw com.sfs.awt.treeview.TreeView
  44.    TreeView field_0;
  45.    public Frame frame;
  46.    boolean busy = true;
  47.    boolean retCode;
  48.    iavaZip mainApp;
  49.    static Vector Compression = new Vector(10);
  50.    static Vector Action;
  51.    static Vector Method;
  52.    Checkbox recurseSubfolders;
  53.    Checkbox saveExtraFolderInfo;
  54.    Checkbox stripFilenames;
  55.    Choice compression;
  56.    Choice action;
  57.    Choice method;
  58.    static final int METHOD_DEFLATED = 0;
  59.    static final int METHOD_STORED = 1;
  60.    static final int NORMAL_FOLDERHANDLING = 0;
  61.    static final int SAVE_EXTRAFOLDERINFO = 1;
  62.    static final int STRIP_FILENAMES = 2;
  63.    static final int ACTION_IMPORT_AND_REPLACE = 0;
  64.    static final int ACTION_FRESHEN_ARCHIVE = 1;
  65.    static final int ACTION_MOVE = 2;
  66.    static final int ACTION_UPDATE_AND_ADD = 3;
  67.    Label Status;
  68.    TextField Files;
  69.    boolean NO_RECURSE;
  70.    boolean RECURSE = true;
  71.  
  72.    public int getCompression() {
  73.       return this.compression.getSelectedIndex();
  74.    }
  75.  
  76.    protected void processWindowEvent(WindowEvent var1) {
  77.       switch (((AWTEvent)var1).getID()) {
  78.          case 201:
  79.             ((Window)this).dispose();
  80.             this.busy = false;
  81.             return;
  82.          default:
  83.       }
  84.    }
  85.  
  86.    public void itemStateChanged(ItemEvent var1) {
  87.       Checkbox var2;
  88.       if (((String)var1.getItem()).equals("Strip Filenames")) {
  89.          var2 = this.saveExtraFolderInfo;
  90.       } else {
  91.          var2 = this.stripFilenames;
  92.       }
  93.  
  94.       if (var1.getStateChange() == 1) {
  95.          var2.setState(false);
  96.          ((Component)var2).setEnabled(false);
  97.       } else {
  98.          ((Component)var2).setEnabled(true);
  99.       }
  100.    }
  101.  
  102.    public int getFilenameHandling() {
  103.       if (this.saveExtraFolderInfo.getState()) {
  104.          return 1;
  105.       } else {
  106.          return this.stripFilenames.getState() ? 2 : 0;
  107.       }
  108.    }
  109.  
  110.    protected void fillFolder(Folder var1, String var2) throws TreeViewException {
  111.       File var3 = new File(var2);
  112.       if (!var3.canRead()) {
  113.          var1.setOpen(false);
  114.          ((Item)var1).setDisabled(true);
  115.          var1.addItem("temp", (Object)null);
  116.          ((Item)var1).setContent(var2);
  117.       } else {
  118.          this.Status.setText("reading directory ...");
  119.          String[] var4 = var3.list();
  120.  
  121.          for(int var5 = 0; var5 < var4.length; ++var5) {
  122.             File var6 = new File(var2 + System.getProperty("file.separator") + var4[var5]);
  123.             if (var6.isDirectory()) {
  124.                Folder var7 = var1.addFolder(var4[var5], var6.getAbsolutePath());
  125.                var7.addItem("temp", (Object)null);
  126.             } else {
  127.                var1.addItem(var4[var5], var6.getAbsolutePath());
  128.             }
  129.          }
  130.  
  131.          ((Item)var1).setDisabled(false);
  132.          System.gc();
  133.          this.Status.setText("");
  134.       }
  135.    }
  136.  
  137.    public int getMethod() {
  138.       switch (this.method.getSelectedIndex()) {
  139.          case 0:
  140.             return 8;
  141.          default:
  142.             return 0;
  143.       }
  144.    }
  145.  
  146.    public void handleTreeViewEvent(TreeViewEventObject var1) {
  147.       if (var1.getItem() instanceof Folder) {
  148.          Folder var2 = (Folder)var1.getItem();
  149.          if (((Item)var2).getContent() != null) {
  150.             String var3 = (String)((Item)var2).getContent();
  151.             ((Item)var2).setContent((Object)null);
  152.  
  153.             try {
  154.                var2.removeItem("temp");
  155.                this.fillFolder(var2, var3);
  156.                return;
  157.             } catch (TreeViewException var4) {
  158.             }
  159.          }
  160.       }
  161.  
  162.    }
  163.  
  164.    public void actionPerformed(ActionEvent var1) {
  165.       String var2 = var1.getActionCommand();
  166.       if (var2.equals("Cancel")) {
  167.          ((Window)this).dispose();
  168.          this.busy = false;
  169.       } else if (var2.equals("Help")) {
  170.          InfoDialog var3 = new InfoDialog(this.mainApp, "help/import.html");
  171.          var3.doModal();
  172.          ((Window)this).toFront();
  173.       } else {
  174.          if (var2.equals("Import")) {
  175.             this.mainApp.properties.put("Import.saveExtraFolderInfo", this.saveExtraFolderInfo.getState() ? "TRUE" : "FALSE");
  176.             this.mainApp.properties.put("Import.stripFilenames", this.stripFilenames.getState() ? "TRUE" : "FALSE");
  177.             this.mainApp.properties.put("Import.recurseSubfolders", this.recurseSubfolders.getState() ? "TRUE" : "FALSE");
  178.             this.mainApp.properties.put("Import.Compression", this.compression.getSelectedItem());
  179.             this.mainApp.properties.put("Import.Action", this.action.getSelectedItem());
  180.             this.mainApp.properties.put("Import.Method", this.method.getSelectedItem());
  181.             this.mainApp.properties.put("Import.Files", this.Files.getText());
  182.             this.retCode = true;
  183.             ((Window)this).dispose();
  184.             this.busy = false;
  185.          }
  186.  
  187.       }
  188.    }
  189.  
  190.    static {
  191.       Compression.addElement("0 None");
  192.       Compression.addElement("1");
  193.       Compression.addElement("2");
  194.       Compression.addElement("3 Super Fast");
  195.       Compression.addElement("4");
  196.       Compression.addElement("5 Fast");
  197.       Compression.addElement("6");
  198.       Compression.addElement("7 Normal");
  199.       Compression.addElement("8");
  200.       Compression.addElement("9 Maximum (slow) ");
  201.       Action = new Vector(4);
  202.       Action.addElement("Import (and Replace)");
  203.       Action.addElement("Freshen Archive");
  204.       Action.addElement("Move");
  205.       Action.addElement("Update (and Add)");
  206.       Method = new Vector(2);
  207.       Method.addElement("DEFLATED");
  208.       Method.addElement("STORED");
  209.    }
  210.  
  211.    public SortableVector getSelection() {
  212.       Item var1 = this.field_0.Root.getCaretItem();
  213.       var1.setSelected(true);
  214.       if (this.field_0.Root.isSelected()) {
  215.          for(int var2 = 0; var2 < this.field_0.Root.size(); ++var2) {
  216.             var1 = this.field_0.Root.getItem(var2);
  217.             if (!(var1 instanceof Folder)) {
  218.                var1.setSelected(true);
  219.             } else if (this.recurseSubfolders.getState()) {
  220.                var1.setSelected(true);
  221.             }
  222.          }
  223.  
  224.          this.field_0.Root.setSelected(false);
  225.       }
  226.  
  227.       Vector var9 = this.field_0.Root.Rows;
  228.       SortableVector var3 = new SortableVector(1, new ItemSorter());
  229.       WildCard var4 = new WildCard(this.Files.getText(), 1);
  230.  
  231.       for(int var5 = 0; var5 < var9.size(); ++var5) {
  232.          var1 = (Item)var9.elementAt(var5);
  233.          if (!var1.isDisabled()) {
  234.             if (this.recurseSubfolders.getState()) {
  235.                if (var1.isSelected()) {
  236.                   if (var1 instanceof Folder) {
  237.                      this.fillFolderComplete((Folder)var1, this.RECURSE);
  238.                   } else if (var4.isAccepted(var1.getName())) {
  239.                      var3.add(var1);
  240.                   }
  241.                }
  242.             } else {
  243.                int var6 = var1.getSelectedDistance();
  244.                if (var6 == 0 && var1 instanceof Folder) {
  245.                   this.fillFolderComplete((Folder)var1, this.NO_RECURSE);
  246.                } else if (var6 > -1 && var6 < 2 && !(var1 instanceof Folder) && (var6 != 1 || var4.isAccepted(var1.getName()))) {
  247.                   var3.add(var1);
  248.                }
  249.             }
  250.          }
  251.       }
  252.  
  253.       for(int var10 = 0; var10 < ((Vector)var3).size(); ++var10) {
  254.          Debug.Info(((Item)((Vector)var3).elementAt(var10)).getName());
  255.       }
  256.  
  257.       return var3;
  258.    }
  259.  
  260.    ImportDialog(iavaZip var1) {
  261.       super(var1, "Import", true);
  262.       this.mainApp = var1;
  263.       ((Container)this).setLayout(new BorderLayout());
  264.       this.field_0 = new TreeView(var1, "", (Object)null);
  265.       this.field_0.setSorter(new ItemSorter());
  266.       this.field_0.setSize(200, 150);
  267.       this.field_0.setBackground(Color.lightGray);
  268.       ((Container)this).add("Center", this.field_0);
  269.       1 var2 = new 1(this);
  270.       ((Container)var2).setLayout(new BorderLayout());
  271.       Panel var3 = new Panel();
  272.       ((Container)var3).setLayout(new GridLayout(13, 1));
  273.       Label var4;
  274.       ((Container)var3).add(var4 = new Label("Options"));
  275.       Font var5 = ((Component)this).getFont();
  276.       ((Component)var4).setFont(new Font(var5.getName(), 1, var5.getSize()));
  277.       ((Container)var3).add(this.recurseSubfolders = new Checkbox("Recurse Subfolders", (CheckboxGroup)null, true));
  278.       String var6 = var1.properties.getProperty("Import.recurseSubfolders");
  279.       if (var6 != null && !Boolean.valueOf(var6)) {
  280.          this.recurseSubfolders.setState(false);
  281.       }
  282.  
  283.       ((Container)var3).add(this.saveExtraFolderInfo = new Checkbox("Save Extra Folder Info", (CheckboxGroup)null, false));
  284.       this.saveExtraFolderInfo.addItemListener(this);
  285.       var6 = var1.properties.getProperty("Import.saveExtraFolderInfo");
  286.       if (var6 != null && Boolean.valueOf(var6)) {
  287.          this.saveExtraFolderInfo.setEnabled(true);
  288.          this.saveExtraFolderInfo.setState(true);
  289.       }
  290.  
  291.       ((Container)var3).add(this.stripFilenames = new Checkbox("Strip Filenames", (CheckboxGroup)null, false));
  292.       this.stripFilenames.addItemListener(this);
  293.       var6 = var1.properties.getProperty("Import.stripFilenames");
  294.       if (var6 != null && Boolean.valueOf(var6)) {
  295.          this.stripFilenames.setState(true);
  296.          this.stripFilenames.setEnabled(true);
  297.          if (this.saveExtraFolderInfo.getState()) {
  298.             this.saveExtraFolderInfo.setState(false);
  299.             this.saveExtraFolderInfo.setEnabled(false);
  300.          }
  301.       }
  302.  
  303.       ((Container)var3).add(new Label("from selected folders:"));
  304.       var6 = var1.properties.getProperty("Import.Files");
  305.       if (var6 == null) {
  306.          var6 = "*";
  307.          var1.properties.put("Import.Files", var6);
  308.       }
  309.  
  310.       ((Container)var3).add(this.Files = new TextField(var6));
  311.       ((Container)var3).add(var4 = new Label("Action"));
  312.       ((Component)var4).setFont(new Font(var5.getName(), 1, var5.getSize()));
  313.       this.action = new Choice();
  314.  
  315.       for(int var7 = 0; var7 < Action.size(); ++var7) {
  316.          this.action.addItem((String)Action.elementAt(var7));
  317.       }
  318.  
  319.       ((Container)var3).add(this.action);
  320.       var6 = var1.properties.getProperty("Import.Action");
  321.       if (var6 != null && Action.contains(var6)) {
  322.          this.action.select(var6);
  323.       } else {
  324.          var1.properties.put("Import.Action", Action.elementAt(0));
  325.          this.action.select(0);
  326.       }
  327.  
  328.       ((Container)var3).add(new Label("Method"));
  329.       this.method = new Choice();
  330.  
  331.       for(int var21 = 0; var21 < Method.size(); ++var21) {
  332.          this.method.addItem((String)Method.elementAt(var21));
  333.       }
  334.  
  335.       ((Container)var3).add(this.method);
  336.       var6 = var1.properties.getProperty("Import.Method");
  337.       if (var6 != null && Method.contains(var6)) {
  338.          this.method.select(var6);
  339.       } else {
  340.          var1.properties.put("Import.Method", Method.elementAt(0));
  341.          this.method.select(0);
  342.       }
  343.  
  344.       ((Container)var3).add(new Label("Compression"));
  345.       this.compression = new Choice();
  346.  
  347.       for(int var22 = 0; var22 < Compression.size(); ++var22) {
  348.          this.compression.addItem((String)Compression.elementAt(var22));
  349.       }
  350.  
  351.       ((Container)var3).add(this.compression);
  352.       var6 = var1.properties.getProperty("Import.Compression");
  353.       if (var6 != null && Compression.contains(var6)) {
  354.          this.compression.select(var6);
  355.       } else {
  356.          var1.properties.put("Import.Compression", Compression.elementAt(0));
  357.          this.compression.select(0);
  358.       }
  359.  
  360.       ((Container)var3).add(this.Status = new Label("", 0));
  361.       ((Container)var2).add("North", var3);
  362.       ((Container)this).add("West", var2);
  363.       TexturePanel var23 = new TexturePanel(this, var1.backgroundTexture);
  364.       ((Container)var23).setLayout(new FlowLayout());
  365.       Button var8 = new Button("Import");
  366.       ((Container)var23).add(var8);
  367.       var8.addActionListener(this);
  368.       var8 = new Button("Cancel");
  369.       ((Container)var23).add(var8);
  370.       var8.addActionListener(this);
  371.       var8 = new Button("Help");
  372.       ((Container)var23).add(var8);
  373.       var8.addActionListener(this);
  374.       ((Container)this).add("South", var23);
  375.  
  376.       try {
  377.          if (OS.hasDrives()) {
  378.             Vector var9 = OS.getDrives();
  379.  
  380.             for(int var10 = 0; var10 < var9.size(); ++var10) {
  381.                var6 = (String)var9.elementAt(var10);
  382.                Folder var11 = this.field_0.addFolder(var6, var6);
  383.                var11.addItem("temp", (Object)null);
  384.             }
  385.          } else {
  386.             this.field_0.Root.setName(System.getProperty("file.separator"));
  387.             this.fillFolder(this.field_0.Root, System.getProperty("file.separator"));
  388.          }
  389.       } catch (TreeViewException var12) {
  390.       }
  391.  
  392.       ((Dialog)this).setTitle("Import");
  393.       ((Dialog)this).setResizable(true);
  394.       this.field_0.addTreeViewListener(this);
  395.       ((Component)this).enableEvents(64L);
  396.    }
  397.  
  398.    protected void fillFolderComplete(Folder var1, boolean var2) {
  399.       if (((Item)var1).getContent() != null) {
  400.          String var10 = (String)((Item)var1).getContent();
  401.          File var11 = new File(var10);
  402.          if (var11.canRead()) {
  403.             try {
  404.                ((Item)var1).setContent((Object)null);
  405.                var1.removeItem("temp");
  406.                String[] var5 = var11.list();
  407.  
  408.                for(int var6 = 0; var6 < var5.length; ++var6) {
  409.                   File var7 = new File(var10 + System.getProperty("file.separator") + var5[var6]);
  410.                   if (var2 && var7.isDirectory()) {
  411.                      Folder var8 = var1.addFolder(var5[var6], var7.getAbsolutePath());
  412.                      var8.addItem("temp", (Object)null);
  413.                      this.fillFolderComplete(var8, this.RECURSE);
  414.                   } else if (!var7.isDirectory()) {
  415.                      var1.addItem(var5[var6], var7.getAbsolutePath());
  416.                   }
  417.                }
  418.  
  419.                ((Item)var1).setDisabled(false);
  420.                System.gc();
  421.             } catch (TreeViewException var9) {
  422.             }
  423.          }
  424.       } else {
  425.          if (var2) {
  426.             for(int var3 = 0; var3 < var1.Root.size(); ++var3) {
  427.                Item var4 = var1.getItem(var3);
  428.                if (var4 instanceof Folder) {
  429.                   this.fillFolderComplete((Folder)var4, this.RECURSE);
  430.                }
  431.             }
  432.          }
  433.  
  434.       }
  435.    }
  436.  
  437.    public boolean doModal() {
  438.       ((Window)this).pack();
  439.       Rectangle var1 = ((Component)this).getParent().getBounds();
  440.       Rectangle var2 = ((Component)this).getBounds();
  441.       var2.x = var1.x + (var1.width - var2.width) / 2;
  442.       var2.y = var1.y + (var1.height - var2.height) / 2;
  443.       ((Component)this).setBounds(var2);
  444.       ((Dialog)this).show();
  445.       if (this.retCode) {
  446.          ((Component)this).setVisible(false);
  447.          processImport var3 = new processImport(this);
  448.          return ((processDlg)var3).doModal();
  449.       } else {
  450.          return this.retCode;
  451.       }
  452.    }
  453.  
  454.    public int getAction() {
  455.       return this.action.getSelectedIndex();
  456.    }
  457. }
  458.