public override bool IsAvailable(IDataContext dataContext) { var textControl = dataContext.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL); ISolution solution = dataContext.GetData(ProjectModel.DataContext.DataConstants.SOLUTION); var token = TextControlToPsi.GetSourceTokenAtCaret(solution, textControl); RuleDeclaration ruleDeclaration = null; if (token.Parent is IRuleDeclaredName) { ruleDeclaration = token.Parent.Parent as RuleDeclaration; } else if (token.Parent is IRuleName) { var reference = (token.Parent as IRuleName).RuleNameReference; var declaredElement = reference.Resolve().DeclaredElement; ruleDeclaration = declaredElement as RuleDeclaration; } else if (token.Parent is IPathName) { var reference = (token.Parent as IPathName).RuleNameReference; var declaredElement = reference.Resolve().DeclaredElement; ruleDeclaration = declaredElement as RuleDeclaration; } if (ruleDeclaration != null) { var psiFile = ruleDeclaration.GetContainingNode <PsiFile>(); if (psiFile != null) { psiFile.CollectDerivedElements(ruleDeclaration); } return(HasDerivedElements(ruleDeclaration)); } return(false); }
public override bool IsApplicable(IDataContext dataContext) { var textControl = dataContext.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL); ISolution solution = dataContext.GetData(ProjectModel.DataContext.DataConstants.SOLUTION); var token = TextControlToPsi.GetSourceTokenAtCaret(solution, textControl); if ((token.Parent is IRuleName) || (token.Parent is IRuleDeclaredName) || (token.Parent is PathName)) { return(true); } return(false); }
public override bool IsApplicable(IDataContext dataContext) { //return IsAvailable(dataContext); var textControl = dataContext.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL); ISolution solution = dataContext.GetData(ProjectModel.DataContext.DataConstants.SOLUTION); var token = TextControlToPsi.GetSourceTokenAtCaret(solution, textControl); if ((token.Parent is IReferenceName) || token.Parent is IClassDeclaration || token.Parent is IConstructorDeclaration || token.Parent is IMethodDeclaration || token.Parent is IInterfaceDeclaration) { return(true); } return(false); }
public override bool IsAvailable(IDataContext dataContext) { var textControl = dataContext.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL); ISolution solution = dataContext.GetData(ProjectModel.DataContext.DataConstants.SOLUTION); var token = TextControlToPsi.GetSourceTokenAtCaret(solution, textControl); var referenceName = token.Parent as IReferenceName; if (referenceName != null) { if (referenceName.Reference.CurrentResolveResult != null) { var declaredElement = referenceName.Reference.CurrentResolveResult.DeclaredElement; var @class = declaredElement as IClass; if (@class != null) { return(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class) != null); } var @method = declaredElement as IMethod; if (@method != null) { return(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForMethod(@method) != null); } var @interface = declaredElement as IInterface; if (@interface != null) { return(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForInterface(@interface) != null); } } return(false); } var classDeclaration = token.Parent as IClassDeclaration; if (classDeclaration != null) { var @class = classDeclaration.DeclaredElement as IClass; return((@class != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class) != null)); } var methodDeclaration = token.Parent as IMethodDeclaration; if (methodDeclaration != null) { var @method = methodDeclaration.DeclaredElement; return((@method != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForMethod(@method) != null)); } var interfaceDeclaration = token.Parent as IInterfaceDeclaration; if (interfaceDeclaration != null) { var @interface = interfaceDeclaration.DeclaredElement as IInterface; return((@interface != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForInterface(@interface) != null)); } var constructorDeclaration = token.Parent as IConstructorDeclaration; if (constructorDeclaration != null) { var @class = constructorDeclaration.GetContainingTypeDeclaration().DeclaredElement as IClass; return((@class != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class) != null)); } return(false); }