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)); }
protected override void DoTest(IProject testProject) { CaretPosition caretPos = GetCaretPosition(); using (ITextControl textControl = OpenTextControl(testProject, caretPos)) { IDeclaredElement declaredElement = TextControlToPsi.GetDeclaredElements(Solution, textControl).FirstOrDefault(); Assert.IsNotNull(declaredElement); Solution.GetComponent <CallRenameUtil>().CallRename(declaredElement, textControl, "xxx"); CheckTextControl(textControl); } }
public bool IsAvailable(IUserDataHolder cache) { if (!myProvider.Solution.GetComponent <MarksService>().Enabled.Value) { return(false); } bool x; var declaredElements = TextControlToPsi.GetDeclaredElements(myProvider.Solution, myProvider.Document, myProvider.CaretOffset, out x); foreach (var declaredElement in declaredElements) { if (declaredElement.ShortName == ZoneConstants.ZoneAttributeName) { return(true); } } return(false); }
protected override Action <JetBrains.TextControl.ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress) { if (!this.Highlighting.IsValid()) { return(null); } var node = this.Highlighting.Node; var badWordTextRange = this.Highlighting.CalculateRange().TextRange; var newText = StringUtil.ReplaceSection(node.GetText(), this.Suggestion, badWordTextRange.StartOffset - node.GetDocumentRange().TextRange.StartOffset, badWordTextRange.Length); if (node is IIdentifier) { return(textControl => { var declaredIdentifier = TextControlToPsi.GetDeclaredElements(solution, textControl).FirstOrDefault(); solution.GetComponent <RenameRefactoringExecutor>().Execute(declaredIdentifier, textControl, newText); }); } if (node is IComment) { var elementFactory = CSharpElementFactory.GetInstance(node.GetPsiModule()); var newComment = elementFactory.CreateComment(newText); ModificationUtil.ReplaceChild(node, newComment); return(null); } if (node is IExpression) { var expression = node as IExpression; if (expression.ConstantValue.IsString()) { var elementFactory = CSharpElementFactory.GetInstance(node.GetPsiModule()); var newStringLiteral = elementFactory.CreateExpression("$0", newText); ModificationUtil.ReplaceChild(node, newStringLiteral); return(null); } } return(null); }
protected override void DoTest(Lifetime lifetime, IProject testProject) { var textControl = OpenTextControl(TestLifetime); var document = textControl.Document; var projectFile = Solution.GetComponent <DocumentManager>().TryGetProjectFile(document); Assert.IsNotNull(projectFile, "projectFile == null"); var context = CreateDataContext(textControl); var declaredElement = TextControlToPsi.GetDeclaredElements(Solution, textControl).SingleOrDefault(); Exception exception = null; if (declaredElement != null) { try { TestAdditionalInfo(declaredElement, projectFile); } catch (Exception e) { exception = e; } } var quickDocService = Solution.GetComponent <IQuickDocService>(); Assert.IsTrue(quickDocService.CanShowQuickDoc(context), "No QuickDoc available"); quickDocService.ResolveGoto(context, (presenter, language) => ExecuteWithGold(projectFile, writer => { var text = presenter.GetHtml(language).Text?.Text; Assert.NotNull(text); var startIdx = text.IndexOf(" <head>", StringComparison.Ordinal); var endIdx = text.IndexOf("</head>", StringComparison.Ordinal) + "</head>".Length; Assert.AreEqual(string.CompareOrdinal(text, endIdx, "\n<body>", 0, "\n<body>".Length), 0); writer.Write(text.Remove(startIdx, endIdx - startIdx + 1)); })); if (exception != null) { throw exception; } }
protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress) { if (!Highlighting.IsValid()) { return(null); } var node = Highlighting.Node; var badWordTextRange = Highlighting.Range.TextRange; var newText = StringUtil.ReplaceSection( node.GetText(), Suggestion, badWordTextRange.StartOffset - node.GetDocumentRange().TextRange.StartOffset, badWordTextRange.Length ); if (node is IIdentifier) { return(textControl => { var declaredIdentifier = TextControlToPsi.GetDeclaredElements(solution, textControl) .FirstOrDefault(); solution.GetComponent <RenameRefactoringExecutor>().Execute(declaredIdentifier, textControl, newText); }); } if (node is IComment) { var newElement = CreateNode(node, newText); ModificationUtil.ReplaceChild(node, newElement); return(null); } if (JavaScriptUtil.IsStringLiteral(node)) { var newElement = CreateNode(node, newText); ModificationUtil.ReplaceChild(node, newElement); return(null); } return(null); }