private void FolderTreeView_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { LastSelectedView = FolderTreeView; FileView_Delete(null, null); } if (e.Control) { if (e.KeyCode == LastControlKey) return; LastControlKey = e.KeyCode; if (e.KeyCode == Keys.C) { //StringCollection paths = new StringCollection(); //paths.AddRange(GetSelectedPaths(true)); //Clipboard.SetFileDropList(paths); } if (e.KeyCode == Keys.V) { } } }
private void FolderTreeView_MouseClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; FolderNode node = FolderTreeView.GetNodeAt(e.Location) as FolderNode; if (node == null) return; ContextMenuStripEx menu = new ContextMenuStripEx(); if (!node.Temp) { if (node.Details.IsFlagged(StorageFlags.Unlocked)) menu.Items.Add(MenuLock); else menu.Items.Add(MenuUnlock); } else menu.Items.Add(MenuAdd); // remove in web interface\ if (node != RootFolder && !node.Temp) menu.Items.Add(MenuDetails); if (IsLocal && node != RootFolder && !node.Temp) { menu.Items.Add("-"); if (node.Details.IsFlagged(StorageFlags.Archived)) menu.Items.Add(MenuRestore); menu.Items.Add(MenuDelete); } if (menu.Items.Count > 0) { LastSelectedView = FolderTreeView; menu.Show(FolderTreeView, e.Location); } }
private void FileListView_MouseClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; FileItem clicked = FileListView.GetItemAt(e.Location) as FileItem; ContextMenuStripEx menu = new ContextMenuStripEx(); if (clicked == null) { SelectedInfo.ShowDiffs(); if (Working != null) { menu.Items.Add(new ToolStripMenuItem("Create Folder", StorageRes.Folder, new EventHandler(Folder_Create))); menu.Show(FileListView, e.Location); } return; } // add to storage, lock, unlock, restore, delete bool firstLoop = true; List<ToolStripMenuItem> potentialMenus = new List<ToolStripMenuItem>(); foreach (FileItem item in FileListView.SelectedItems) { if (item.Text.CompareTo("..") == 0) continue; // create list of items to add, intersect with current list, first run is free potentialMenus.Clear(); // add if (IsLocal && item.Temp) potentialMenus.Add(MenuAdd); // lock / unlock if (!item.Temp) if (item.IsFolder) { if (item.Folder.Details.IsFlagged(StorageFlags.Unlocked)) potentialMenus.Add(MenuLock); else potentialMenus.Add(MenuUnlock); } else if (item.Details != null) { if (item.IsUnlocked()) potentialMenus.Add(MenuLock); else potentialMenus.Add(MenuUnlock); } // details if (!item.Temp && FileListView.SelectedItems.Count == 1) potentialMenus.Add(MenuDetails); // delete / restore if (IsLocal && !item.Temp) if (item.IsFolder) { if (item.Folder.Details.IsFlagged(StorageFlags.Archived)) potentialMenus.Add(MenuRestore); potentialMenus.Add(MenuDelete); } else if (item.Details != null) { if (item.Details.IsFlagged(StorageFlags.Archived)) potentialMenus.Add(MenuRestore); potentialMenus.Add(MenuDelete); } // initial list if (firstLoop) { foreach (ToolStripMenuItem potential in potentialMenus) menu.Items.Add(potential); firstLoop = false; continue; } // intersect both ways foreach (ToolStripMenuItem potential in potentialMenus) if (!menu.Items.Contains(potential)) menu.Items.Remove(potential); List<ToolStripMenuItem> selfRemove = new List<ToolStripMenuItem>(); foreach (ToolStripMenuItem current in menu.Items) if (!potentialMenus.Contains(current)) selfRemove.Add(current); foreach (ToolStripMenuItem current in selfRemove) menu.Items.Remove(current); } // place '-' before restore or delete int i = 0; bool separator = false; foreach (ToolStripMenuItem item in menu.Items) { if (item.Text == "Restore" || item.Text == "Delete") { separator = true; break; } i++; } if (separator && i > 0) menu.Items.Insert(i, new ToolStripSeparator()); if (menu.Items.Count > 0) { LastSelectedView = FileListView; menu.Show(FileListView, e.Location); } }