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)); }
/// <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); }