public TokenViewModel(Expression <Func <T, string> > selector, T initialValue, IList <string> tokens, Func <string, string> generatePreview, IList <Func <string, Option <string> > > buttonCommandFunctions) { if (RestrictedServiceLocator.IsLocationProviderSet) { var translationUpdater = RestrictedServiceLocator.Current.GetInstance <ITranslationUpdater>(); translationUpdater.RegisterAndSetTranslation(this); } _getter = selector.Compile(); var newValue = Expression.Parameter(selector.Body.Type); _setter = Expression.Lambda <Action <T, string> >( Expression.Assign(selector.Body, newValue), selector.Parameters[0], newValue).Compile(); foreach (var command in buttonCommandFunctions) { ButtonCommands.Add(new DelegateCommand(_ => ExecuteButtonCommand(command))); } _generatePreview = generatePreview; SetTokens(tokens); CurrentValue = initialValue; }
private void AddComplexTaskButton() { const int followWallBeaconId = 3; var lineState = new UntilBeaconDecorator( new FollowingLineState(), followWallBeaconId, null); var wallState = new UntilLineAppearsDecorator( new FollowingWallOnLeftState(turnSpeed: 5), lineState); lineState.Follower = wallState; ButtonCommands.Add(new CommandButton("Task2", Brain, lineState)); }
private void InitButtonCommands() { ButtonCommands.Add(new CommandButton("Follow line", Brain, new FollowingLineState(5.0))); ButtonCommands.Add(new CommandButton("Follow left wall", Brain, new FollowingWallOnLeftState())); ButtonCommands.Add(new CommandButton("Follow right wall", Brain, new FollowingWallOnRightState())); ButtonCommands.Add(new CommandButton("Cruise", Brain, new CruiseState())); ButtonCommands.Add(new CommandButton("Turn left", Brain, new RotateState(-5.0))); ButtonCommands.Add(new CommandButton("Turn right", Brain, new RotateState(5.0))); ButtonCommands.Add(new CommandButton("Stop", Brain, new StopState())); AddBeaconAccelerationTaskButton(); AddComplexTaskButton(); }
private void AddBeaconAccelerationTaskButton() { const int accelerationBeaconId = 3; const int decelerationBeaconId = 1; var followSlowly = new FollowingLineState(4); var followFaster = new FollowingLineState(6); var slowState = new UntilBeaconDecorator( followSlowly, accelerationBeaconId, null); var fastState = new UntilBeaconDecorator( followFaster, decelerationBeaconId, slowState); slowState.Follower = fastState; ButtonCommands.Add(new CommandButton("Task1", Brain, slowState)); }