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(); }
public void LearnInputForCommandResult(string input, AutoCompletionResult.CommandResult result) { if (result.IsTransient()) return; var storage = _sourceStorageFactory.SourceStorageFor(result.CompletionId.SourceId); storage.LearnCommandForInput(result.CompletionId, input); }
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; }
public void LearnActionForCommandResult(string input, IActOnItem selectedAction, AutoCompletionResult.CommandResult result) { if (result.IsTransient()) return; LearnForResult(result, selectedAction); LearnForType(result.Item.GetType(), selectedAction); }
private void LearnForResult(AutoCompletionResult.CommandResult result, IActOnItem selectedAction) { _learnings[result.CompletionId.GetLearningId()] = selectedAction; }
private void SetActionsForResult(AutoCompletionResult.CommandResult result) { Actions = _getActionsForItem.ActionsForItem(result); SelectedAction = Actions.FirstOrDefault(); }