예제 #1
0
        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)
                {

                }
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }