Example #1
0
        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;
        }
Example #2
0
        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));
        }
Example #3
0
        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();
        }
Example #4
0
        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));
        }