Esempio n. 1
0
        /// <summary>
        ///     Создает новый экземпляр файлового менеджера.
        /// </summary>
        /// <param name="maxWidth">Максимальная используемая ширина.</param>
        /// <param name="maxHeight">Максимальная используемая высота.</param>
        public FileManager(int maxWidth, int maxHeight)
        {
            CurrentDirectory = null;
            panelWidth       = maxWidth / 2 - 2;
            list             = new StackContainer(Orientation.Vertical, maxVisibleCount: maxHeight - 3);
            header           = new Label("", maxWidth);
            selectedWidget   = new StackContainer(Orientation.Vertical, maxVisibleCount: maxHeight - 3);
            selectedSet      = new OrderedSet <string>();

            var wrappedList = new RelativePosition(0, 1)
                              .Add(new Frame(Style.DarkGrayOnDefault)
                                   .Add(list));
            var wrappedSelected = new RelativePosition(40, 1, 1)
                                  .Add(new Frame(Style.DarkGrayOnDefault)
                                       .Add(selectedWidget));

            RootContainer = new BaseContainer()
                            .Add(new RelativePosition(0, 0, 1)
                                 .Add(header))
                            .AddFocused(wrappedList)
                            .Add(wrappedSelected);
            RootContainer.AsIKeyHandler()
            .Add(new[] { new KeySelector(ConsoleKey.F10), new KeySelector(ConsoleKey.Q) },
                 () => RootContainer.Loop.OnStop = () => Console.WriteLine("До новых встреч!"));
            list.AsIKeyHandler()
            .Add(new[] { new KeySelector('/'), new KeySelector('\\') }, () => ChangeDir(null))
            .Add(new KeySelector(ConsoleKey.Tab), () => RootContainer.Focused = wrappedSelected);
            selectedWidget.AsIKeyHandler()
            .Add(new KeySelector(ConsoleKey.Tab), () => RootContainer.Focused = wrappedList);
        }