コード例 #1
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();
        }
コード例 #2
0
        public void LearnInputForCommandResult(string input, AutoCompletionResult.CommandResult result)
        {
            if (result.IsTransient()) return;

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

            storage.LearnCommandForInput(result.CompletionId, input);
        }
コード例 #3
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;
 }
コード例 #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();
        }