Beispiel #1
0
 public static void ImportFiles(DirectoryEntry entry)
 {
     OpenFileDialog fileDialog = new OpenFileDialog();
     fileDialog.Multiselect = true;
     if (fileDialog.ShowDialog() == DialogResult.OK) {
         foreach (String file in fileDialog.FileNames)
         {
             if (entry.GetEntries().Any(e => e.Name == Path.GetFileName(file)))
             {
                 // TODO: Ask for overwrite
                 MessageBox.Show(String.Format("Error: file {0} already exists.", Path.GetFileName(file)));
                 return;
             }
         }
         foreach (String file in fileDialog.FileNames)
         {
             // TODO: add resources, decide if to compress or not, all by extentions.
             // Right now all regular files compressed by default
             RegularFileEntry addedFile = new RegularFileEntry(Path.GetFileName(file), new ExternalFileStreamCreator(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)), true);
             entry.AddEntry(addedFile);
             if (entry.FilesListView != null)
             {
                 entry.FilesListView.Items.Add(new EntryListViewItem(addedFile));
             }
         }
     }
 }
Beispiel #2
0
 public static void ExportFolder(DirectoryEntry entry)
 {
     string selectedFolder = GUI.FolderSelection();
     if (selectedFolder != null)
     {
         entry.Export(selectedFolder);
     }
 }
Beispiel #3
0
 public static void DeleteFolder(DirectoryEntry entry, bool force = true)
 {
     if (force || MessageBox.Show(String.Format("Are you sure you want to delete the folder '{0}'?", entry.Name), "Delete Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
     {
         entry.Parent.RemoveEntry(entry);
         entry.Node.Remove();
     }
 }
Beispiel #4
0
 public static void SelectAll(DirectoryEntry entry)
 {
     if (entry.FilesListView != null)
     {
         foreach (ListViewItem item in entry.FilesListView.Items)
         {
             item.Selected = true;
         }
     }
 }
Beispiel #5
0
 public static EntryTreeNode GetTreeNodes(DirectoryEntry entry)
 {
     List<EntryTreeNode> children = new List<EntryTreeNode>();
     foreach (Entry childEntry in entry.GetEntries())
     {
         if (childEntry is DirectoryEntry)
         {
             children.Add(GetTreeNodes(childEntry as DirectoryEntry));
         }
     }
     return new EntryTreeNode(entry, children.ToArray());
 }
Beispiel #6
0
 public static void NewFolder(DirectoryEntry entry)
 {
     string name = "New Folder";
     int i = 1;
     for (; entry.GetEntries().Any(e => e.Name == name); ++i, name = String.Format("New Folder ({0})", i)) ;
     DirectoryEntry addedFolder = new DirectoryEntry(name, new List<Entry>());
     entry.AddEntry(addedFolder);
     entry.Node.Nodes.Add(new EntryTreeNode(addedFolder, new EntryTreeNode[]{}));
     if (!entry.Node.IsExpanded)
     {
         entry.Node.Expand();
     }
     addedFolder.Node.TreeView.SelectedNode = addedFolder.Node;
     addedFolder.Node.TreeView.LabelEdit = true;
     addedFolder.Node.BeginEdit();
 }
Beispiel #7
0
 public static void ForceDeleteFolder(DirectoryEntry entry)
 {
     DeleteFolder(entry);
 }
Beispiel #8
0
 public static void AskDeleteFolder(DirectoryEntry entry)
 {
     DeleteFolder(entry, false);
 }
Beispiel #9
0
 public EntryTreeNode(DirectoryEntry entry, EntryTreeNode[] children)
     : base(entry.Filename, children)
 {
     this.Entry = entry;
 }
Beispiel #10
0
 public static void ImportFolder(DirectoryEntry entry)
 {
     string folder = GUI.FolderSelection();
 }
Beispiel #11
0
        private void UpdateFilesList(bool clear = true)
        {
            DirectoryEntry dirEntry = (filesTree.SelectedNode == null) ? null : (filesTree.SelectedNode as EntryTreeNode).Entry;
            if (LastSelectedEntry != dirEntry)
            {
                if (LastSelectedEntry != null)
                {
                    LastSelectedEntry.FilesListView = filesList;
                }
                if (dirEntry != null)
                {
                    dirEntry.FilesListView = filesList;
                }
                LastSelectedEntry = dirEntry;
            }
            if (clear)
            {
                filesList.Items.Clear();

                if (filesTree.SelectedNode != null)
                {
                    foreach (Entry entry in (filesTree.SelectedNode as EntryTreeNode).Entry.GetEntries())
                    {
                        if (entry is FileEntry) {
                            filesList.Items.Add(new EntryListViewItem(entry as FileEntry));
                        }
                    }
                }
            }
            else if (filesTree.SelectedNode == null)
            {
                filesList.Items.Clear();
            }
            else
            {
                HashSet<string> seenItems = new HashSet<string>();
                // find the changes
                foreach (EntryListViewItem item in filesList.Items)
                {
                    if (!(filesTree.SelectedNode as EntryTreeNode).Entry.GetEntries().Any(entry => entry == item.Entry))
                    {
                        filesList.Items.Remove(item);
                    }
                    else
                    {
                        item.Update();
                        seenItems.Add(item.Entry.Name);
                    }
                }
                foreach (Entry entry in (filesTree.SelectedNode as EntryTreeNode).Entry.GetEntries())
                {
                    if (entry is FileEntry)
                    {
                        if (!seenItems.Any(name => name == entry.Name))
                        {
                            filesList.Items.Add(new EntryListViewItem(entry as FileEntry));
                        }
                    }
                }
            }
        }
Beispiel #12
0
 public EntryTreeNode(DirectoryEntry entry, EntryTreeNode[] children)
     : base(entry.Name, children)
 {
     this.Entry = entry;
     entry.Node = this;
 }
Beispiel #13
0
 public static void RenameFolder(DirectoryEntry entry)
 {
     entry.Node.TreeView.LabelEdit = true;
     entry.Node.BeginEdit();
 }