コード例 #1
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            panelSet.CurrentItemToOperateOn = panelSet.FocusedListView.SelectedItem;
            panelSet.CurrentAction          = Actions.Cut;
        }
コード例 #2
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet   panelSet   = (PanelSet)actionPerformerArgs.Sender;
            PopupList  popupList  = new PopupList("Search result:");
            PopupInput popupInput = new PopupInput(panelSet, "Enter the name of a file or directory:", "Search");

            popupInput.Render();
            var userInput = popupInput.UserInputResult;

            popupList.ListView = new ListView <FileSystemInfo>(popupList.OffsetX, popupList.OffsetY, popupList.Height, 0,
                                                               popupList.BackgroundColor, popupList.ForegroundColor);
            popupList.ListView.Focused      = true;
            popupList.ListView.ColumnWidths = new List <int>()
            {
                30, 10, 10
            };
            popupList.ListView.Current = panelSet.FocusedPanel.Current;
            panelSet.Modal             = popupList;

            popupList.ListView.Items = GetAllFilesAndFolders((DirectoryInfo)popupList.ListView.Current).Where(i => i.Item.Name.Contains(userInput)).ToList();

            if (popupList.ListView.Items.Count > 0)
            {
                popupList.ListView.Current = panelSet.Modal.ListView.Items[0].Item;
            }
            else
            {
                return;
            }

            popupList.Render();
        }
コード例 #3
0
ファイル: Rename.cs プロジェクト: BlackMoonRider/FileManager
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            FileSystemInfo senderInfo = panelSet.FocusedListView.SelectedItem.Item;
            var            source     = senderInfo.FullName;

            PopupInput popupInput = new PopupInput(panelSet, "Enter new name:");

            popupInput.Render();
            string newName = popupInput.UserInputResult;

            var destination = Path.GetDirectoryName(source) + "\\" + newName;

            if (senderInfo is FileInfo)
            {
                File.Move(source, destination);
            }

            else if (senderInfo is DirectoryInfo)
            {
                Directory.Move(source, destination);
            }

            panelSet.RefreshScreen();
        }
コード例 #4
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            ListView <FileSystemInfo> listView = (ListView <FileSystemInfo>)actionPerformerArgs.Sender;

            if (listView.SelectedIndex != 0)
            {
                listView.SelectedIndex--;
            }
        }
コード例 #5
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            ListView <FileSystemInfo> listView = (ListView <FileSystemInfo>)actionPerformerArgs.Sender;

            if (listView.SelectedIndex < listView.Items.Count - 1)
            {
                listView.SelectedIndex++;
            }
        }
コード例 #6
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            var root = Path.GetPathRoot(panelSet.FocusedListView.SelectedItem.Item.FullName);

            panelSet.FocusedListView.Current = new DirectoryInfo(root);

            panelSet.RefreshFocusedPanel();
        }
コード例 #7
0
        public IActionPerformerBehavior GetActionPerformer(ActionPerformerArgs actionPerformerArgs)
        {
            ConsoleKeyInfo key = actionPerformerArgs.Key;

            switch (key.Key)
            {
            case ConsoleKey.UpArrow:
                return(new MoveCursorUp());

            case ConsoleKey.DownArrow:
                return(new MoveCursorDown());

            case ConsoleKey.Enter:
                return(new OpenFileFolder());

            case ConsoleKey.RightArrow:
                return(new ChoosePreviousPanel());

            case ConsoleKey.LeftArrow:
                return(new ChooseNextPanel());

            case ConsoleKey.F1:
                return(new Copy());

            case ConsoleKey.F2:
                return(new Rename());

            case ConsoleKey.F3:
                return(new Cut());

            case ConsoleKey.F4:
                return(new Paste());

            case ConsoleKey.F5:
                return(new NavigateToRoot());

            case ConsoleKey.F6:
                return(new ShowProperties());

            case ConsoleKey.F7:
                return(new CreateNewFolder());

            case ConsoleKey.F8:
                return(new SelectDrive());

            case ConsoleKey.F9:
                return(new Search());

            case ConsoleKey.Backspace:
                return(new NavigateUpwards());

            default:
                return(new NoAction());
            }
        }
コード例 #8
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            var parent = Directory.GetParent(panelSet.FocusedListView.Current.FullName)
                         ?? new DirectoryInfo(Path.GetPathRoot(panelSet.FocusedListView.Current.FullName));

            panelSet.FocusedListView.Current = parent;

            panelSet.RefreshFocusedPanel();
        }
コード例 #9
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            PopupInput popupInput = new PopupInput(panelSet, "Enter new folder name:");

            popupInput.Render();
            string newName = popupInput.UserInputResult;

            var currentPath = panelSet.FocusedListView.Current.FullName + "\\" + newName;

            Directory.CreateDirectory(currentPath);

            panelSet.RefreshFocusedPanel();
        }
コード例 #10
0
ファイル: Paste.cs プロジェクト: BlackMoonRider/FileManager
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            FileSystemInfo senderInfo = panelSet.FocusedListView.Current;
            FileSystemInfo sourceInfo = panelSet.CurrentItemToOperateOn.Item;

            var action = panelSet.CurrentAction;

            var source      = sourceInfo.FullName;
            var destination = senderInfo.FullName + "\\" + sourceInfo.Name;

            if (sourceInfo is FileInfo)
            {
                if (action == Actions.Copy)
                {
                    File.Copy(source, destination);
                }

                else if (action == Actions.Cut)
                {
                    File.Move(source, destination);
                }
            }

            else if (sourceInfo is DirectoryInfo)
            {
                if (action == Actions.Copy)
                {
                    Utility.DirectoryCopy(source, destination);
                }

                else if (action == Actions.Cut)
                {
                    Directory.Move(source, destination);
                }
            }

            if (action == Actions.Copy)
            {
                panelSet.RefreshFocusedPanel();
            }

            else if (action == Actions.Cut)
            {
                panelSet.RefreshScreen();
            }
        }
コード例 #11
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            ListView <FileSystemInfo> listView = panelSet.FocusedListView;
            FileSystemInfo            info     = listView.SelectedItem.Item;

            if (info is FileInfo file)
            {
                Process.Start(file.FullName);
            }
            else if (info is DirectoryInfo directoryInfo)
            {
                listView.Clean();
                panelSet.FocusedListView.Current = directoryInfo;
                listView.Items = panelSet.GetItems(panelSet.FocusedPanel.Current);
            }
        }
コード例 #12
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet  panelSet  = (PanelSet)actionPerformerArgs.Sender;
            PopupList popupList = new PopupList("Select drive:");

            popupList.ListView = new ListView <FileSystemInfo>(popupList.OffsetX, popupList.OffsetY, popupList.Height, 0,
                                                               popupList.BackgroundColor, popupList.ForegroundColor);
            popupList.ListView.Focused      = true;
            popupList.ListView.ColumnWidths = new List <int>()
            {
                7, popupList.Width - 17, 10
            };
            popupList.ListView.Items = DriveInfo.GetDrives()
                                       .Where(d => d.IsReady)
                                       .Select(d => new ListViewItem <FileSystemInfo>(d.RootDirectory, d.RootDirectory.FullName, d.VolumeLabel, Utility.BytesToStringAsNormalizedSize(d.TotalSize)))
                                       .ToList();

            panelSet.Modal = popupList;
            popupList.Render();
        }
コード例 #13
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            var panels = panelSet.Panels;

            for (int i = 0; i < panels.Count; i++)
            {
                if (panels[i].Focused)
                {
                    panels[i].Focused = false;
                    if (i == panels.Count - 1)
                    {
                        panels[0].Focused = true;
                    }
                    else
                    {
                        panels[i + 1].Focused = true;
                    }
                    return;
                }
            }
        }
コード例 #14
0
        public override void Do(ActionPerformerArgs actionPerformerArgs)
        {
            PanelSet panelSet = (PanelSet)actionPerformerArgs.Sender;

            var           sourceInfo    = panelSet.FocusedListView.SelectedItem.Item;
            StringBuilder stringBuilder = new StringBuilder();

            string info     = String.Empty;
            int    readOnly = ((int)(sourceInfo.Attributes) & (int)FileAttributes.ReadOnly);

            stringBuilder.AppendLine("Name:               " + sourceInfo.Name);
            stringBuilder.AppendLine("Parent direcotry:   " + Path.GetDirectoryName(sourceInfo.FullName));
            stringBuilder.AppendLine("Root direcotry:     " + Path.GetPathRoot(sourceInfo.FullName));
            stringBuilder.AppendLine("Read-only:          " + ((readOnly == 1) ? "true" : "false"));
            stringBuilder.AppendLine("Last read time:     " + sourceInfo.LastAccessTime);
            stringBuilder.AppendLine("Last write time:    " + sourceInfo.LastWriteTime);

            if (sourceInfo is FileInfo fileInfo)
            {
                stringBuilder.AppendLine("Size:               " + Utility.BytesToStringAsNormalizedSize(fileInfo.Length));
            }

            else if (sourceInfo is DirectoryInfo directoryInfo)
            {
                stringBuilder.AppendLine("Size:               " + Utility.BytesToStringAsNormalizedSize(directoryInfo.DirectorySize()));
                stringBuilder.AppendLine("Files:              " + Directory.GetFiles(sourceInfo.FullName).Length);
                stringBuilder.AppendLine("Folders:            " + Directory.GetDirectories(sourceInfo.FullName).Length);
            }

            info = stringBuilder.ToString();

            PopupMessage popupMessage = new PopupMessage(panelSet, info, "Properties");

            popupMessage.Render();

            panelSet.RefreshScreen();
        }
コード例 #15
0
 public override void Do(ActionPerformerArgs args)
 {
 }
コード例 #16
0
 abstract public void Do(ActionPerformerArgs actionPerformerArgs);