예제 #1
0
        public FileOptionsPanel(ImmutableList <File> f, AbstractHierarchicalDictionary <KeyStroke, string> inputMap)
        {
            TextComponent fileName;

            Strategy = new BorderStrategy();

            var topParent = new Parent(new LineStrategy {
                Orientation = Orientation.Vertical
            });

            AddComponent(topParent, BorderStrategy.Top);
            fileName = new TextComponent(f == null ? "Current directory options" :
                                         f.Count == 1 ? f[0].GetFileName() : f.Count + " files...")
            {
                HAlign = HorizontalAlignment.Centered
            };
            topParent.AddComponent(fileName);
            topParent.AddComponent(new Separator());

            var table = new TableComponent <FileOption>
            {
                Data = new ObservableCollection <FileOption>(f == null
                    ? FileOption.OptionsForCurrentDirectory
                                                             .Where(opt => opt.CanActionBeApplied?.Invoke(null, null) ?? true).ToList()
                    : FileOption.Options
                                                             .Where(opt => opt.CanActionBeApplied(f, null)).ToList()),
                ShowHeader = false
            };

            table.AddColumn(new IndicatorColumnType <FileOption>());
            table.AddColumn(new BasicColumnType <FileOption>("", option => option.Title)
            {
                GrowPriority = 1
            });
            table.AddColumn(
                new BasicColumnType <FileOption>("", option => SearchForShortcut(option.ActionName, inputMap))
            {
                HAlign = HorizontalAlignment.Right
            });
            table.ActionOnListElement += (sender, args) => { RemovalCallback(args.Item.ActionName, args.Graphics); };
            AddComponent(table, BorderStrategy.Center);

            var btn = new Button("Back");

            btn.ActionOnComponent += (sender, args) => RemovalCallback?.Invoke(null, args.Graphics);
            AddComponent(btn, BorderStrategy.Bottom);

            ActionMap.Put(StandardActionNames.CancelAction, (o, args) => RemovalCallback?.Invoke(null, args.Graphics));
        }
예제 #2
0
        /// <summary>
        /// Returns new instance of a Rover object
        /// </summary>
        /// <param name="coordX">Rover's starting coordinate on the X axis</param>
        /// <param name="coordY">Rover's starting coordinate on the Y axis</param>
        /// <param name="directionInfo">Rover's facing direction</param>
        /// <param name="chosenBorderStrategy">Chosen BorderStrategy for the Rover</param>
        /// <returns>New instance of a Rover object</returns>
        public static Rover GetNewRover(int coordX, int coordY, char directionInfo, BorderStrategy chosenBorderStrategy)
        {
            if (coordX < chosenBorderStrategy.lowerBoundryBorderCoordinates.coordX || coordY < chosenBorderStrategy.lowerBoundryBorderCoordinates.coordY || coordX > chosenBorderStrategy.upperBoundryBorderCoordinates.coordX || coordY > chosenBorderStrategy.upperBoundryBorderCoordinates.coordY)
            {
                throw new OutOfPlateauException();
            }

            Rover NewRover = new Rover
            {
                currentDirection     = DirectionFactory.GetDirection(directionInfo),
                chosenBorderStrategy = chosenBorderStrategy,
                currentCoordinates   = new Coordinates(coordX, coordY)
            };

            return(NewRover);
        }