home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / vbasic / Data / Utils / XZipNet.msi / Data1.cab / ZipManager.vb < prev    next >
Encoding:
Text File  |  2002-02-04  |  30.6 KB  |  858 lines

  1. 'Xceed Zip for .NET - ZipManager Sample Application
  2. 'Copyright (c) 2000-2002 - Xceed Software Inc.
  3. '
  4. '[ZipManager.vb]
  5. '
  6. 'This application demonstrates how to use Xceed Zip for .NET.
  7. '
  8. 'This file is part of Xceed Zip for .NET. The source code in this file is 
  9. 'only intended as a supplement to the documentation, and is provided 
  10. '"as is", without warranty of any kind, either expressed or implied.
  11.  
  12. Imports Xceed.FileSystem
  13. Imports Xceed.Zip
  14. Imports Xceed.Compression
  15. Imports Microsoft.Win32
  16.  
  17. Public Class ZipManager
  18.   Inherits System.Windows.Forms.Form
  19.  
  20. #Region " Windows Form Designer generated code "
  21.  
  22.   Public Sub New()
  23.     MyBase.New()
  24.  
  25.     'This call is required by the Windows Form Designer.
  26.     InitializeComponent()
  27.  
  28.     ' Update menus and buttons
  29.     RefreshMenuStates()
  30.   End Sub
  31.  
  32.   'Form overrides dispose to clean up the component list.
  33.   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
  34.     If disposing Then
  35.       If Not (components Is Nothing) Then
  36.         components.Dispose()
  37.       End If
  38.     End If
  39.     MyBase.Dispose(disposing)
  40.   End Sub
  41.   Friend WithEvents FilenameColumn As System.Windows.Forms.ColumnHeader
  42.   Friend WithEvents LastWriteColumn As System.Windows.Forms.ColumnHeader
  43.   Friend WithEvents SizeColumn As System.Windows.Forms.ColumnHeader
  44.   Friend WithEvents CompSizeColumn As System.Windows.Forms.ColumnHeader
  45.   Friend WithEvents RatioColumn As System.Windows.Forms.ColumnHeader
  46.   Friend WithEvents AttributesColumn As System.Windows.Forms.ColumnHeader
  47.   Friend WithEvents NewZipButton As System.Windows.Forms.ToolBarButton
  48.   Friend WithEvents OpenZipButton As System.Windows.Forms.ToolBarButton
  49.   Friend WithEvents ZipManagerMenu As System.Windows.Forms.MainMenu
  50.   Friend WithEvents FileMenu As System.Windows.Forms.MenuItem
  51.   Friend WithEvents NewZipMenu As System.Windows.Forms.MenuItem
  52.   Friend WithEvents OpenZipMenu As System.Windows.Forms.MenuItem
  53.   Friend WithEvents CloseZipMenu As System.Windows.Forms.MenuItem
  54.   Friend WithEvents MenuItem4 As System.Windows.Forms.MenuItem
  55.   Friend WithEvents ExitMenu As System.Windows.Forms.MenuItem
  56.   Friend WithEvents EditMenu As System.Windows.Forms.MenuItem
  57.   Friend WithEvents ZipFilesMenu As System.Windows.Forms.MenuItem
  58.   Friend WithEvents UnzipFilesMenu As System.Windows.Forms.MenuItem
  59.   Friend WithEvents DeleteFilesMenu As System.Windows.Forms.MenuItem
  60.   Friend WithEvents OptionMenu As System.Windows.Forms.MenuItem
  61.   Friend WithEvents HelpMenu As System.Windows.Forms.MenuItem
  62.   Friend WithEvents AboutMenu As System.Windows.Forms.MenuItem
  63.   Friend WithEvents OpenZipDialog As System.Windows.Forms.OpenFileDialog
  64.   Friend WithEvents ZipFilesDialog As System.Windows.Forms.OpenFileDialog
  65.   Friend WithEvents ZipManagerToolBar As System.Windows.Forms.ToolBar
  66.   Friend WithEvents ZipContentsList As System.Windows.Forms.ListView
  67.   Friend WithEvents ZipFilesButton As System.Windows.Forms.ToolBarButton
  68.   Friend WithEvents UnzipFilesButtom As System.Windows.Forms.ToolBarButton
  69.   Friend WithEvents DeleteFilesButton As System.Windows.Forms.ToolBarButton
  70.   Friend WithEvents StatusBarPanel As System.Windows.Forms.Panel
  71.   Friend WithEvents TotalBytesProgressBar As System.Windows.Forms.ProgressBar
  72.   Friend WithEvents ZipManagerStatusBar As System.Windows.Forms.StatusBar
  73.   Friend WithEvents MessagePanel As System.Windows.Forms.StatusBarPanel
  74.   Friend WithEvents UnzipFilesDialog As System.Windows.Forms.SaveFileDialog
  75.   Friend WithEvents OptionsRememberPathMenu As System.Windows.Forms.MenuItem
  76.   Friend WithEvents NewZipFileDialog As System.Windows.Forms.SaveFileDialog
  77.   Friend WithEvents CompressionLevelMenu As System.Windows.Forms.MenuItem
  78.   Friend WithEvents HighestLevelMenu As System.Windows.Forms.MenuItem
  79.   Friend WithEvents NormalLevelMenu As System.Windows.Forms.MenuItem
  80.   Friend WithEvents LowestLevelMenu As System.Windows.Forms.MenuItem
  81.   Friend WithEvents NoneLevelMenu As System.Windows.Forms.MenuItem
  82.  
  83.   'Required by the Windows Form Designer
  84.   Private components As System.ComponentModel.IContainer
  85.  
  86.   'NOTE: The following procedure is required by the Windows Form Designer
  87.   'It can be modified using the Windows Form Designer.  
  88.   'Do not modify it using the code editor.
  89.   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  90.     Me.ZipManagerToolBar = New System.Windows.Forms.ToolBar()
  91.     Me.NewZipButton = New System.Windows.Forms.ToolBarButton()
  92.     Me.OpenZipButton = New System.Windows.Forms.ToolBarButton()
  93.     Me.ZipFilesButton = New System.Windows.Forms.ToolBarButton()
  94.     Me.UnzipFilesButtom = New System.Windows.Forms.ToolBarButton()
  95.     Me.DeleteFilesButton = New System.Windows.Forms.ToolBarButton()
  96.     Me.ZipContentsList = New System.Windows.Forms.ListView()
  97.     Me.FilenameColumn = New System.Windows.Forms.ColumnHeader()
  98.     Me.LastWriteColumn = New System.Windows.Forms.ColumnHeader()
  99.     Me.SizeColumn = New System.Windows.Forms.ColumnHeader()
  100.     Me.CompSizeColumn = New System.Windows.Forms.ColumnHeader()
  101.     Me.RatioColumn = New System.Windows.Forms.ColumnHeader()
  102.     Me.AttributesColumn = New System.Windows.Forms.ColumnHeader()
  103.     Me.ZipManagerMenu = New System.Windows.Forms.MainMenu()
  104.     Me.FileMenu = New System.Windows.Forms.MenuItem()
  105.     Me.NewZipMenu = New System.Windows.Forms.MenuItem()
  106.     Me.OpenZipMenu = New System.Windows.Forms.MenuItem()
  107.     Me.CloseZipMenu = New System.Windows.Forms.MenuItem()
  108.     Me.MenuItem4 = New System.Windows.Forms.MenuItem()
  109.     Me.ExitMenu = New System.Windows.Forms.MenuItem()
  110.     Me.EditMenu = New System.Windows.Forms.MenuItem()
  111.     Me.ZipFilesMenu = New System.Windows.Forms.MenuItem()
  112.     Me.UnzipFilesMenu = New System.Windows.Forms.MenuItem()
  113.     Me.DeleteFilesMenu = New System.Windows.Forms.MenuItem()
  114.     Me.OptionMenu = New System.Windows.Forms.MenuItem()
  115.     Me.OptionsRememberPathMenu = New System.Windows.Forms.MenuItem()
  116.     Me.CompressionLevelMenu = New System.Windows.Forms.MenuItem()
  117.     Me.HighestLevelMenu = New System.Windows.Forms.MenuItem()
  118.     Me.NormalLevelMenu = New System.Windows.Forms.MenuItem()
  119.     Me.LowestLevelMenu = New System.Windows.Forms.MenuItem()
  120.     Me.NoneLevelMenu = New System.Windows.Forms.MenuItem()
  121.     Me.HelpMenu = New System.Windows.Forms.MenuItem()
  122.     Me.AboutMenu = New System.Windows.Forms.MenuItem()
  123.     Me.OpenZipDialog = New System.Windows.Forms.OpenFileDialog()
  124.     Me.ZipFilesDialog = New System.Windows.Forms.OpenFileDialog()
  125.     Me.StatusBarPanel = New System.Windows.Forms.Panel()
  126.     Me.ZipManagerStatusBar = New System.Windows.Forms.StatusBar()
  127.     Me.MessagePanel = New System.Windows.Forms.StatusBarPanel()
  128.     Me.TotalBytesProgressBar = New System.Windows.Forms.ProgressBar()
  129.     Me.UnzipFilesDialog = New System.Windows.Forms.SaveFileDialog()
  130.     Me.NewZipFileDialog = New System.Windows.Forms.SaveFileDialog()
  131.     Me.StatusBarPanel.SuspendLayout()
  132.     CType(Me.MessagePanel, System.ComponentModel.ISupportInitialize).BeginInit()
  133.     Me.SuspendLayout()
  134.     '
  135.     'ZipManagerToolBar
  136.     '
  137.     Me.ZipManagerToolBar.Buttons.AddRange(New System.Windows.Forms.ToolBarButton() {Me.NewZipButton, Me.OpenZipButton, Me.ZipFilesButton, Me.UnzipFilesButtom, Me.DeleteFilesButton})
  138.     Me.ZipManagerToolBar.DropDownArrows = True
  139.     Me.ZipManagerToolBar.Name = "ZipManagerToolBar"
  140.     Me.ZipManagerToolBar.ShowToolTips = True
  141.     Me.ZipManagerToolBar.Size = New System.Drawing.Size(544, 39)
  142.     Me.ZipManagerToolBar.TabIndex = 0
  143.     '
  144.     'NewZipButton
  145.     '
  146.     Me.NewZipButton.Text = "New"
  147.     '
  148.     'OpenZipButton
  149.     '
  150.     Me.OpenZipButton.Text = "Open"
  151.     '
  152.     'ZipFilesButton
  153.     '
  154.     Me.ZipFilesButton.Text = "Zip"
  155.     '
  156.     'UnzipFilesButtom
  157.     '
  158.     Me.UnzipFilesButtom.Text = "Unzip"
  159.     '
  160.     'DeleteFilesButton
  161.     '
  162.     Me.DeleteFilesButton.Text = "Delete"
  163.     '
  164.     'ZipContentsList
  165.     '
  166.     Me.ZipContentsList.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.FilenameColumn, Me.LastWriteColumn, Me.SizeColumn, Me.CompSizeColumn, Me.RatioColumn, Me.AttributesColumn})
  167.     Me.ZipContentsList.Dock = System.Windows.Forms.DockStyle.Fill
  168.     Me.ZipContentsList.Location = New System.Drawing.Point(0, 39)
  169.     Me.ZipContentsList.Name = "ZipContentsList"
  170.     Me.ZipContentsList.Size = New System.Drawing.Size(544, 309)
  171.     Me.ZipContentsList.TabIndex = 1
  172.     Me.ZipContentsList.View = System.Windows.Forms.View.Details
  173.     '
  174.     'FilenameColumn
  175.     '
  176.     Me.FilenameColumn.Text = "Filename"
  177.     Me.FilenameColumn.Width = 212
  178.     '
  179.     'LastWriteColumn
  180.     '
  181.     Me.LastWriteColumn.Text = "Modified"
  182.     '
  183.     'SizeColumn
  184.     '
  185.     Me.SizeColumn.Text = "Size"
  186.     '
  187.     'CompSizeColumn
  188.     '
  189.     Me.CompSizeColumn.Text = "Packed"
  190.     '
  191.     'RatioColumn
  192.     '
  193.     Me.RatioColumn.Text = "Ratio"
  194.     '
  195.     'AttributesColumn
  196.     '
  197.     Me.AttributesColumn.Text = "Attributes"
  198.     '
  199.     'ZipManagerMenu
  200.     '
  201.     Me.ZipManagerMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.FileMenu, Me.EditMenu, Me.OptionMenu, Me.HelpMenu})
  202.     '
  203.     'FileMenu
  204.     '
  205.     Me.FileMenu.Index = 0
  206.     Me.FileMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.NewZipMenu, Me.OpenZipMenu, Me.CloseZipMenu, Me.MenuItem4, Me.ExitMenu})
  207.     Me.FileMenu.Text = "&File"
  208.     '
  209.     'NewZipMenu
  210.     '
  211.     Me.NewZipMenu.Index = 0
  212.     Me.NewZipMenu.Text = "&New Zip file..."
  213.     '
  214.     'OpenZipMenu
  215.     '
  216.     Me.OpenZipMenu.Index = 1
  217.     Me.OpenZipMenu.Text = "&Open Zip File..."
  218.     '
  219.     'CloseZipMenu
  220.     '
  221.     Me.CloseZipMenu.Index = 2
  222.     Me.CloseZipMenu.Text = "&Close Zip File"
  223.     '
  224.     'MenuItem4
  225.     '
  226.     Me.MenuItem4.Index = 3
  227.     Me.MenuItem4.Text = "-"
  228.     '
  229.     'ExitMenu
  230.     '
  231.     Me.ExitMenu.Index = 4
  232.     Me.ExitMenu.Text = "&Exit from ZipManager"
  233.     '
  234.     'EditMenu
  235.     '
  236.     Me.EditMenu.Index = 1
  237.     Me.EditMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.ZipFilesMenu, Me.UnzipFilesMenu, Me.DeleteFilesMenu})
  238.     Me.EditMenu.Text = "&Edit"
  239.     '
  240.     'ZipFilesMenu
  241.     '
  242.     Me.ZipFilesMenu.Index = 0
  243.     Me.ZipFilesMenu.Shortcut = System.Windows.Forms.Shortcut.Ins
  244.     Me.ZipFilesMenu.Text = "&Zip files..."
  245.     '
  246.     'UnzipFilesMenu
  247.     '
  248.     Me.UnzipFilesMenu.Index = 1
  249.     Me.UnzipFilesMenu.Text = "&Unzip files..."
  250.     '
  251.     'DeleteFilesMenu
  252.     '
  253.     Me.DeleteFilesMenu.Index = 2
  254.     Me.DeleteFilesMenu.Shortcut = System.Windows.Forms.Shortcut.Del
  255.     Me.DeleteFilesMenu.Text = "&Delete files..."
  256.     '
  257.     'OptionMenu
  258.     '
  259.     Me.OptionMenu.Index = 2
  260.     Me.OptionMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.OptionsRememberPathMenu, Me.CompressionLevelMenu})
  261.     Me.OptionMenu.Text = "&Options"
  262.     '
  263.     'OptionsRememberPathMenu
  264.     '
  265.     Me.OptionsRememberPathMenu.Index = 0
  266.     Me.OptionsRememberPathMenu.Text = "&Remember path when zipping"
  267.     '
  268.     'CompressionLevelMenu
  269.     '
  270.     Me.CompressionLevelMenu.Index = 1
  271.     Me.CompressionLevelMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.HighestLevelMenu, Me.NormalLevelMenu, Me.LowestLevelMenu, Me.NoneLevelMenu})
  272.     Me.CompressionLevelMenu.Text = "&Compression level"
  273.     '
  274.     'HighestLevelMenu
  275.     '
  276.     Me.HighestLevelMenu.Index = 0
  277.     Me.HighestLevelMenu.Text = "&Highest"
  278.     '
  279.     'NormalLevelMenu
  280.     '
  281.     Me.NormalLevelMenu.Index = 1
  282.     Me.NormalLevelMenu.Text = "No&rmal"
  283.     '
  284.     'LowestLevelMenu
  285.     '
  286.     Me.LowestLevelMenu.Index = 2
  287.     Me.LowestLevelMenu.Text = "L&owest"
  288.     '
  289.     'NoneLevelMenu
  290.     '
  291.     Me.NoneLevelMenu.Index = 3
  292.     Me.NoneLevelMenu.Text = "&None"
  293.     '
  294.     'HelpMenu
  295.     '
  296.     Me.HelpMenu.Index = 3
  297.     Me.HelpMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.AboutMenu})
  298.     Me.HelpMenu.Text = "&Help"
  299.     '
  300.     'AboutMenu
  301.     '
  302.     Me.AboutMenu.Index = 0
  303.     Me.AboutMenu.Text = "&About ZipManager"
  304.     '
  305.     'OpenZipDialog
  306.     '
  307.     Me.OpenZipDialog.DefaultExt = "zip"
  308.     Me.OpenZipDialog.Filter = "Zip Files (*.zip)|*.zip|All Files (*.*)|*.*"
  309.     Me.OpenZipDialog.Title = "Select Zip file to open..."
  310.     '
  311.     'ZipFilesDialog
  312.     '
  313.     Me.ZipFilesDialog.AddExtension = False
  314.     Me.ZipFilesDialog.Filter = "All Files (*.*)|*.*"
  315.     Me.ZipFilesDialog.Multiselect = True
  316.     Me.ZipFilesDialog.Title = "Select files to zip..."
  317.     '
  318.     'StatusBarPanel
  319.     '
  320.     Me.StatusBarPanel.Controls.AddRange(New System.Windows.Forms.Control() {Me.ZipManagerStatusBar, Me.TotalBytesProgressBar})
  321.     Me.StatusBarPanel.Dock = System.Windows.Forms.DockStyle.Bottom
  322.     Me.StatusBarPanel.Location = New System.Drawing.Point(0, 348)
  323.     Me.StatusBarPanel.Name = "StatusBarPanel"
  324.     Me.StatusBarPanel.Size = New System.Drawing.Size(544, 16)
  325.     Me.StatusBarPanel.TabIndex = 2
  326.     '
  327.     'ZipManagerStatusBar
  328.     '
  329.     Me.ZipManagerStatusBar.Dock = System.Windows.Forms.DockStyle.Fill
  330.     Me.ZipManagerStatusBar.Location = New System.Drawing.Point(152, 0)
  331.     Me.ZipManagerStatusBar.Name = "ZipManagerStatusBar"
  332.     Me.ZipManagerStatusBar.Panels.AddRange(New System.Windows.Forms.StatusBarPanel() {Me.MessagePanel})
  333.     Me.ZipManagerStatusBar.ShowPanels = True
  334.     Me.ZipManagerStatusBar.Size = New System.Drawing.Size(392, 16)
  335.     Me.ZipManagerStatusBar.TabIndex = 1
  336.     '
  337.     'MessagePanel
  338.     '
  339.     Me.MessagePanel.Width = 2000
  340.     '
  341.     'TotalBytesProgressBar
  342.     '
  343.     Me.TotalBytesProgressBar.Dock = System.Windows.Forms.DockStyle.Left
  344.     Me.TotalBytesProgressBar.Name = "TotalBytesProgressBar"
  345.     Me.TotalBytesProgressBar.Size = New System.Drawing.Size(152, 16)
  346.     Me.TotalBytesProgressBar.TabIndex = 0
  347.     '
  348.     'UnzipFilesDialog
  349.     '
  350.     Me.UnzipFilesDialog.AddExtension = False
  351.     Me.UnzipFilesDialog.FileName = "Go to destination folder and press Save"
  352.     Me.UnzipFilesDialog.Filter = "All Files (*.*)|*.*"
  353.     Me.UnzipFilesDialog.OverwritePrompt = False
  354.     Me.UnzipFilesDialog.RestoreDirectory = True
  355.     Me.UnzipFilesDialog.Title = "Select destination folder..."
  356.     '
  357.     'NewZipFileDialog
  358.     '
  359.     Me.NewZipFileDialog.DefaultExt = "zip"
  360.     Me.NewZipFileDialog.Filter = "Zip Files (*.zip)|*.zip"
  361.     Me.NewZipFileDialog.RestoreDirectory = True
  362.     Me.NewZipFileDialog.Title = "Enter the new Zip file name and destination"
  363.     '
  364.     'ZipManager
  365.     '
  366.     Me.AllowDrop = True
  367.     Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
  368.     Me.ClientSize = New System.Drawing.Size(544, 364)
  369.     Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ZipContentsList, Me.StatusBarPanel, Me.ZipManagerToolBar})
  370.     Me.Menu = Me.ZipManagerMenu
  371.     Me.Name = "ZipManager"
  372.     Me.Text = "ZipManager - Xceed Zip for .NET"
  373.     Me.StatusBarPanel.ResumeLayout(False)
  374.     CType(Me.MessagePanel, System.ComponentModel.ISupportInitialize).EndInit()
  375.     Me.ResumeLayout(False)
  376.  
  377.   End Sub
  378.  
  379. #End Region
  380.  
  381. #Region " Menu Events "
  382.   Private Sub NewZipMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewZipMenu.Click
  383.     NewZipFile()
  384.   End Sub
  385.  
  386.   Private Sub OpenZipMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenZipMenu.Click
  387.     OpenZipFile()
  388.   End Sub
  389.  
  390.   Private Sub CloseZipMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseZipMenu.Click
  391.     CloseZipFile()
  392.   End Sub
  393.  
  394.   Private Sub ExitMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitMenu.Click
  395.     Me.Close()
  396.   End Sub
  397.  
  398.   Private Sub ZipFilesMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZipFilesMenu.Click
  399.     ZipFiles()
  400.   End Sub
  401.  
  402.   Private Sub UnzipFilesMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UnzipFilesMenu.Click
  403.     UnzipFiles()
  404.   End Sub
  405.  
  406.   Private Sub DeleteFilesMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteFilesMenu.Click
  407.     DeleteFiles()
  408.   End Sub
  409.  
  410.   Private Sub OptionsRememberPathMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionsRememberPathMenu.Click
  411.     Dim regKey As RegistryKey
  412.  
  413.     OptionsRememberPathMenu.Checked = Not OptionsRememberPathMenu.Checked
  414.     regKey = GetZipManagerRegistryKey()
  415.     If Not regKey Is Nothing Then
  416.       regKey.SetValue("RememberPath", OptionsRememberPathMenu.Checked)
  417.     End If
  418.   End Sub
  419.  
  420.   Private Sub HighestLevelMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HighestLevelMenu.Click
  421.     Call CheckMenu(CompressionLevel.Highest)
  422.   End Sub
  423.  
  424.   Private Sub NormalLevelMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NormalLevelMenu.Click
  425.     Call CheckMenu(CompressionLevel.Normal)
  426.   End Sub
  427.  
  428.   Private Sub LowestLevelMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LowestLevelMenu.Click
  429.     Call CheckMenu(CompressionLevel.Lowest)
  430.   End Sub
  431.  
  432.   Private Sub NoneLevelMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NoneLevelMenu.Click
  433.     Call CheckMenu(CompressionLevel.None)
  434.   End Sub
  435.  
  436.   Private Sub AboutMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutMenu.Click
  437.     AboutBox()
  438.   End Sub
  439. #End Region
  440.  
  441. #Region " Form Events "
  442.   Private Sub ZipManager_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
  443.     Dim droppedFiles As String()
  444.     Dim file As DiskFile
  445.     Dim zipFile As ZipArchive
  446.     Dim open As Boolean
  447.     Dim add As Boolean
  448.  
  449.     open = False
  450.     add = False
  451.  
  452.     If e.Data.GetDataPresent(DataFormats.FileDrop, False) Then
  453.       Try
  454.         droppedFiles = e.Data.GetData(DataFormats.FileDrop, False)
  455.         If droppedFiles.Length = 1 Then
  456.           ' The user dropped only one file. We check if it's a zip file
  457.           file = New DiskFile(droppedFiles(0))
  458.           Try
  459.             zipFile = New ZipArchive(file)
  460.             open = True
  461.           Catch Except As InvalidZipStructureException
  462.             ' It's not a zip file. We assume the user wants to add the
  463.             ' file to the current archive
  464.             add = True
  465.           End Try
  466.         Else
  467.           ' The user dropped more than one file. We'll eventually add
  468.           ' them to the current archive.
  469.           add = True
  470.         End If
  471.  
  472.         If open Then
  473.           ' Open the dropped zip file
  474.           OpenZipFile(file.FullName)
  475.         Else
  476.           If add Then
  477.             ' Add the dropped file(s) to the current archive if there
  478.             ' is one.
  479.             If Not m_zipRoot Is Nothing Then
  480.               Me.Activate()
  481.               If MessageBox.Show(Me, "Add the file(s) to the archive?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
  482.                 ZipFiles(droppedFiles)
  483.               End If
  484.             Else
  485.               MessagePanel.Text = "No opened zip file"
  486.             End If
  487.           End If
  488.         End If
  489.       Catch Except As Exception
  490.         MessagePanel.Text = except.Message
  491.       End Try
  492.     End If
  493.   End Sub
  494.  
  495.   Private Sub ZipManager_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragOver
  496.     If e.Data.GetDataPresent(DataFormats.FileDrop, False) Then
  497.       e.Effect = DragDropEffects.Copy
  498.     End If
  499.   End Sub
  500.  
  501.   Private Sub ZipManager_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  502.     Dim regKey As RegistryKey
  503.  
  504.     regKey = GetZipManagerRegistryKey()
  505.     If Not regKey Is Nothing Then
  506.       OptionsRememberPathMenu.Checked = regKey.GetValue("RememberPath", False)
  507.       CheckMenu(regKey.GetValue("CompressionLevel", CompressionLevel.Normal))
  508.     End If
  509.   End Sub
  510. #End Region
  511.  
  512. #Region " ToolBar Events "
  513.   Private Sub ZipManagerToolBar_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ZipManagerToolBar.ButtonClick
  514.     Select Case ZipManagerToolBar.Buttons.IndexOf(e.Button)
  515.       Case ZipManagerToolBar.Buttons.IndexOf(NewZipButton)
  516.         NewZipFile()
  517.       Case ZipManagerToolBar.Buttons.IndexOf(OpenZipButton)
  518.         OpenZipFile()
  519.       Case ZipManagerToolBar.Buttons.IndexOf(ZipFilesButton)
  520.         ZipFiles()
  521.       Case ZipManagerToolBar.Buttons.IndexOf(UnzipFilesButtom)
  522.         UnzipFiles()
  523.       Case ZipManagerToolBar.Buttons.IndexOf(DeleteFilesButton)
  524.         DeleteFiles()
  525.     End Select
  526.   End Sub
  527. #End Region
  528.  
  529. #Region " FileSystem Events "
  530.   Private Sub m_zipEvents_ByteProgression(ByVal sender As Object, ByVal e As Xceed.FileSystem.ByteProgressionEventArgs) Handles m_zipEvents.ByteProgression
  531.     TotalBytesProgressBar.Value = e.AllFilesBytes.Percent Mod 100
  532.   End Sub
  533. #End Region
  534.  
  535. #Region " Controls Events "
  536.   Private Sub ZipContentsList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZipContentsList.SelectedIndexChanged
  537.     RefreshMenuStates()
  538.   End Sub
  539. #End Region
  540.  
  541. #Region " Private Methods "
  542.   Private Sub RefreshMenuStates()
  543.     ' File menu children and related buttons
  544.     CloseZipMenu.Enabled = Not (m_zipRoot Is Nothing)
  545.  
  546.     ' Edit menu children and related buttons
  547.     ZipFilesMenu.Enabled = CloseZipMenu.Enabled
  548.     ZipFilesButton.Enabled = CloseZipMenu.Enabled
  549.  
  550.     UnzipFilesMenu.Enabled = CloseZipMenu.Enabled
  551.     UnzipFilesButtom.Enabled = CloseZipMenu.Enabled
  552.     DeleteFilesMenu.Enabled = (ZipContentsList.SelectedItems.Count > 0)
  553.     DeleteFilesButton.Enabled = (ZipContentsList.SelectedItems.Count > 0)
  554.   End Sub
  555.  
  556.   Private Sub FillFileList()
  557.     Cursor.Current = Cursors.WaitCursor
  558.     ZipContentsList.Items.Clear()
  559.  
  560.     If Not m_zipRoot Is Nothing Then
  561.       Try
  562.         Dim Files() As AbstractFile = m_zipRoot.GetFiles(m_zipEvents, Nothing, True)
  563.  
  564.         ' We want to freeze the list update while we add items.
  565.         ZipContentsList.BeginUpdate()
  566.  
  567.         Try
  568.           Dim File As AbstractFile
  569.           For Each File In Files
  570.             ZipContentsList.Items.Add(New ZipContentsItem(File))
  571.           Next
  572.         Finally
  573.           ZipContentsList.EndUpdate()
  574.         End Try
  575.       Catch Except As Exception
  576.         MessagePanel.Text = Except.Message
  577.       End Try
  578.     End If
  579.     Cursor.Current = Cursors.Default
  580.   End Sub
  581.  
  582.   Private Sub NewZipFile()
  583.     Dim ZipFile As DiskFile
  584.  
  585.     If NewZipFileDialog.ShowDialog() = DialogResult.OK Then
  586.       Try
  587.         ZipFile = New DiskFile(NewZipFileDialog.FileName)
  588.  
  589.         If ZipFile.Exists Then
  590.           ZipFile.Delete()
  591.         End If
  592.  
  593.         ZipFile.Create()
  594.         OpenZipFile(NewZipFileDialog.FileName)
  595.       Catch Except As Exception
  596.         MessagePanel.Text = Except.Message
  597.       End Try
  598.     End If
  599.   End Sub
  600.  
  601.   Private Sub OpenZipFile()
  602.     'Ask for file to open using OpenZipDialog
  603.     If OpenZipDialog.ShowDialog() = DialogResult.OK Then
  604.       OpenZipFile(OpenZipDialog.FileName)
  605.     End If
  606.   End Sub
  607.  
  608.   Private Sub OpenZipFile(ByVal ZipFilename As String)
  609.     Try
  610.       Dim ZipFile As DiskFile = New DiskFile(ZipFilename)
  611.  
  612.       If ZipFile.Exists Then
  613.         m_zipRoot = New ZipArchive(ZipFile)
  614.         FillFileList()
  615.         RefreshMenuStates()
  616.       End If
  617.  
  618.       MessagePanel.Text = "Zip file opened"
  619.     Catch Except As Exception
  620.       MessagePanel.Text = Except.Message
  621.     End Try
  622.   End Sub
  623.  
  624.   Private Sub CloseZipFile()
  625.     Try
  626.       m_zipRoot = Nothing
  627.  
  628.       FillFileList()
  629.       RefreshMenuStates()
  630.  
  631.       MessagePanel.Text = "Zip file closed"
  632.     Catch Except As Exception
  633.       MessagePanel.Text = Except.Message
  634.     End Try
  635.   End Sub
  636.  
  637.   Private Sub ZipFiles()
  638.     If ZipFilesDialog.ShowDialog() = DialogResult.OK Then
  639.       ZipFiles(ZipFilesDialog.FileNames)
  640.     End If
  641.   End Sub
  642.  
  643.   Private Sub ZipFiles(ByVal Filenames() As String)
  644.     Dim Filename As String
  645.     Dim File As DiskFile
  646.     Dim DestFolder As ZippedFolder
  647.  
  648.     Cursor.Current = Cursors.WaitCursor
  649.     Try
  650.       ' We do not want the Zip file to be updated after each CopyTo,
  651.       ' but only after everything is copied. This is similar to the
  652.       ' ListView.BeginUpdate() method.
  653.       m_zipRoot.BeginUpdate()
  654.       m_zipRoot.DefaultCompressionLevel = GetCompressionLevelFromMenu()
  655.  
  656.       Try
  657.         For Each Filename In Filenames
  658.           File = New DiskFile(Filename)
  659.  
  660.           If OptionsRememberPathMenu.Checked Then
  661.             Dim RootName As String = System.IO.Path.GetPathRoot(Filename)
  662.             Dim PathName As String = System.IO.Path.GetDirectoryName(Filename)
  663.             PathName = PathName.Substring(RootName.Length, PathName.Length - RootName.Length)
  664.  
  665.             DestFolder = m_zipRoot.GetFolder(PathName)
  666.           Else
  667.             DestFolder = m_zipRoot
  668.           End If
  669.  
  670.           ' CopyTo always creates the destination folder if it does not exist
  671.           File.CopyTo(m_zipEvents, Nothing, DestFolder, False)
  672.         Next
  673.       Finally
  674.         ' For every call to BeginUpdate, there must be a call to EndUpdate.
  675.         m_zipRoot.EndUpdate()
  676.       End Try
  677.  
  678.       MessagePanel.Text = "File(s) zipped successfully"
  679.     Catch Except As Exception
  680.       MessagePanel.Text = Except.Message
  681.     End Try
  682.     Cursor.Current = Cursors.Default
  683.  
  684.     FillFileList()
  685.     RefreshMenuStates()
  686.   End Sub
  687.  
  688.   Private Sub UnzipFiles()
  689.     If UnzipFilesDialog.ShowDialog() = DialogResult.OK Then
  690.       If ZipContentsList.SelectedItems.Count = 0 Then
  691.         UnzipFiles(System.IO.Path.GetDirectoryName(UnzipFilesDialog.FileName), _
  692.                    ZipContentsList.Items)
  693.       Else
  694.         UnzipFiles(System.IO.Path.GetDirectoryName(UnzipFilesDialog.FileName), _
  695.                    ZipContentsList.SelectedItems)
  696.       End If
  697.     End If
  698.   End Sub
  699.  
  700.   Private Sub UnzipFiles(ByVal Destination As String, ByVal Items As ICollection)
  701.     Cursor.Current = Cursors.WaitCursor
  702.     Try
  703.       Dim DestFolder As DiskFolder = New DiskFolder(Destination)
  704.       Dim SubDestFolder As AbstractFolder
  705.  
  706.       ' If we were unzipping elsewhere than in a DiskFolder, we could
  707.       ' want to check if it supports BeginUpdate/EndUpdate here.
  708.  
  709.       Dim Item As ZipContentsItem
  710.       For Each Item In Items
  711.         If Item.File.ParentFolder.IsRoot Then
  712.           Item.File.CopyTo(m_zipEvents, Nothing, DestFolder, False)
  713.         Else
  714.           SubDestFolder = DestFolder.GetFolder(Mid(Item.File.ParentFolder.FullName, 2))
  715.  
  716.           If Not SubDestFolder.Exists Then
  717.             SubDestFolder = DestFolder.CreateFolder(Mid(Item.File.ParentFolder.FullName, 2))
  718.           End If
  719.  
  720.           Item.File.CopyTo(m_zipEvents, Nothing, SubDestFolder, False)
  721.         End If
  722.       Next
  723.  
  724.       MessagePanel.Text = "File(s) unzipped successfully"
  725.     Catch Except As Exception
  726.       MessagePanel.Text = Except.Message
  727.     End Try
  728.     Cursor.Current = Cursors.Default
  729.   End Sub
  730.  
  731.   Private Sub DeleteFiles()
  732.     If DialogResult.Yes = MessageBox.Show("Are you sure you wish to delete the selected file(s)?", _
  733.                                           "Please Confirm...", MessageBoxButtons.YesNo, _
  734.                                           MessageBoxIcon.Question) Then
  735.       DeleteFiles(ZipContentsList.SelectedItems)
  736.     End If
  737.   End Sub
  738.  
  739.   Private Sub DeleteFiles(ByVal Items As ICollection)
  740.     Try
  741.       ' We do not want the Zip file to be updated after each Delete,
  742.       ' but only after all selected files are deleted. This is similar 
  743.       ' to the ListView.BeginUpdate() method.
  744.       m_zipRoot.BeginUpdate()
  745.  
  746.       Try
  747.         Dim Item As ZipContentsItem
  748.         For Each Item In Items
  749.           Item.File.Delete(m_zipEvents, Nothing)
  750.         Next
  751.       Finally
  752.         ' For every call to BeginUpdate, there must be a call to EndUpdate.
  753.         m_zipRoot.EndUpdate()
  754.       End Try
  755.     Catch Except As Exception
  756.       MessagePanel.Text = Except.Message
  757.     End Try
  758.  
  759.     FillFileList()
  760.     RefreshMenuStates()
  761.   End Sub
  762.  
  763.   Private Sub CheckMenu(ByVal newCompressionLevel As CompressionLevel)
  764.     Dim menu As MenuItem
  765.     Dim regKey As RegistryKey
  766.  
  767.     For Each menu In CompressionLevelMenu.MenuItems
  768.       menu.Checked = False
  769.     Next
  770.  
  771.     Select Case newCompressionLevel
  772.       Case CompressionLevel.Highest
  773.         HighestLevelMenu.Checked = True
  774.       Case CompressionLevel.Lowest
  775.         LowestLevelMenu.Checked = True
  776.       Case CompressionLevel.None
  777.         NoneLevelMenu.Checked = True
  778.       Case CompressionLevel.Normal
  779.         NormalLevelMenu.Checked = True
  780.     End Select
  781.  
  782.     regKey = GetZipManagerRegistryKey()
  783.     If Not regKey Is Nothing Then
  784.       regKey.SetValue("CompressionLevel", CInt(newCompressionLevel))
  785.     End If
  786.   End Sub
  787.  
  788.   Private Function GetZipManagerRegistryKey() As RegistryKey
  789.     Dim softwareKey As RegistryKey
  790.     Dim xceedKey As RegistryKey
  791.     Dim zipManagerKey As RegistryKey
  792.  
  793.     zipManagerKey = Nothing
  794.  
  795.     softwareKey = Registry.CurrentUser.OpenSubKey("Software", True)
  796.  
  797.     If softwareKey Is Nothing Then
  798.       softwareKey = Registry.CurrentUser.CreateSubKey("Software")
  799.     End If
  800.  
  801.     If Not softwareKey Is Nothing Then
  802.       xceedKey = softwareKey.OpenSubKey("Xceed", True)
  803.  
  804.       If xceedKey Is Nothing Then
  805.         xceedKey = softwareKey.CreateSubKey("Xceed")
  806.       End If
  807.  
  808.       If Not xceedKey Is Nothing Then
  809.         zipManagerKey = xceedKey.OpenSubKey("ZipManager", True)
  810.  
  811.         If zipManagerKey Is Nothing Then
  812.           zipManagerKey = xceedKey.CreateSubKey("ZipManager")
  813.         End If
  814.       End If
  815.     End If
  816.  
  817.     GetZipManagerRegistryKey = zipManagerKey
  818.   End Function
  819.  
  820.   Private Function GetCompressionLevelFromMenu() As CompressionLevel
  821.     If HighestLevelMenu.Checked Then
  822.       GetCompressionLevelFromMenu = CompressionLevel.Highest
  823.     Else
  824.       If NormalLevelMenu.Checked Then
  825.         GetCompressionLevelFromMenu = CompressionLevel.Normal
  826.       Else
  827.         If LowestLevelMenu.Checked Then
  828.           GetCompressionLevelFromMenu = CompressionLevel.Lowest
  829.         Else
  830.           If NoneLevelMenu.Checked Then
  831.             GetCompressionLevelFromMenu = CompressionLevel.None
  832.           End If
  833.         End If
  834.       End If
  835.     End If
  836.   End Function
  837.  
  838.   Private Sub AboutBox()
  839.     MessageBox.Show("Xceed Zip for .NET - ZipManager Sample Application" + vbCrLf + _
  840.                     "Written in VisualBasic.NET" + vbCrLf + _
  841.                     "Copyrights (c) 2001 - Xceed Software Inc.", _
  842.                     "About ZipManager...", MessageBoxButtons.OK, MessageBoxIcon.Information)
  843.   End Sub
  844. #End Region
  845.  
  846. #Region " Private Members "
  847.   ' The root of the virtual disk space inside a Zip file.
  848.   ' Can also represent the Zip file itself.
  849.   Private m_zipRoot As ZipArchive
  850.  
  851.   ' The event object we will pass to Zip methods to receive events.
  852.   ' Using "WithEvents" let's us use the combo boxes above to easily
  853.   ' implement event handlers without having to add this component to
  854.   ' the toolbox.
  855.   Private WithEvents m_zipEvents As New FileSystemEvents()
  856. #End Region
  857. End Class
  858.