protected override IList <IDataRule> ProvideContextData(ITextControl textControl, IProject project, ISolution solution) { var dataRules = base.ProvideContextData(textControl, project, solution); var ret = myDrivenTextBase.ProvideContextData(project, textControl); dataRules.AddRange(ret); if (!ret.IsEmpty()) { return(dataRules); } dataRules.AddRule("Test", DocumentModelDataConstants.DOCUMENT, textControl.Document); dataRules.AddRule("Test", ProjectModelDataConstants.PROJECT, project); dataRules.AddRule("Test", PsiDataConstants.REFERENCE, ctx => { var references = TextControlToPsi.GetReferencesAtCaret(solution, textControl); return(references != null ? references.FirstOrDefault() : null); }); dataRules.AddRule("Test", PsiDataConstants.REFERENCES, ctx => TextControlToPsi.GetReferencesAtCaret(solution, textControl)); dataRules.AddRule("Test", ProjectModelDataConstants.PROJECT_MODEL_ELEMENT, ctx => null); dataRules.AddRule("Test", PsiDataConstants.SELECTED_EXPRESSION, ctx => ExpressionSelectionUtil.GetSelectedExpression <ITreeNode>(Solution, textControl, false)); dataRules.AddRule("Test", DocumentModelDataConstants.EDITOR_CONTEXT, ctx => textControl.Selection.HasSelection() ? new DocumentEditorContext(textControl.Selection.OneDocumentRangeWithCaret()) : null); return(dataRules); }
public static IDataContext Create(Lifetime lifetime, ITextControl textControl, ISolution solution) { var provider = new List <IDataRule>(); provider.AddRule("Test", PsiDataConstants.DECLARED_ELEMENTS, ctx => TextControlToPsi.GetDeclaredElements(solution, textControl).ToDeclaredElementsDataConstant()); provider.AddRule("Test", JetBrains.TextControl.DataContext.TextControlDataConstants.TEXT_CONTROL, textControl); provider.AddRule("Test", JetBrains.ProjectModel.DataContext.ProjectModelDataConstants.SOLUTION, solution); provider.AddRule("Test", PsiDataConstants.REFERENCE, ctx => TextControlToPsi.GetReferencesAtCaret(solution, textControl).FirstOrDefault()); provider.AddRule("Test", PsiDataConstants.SELECTED_EXPRESSION, ctx => ExpressionSelectionUtil.GetSelectedExpression <ITreeNode>(solution, textControl, false)); return(Shell.Instance.GetComponent <IActionManager>().DataContexts.CreateWithDataRules(lifetime, provider)); }