public void LearnInputForCommandResult(string input, AutoCompletionResult.CommandResult result)
        {
            if (result.IsTransient())
            {
                return;
            }

            var storage = _sourceStorageFactory.SourceStorageFor(result.CompletionId.SourceId);

            storage.LearnCommandForInput(result.CompletionId, input);
        }
Пример #2
0
        private IActOnItem ActionForResult(AutoCompletionResult.CommandResult result)
        {
            IActOnItem actionForResult = null;

            if (result.CompletionId != null)
            {
                var sha1 = result.CompletionId.GetLearningId();
                if (_learnings.ContainsKey(sha1))
                {
                    actionForResult = _learnings[sha1];
                }
            }
            return(actionForResult);
        }
Пример #3
0
        public IEnumerable <IActOnItem> ActionsForItem(AutoCompletionResult.CommandResult result)
        {
            if (result == null)
            {
                return new IActOnItem[] {}
            }
            ;
            var item    = result.Item;
            var actions = new List <IActOnItem>();

            var defaultActionForItem = DefaultActionForResult(result.Item);

            if (defaultActionForItem != null && defaultActionForItem.CanActOn(item))
            {
                actions.Add(defaultActionForItem);
            }

            var actionForResult = ActionForResult(result);

            if (actionForResult != null && actionForResult.CanActOn(item))
            {
                actions.Add(actionForResult);
            }
            var actionForType = ActionForType(item.GetType());

            if (actionForType != null && actionForType.CanActOn(item))
            {
                actions.Add(actionForType);
            }

            var actionsForItem = Actions
                                 .Where(a => a.TypedItemType.IsInstanceOfType(item.Item))
                                 .Where(a => a.CanActOn(item))
                                 .OrderBy(c => c.Text);

            return(actions.Concat(actionsForItem)
                   .Distinct());
        }
Пример #4
0
 public void LearnActionForCommandResult(string input, IActOnItem selectedAction, AutoCompletionResult.CommandResult result)
 {
     if (result.IsTransient())
     {
         return;
     }
     LearnForResult(result, selectedAction);
     LearnForType(result.Item.GetType(), selectedAction);
 }
Пример #5
0
 private void LearnForResult(AutoCompletionResult.CommandResult result, IActOnItem selectedAction)
 {
     _learnings[result.CompletionId.GetLearningId()] = selectedAction;
 }
Пример #6
0
 private void SetActionsForResult(AutoCompletionResult.CommandResult result)
 {
     Actions        = _getActionsForItem.ActionsForItem(result);
     SelectedAction = Actions.FirstOrDefault();
 }