protected IEnumerable <BulbMenuItem> GetEventFunctionActions(ICSharpDeclaration declaration) { var result = new List <BulbMenuItem>(); if (declaration is IMethodDeclaration methodDeclaration) { var declaredElement = methodDeclaration.DeclaredElement; var textControl = Solution.GetComponent <ITextControlManager>().LastFocusedTextControl.Value; if (textControl != null && declaredElement != null) { var isCoroutine = IsCoroutine(methodDeclaration, UnityApi); if (isCoroutine.HasValue) { IBulbAction bulbAction; if (isCoroutine.Value) { bulbAction = new ConvertFromCoroutineBulbAction(methodDeclaration); } else { bulbAction = new ConvertToCoroutineBulbAction(methodDeclaration); } result.Add(new BulbMenuItem( new IntentionAction.MyExecutableProxi(bulbAction, Solution, textControl), bulbAction.Text, BulbThemedIcons.ContextAction.Id, BulbMenuAnchors.FirstClassContextItems)); } if (UnityApi.IsEventFunction(declaredElement)) { var documentationNavigationAction = new DocumentationNavigationAction( Solution.GetComponent <ShowUnityHelp>(), declaredElement, UnityApi); result.Add(new BulbMenuItem( new IntentionAction.MyExecutableProxi(documentationNavigationAction, Solution, textControl), documentationNavigationAction.Text, CommonThemedIcons.Question.Id, BulbMenuAnchors.FirstClassContextItems)); } } } return(result); }
protected IReadOnlyList <BulbMenuItem> GetEventFunctionActions(ICSharpDeclaration declaration, IReadOnlyCallGraphContext context) { if (!(declaration is IMethodDeclaration methodDeclaration)) { return(EmptyList <BulbMenuItem> .Instance); } var declaredElement = methodDeclaration.DeclaredElement; var textControl = mySolution.GetComponent <ITextControlManager>().LastFocusedTextControl.Value; if (textControl == null || declaredElement == null) { return(EmptyList <BulbMenuItem> .Instance); } var isCoroutine = IsCoroutine(methodDeclaration, UnityApi); var result = GetBulbMenuItems(declaration, context) as List <BulbMenuItem> ?? new List <BulbMenuItem>(); if (isCoroutine.HasValue) { var bulbAction = isCoroutine.Value ? (IBulbAction) new ConvertFromCoroutineBulbAction(methodDeclaration) : new ConvertToCoroutineBulbAction(methodDeclaration); var menuITem = UnityCallGraphUtil.BulbActionToMenuItem(bulbAction, textControl, mySolution, BulbThemedIcons.ContextAction.Id); result.Add(menuITem); } if (UnityApi.IsEventFunction(declaredElement)) { var showUnityHelp = mySolution.GetComponent <ShowUnityHelp>(); var documentationNavigationAction = new DocumentationNavigationAction(showUnityHelp, declaredElement, UnityApi); var menuItem = UnityCallGraphUtil.BulbActionToMenuItem(documentationNavigationAction, textControl, mySolution, CommonThemedIcons.Question.Id); result.Add(menuItem); } return(result); }
public IEnumerable <BulbMenuItem> CreateBulbItemsForUnityDeclaration(IDeclaration declaration) { var unityApi = Solution.GetComponent <UnityApi>(); var textControl = TextControlManager.LastFocusedTextControl.Value; if (textControl != null) { var result = new List <BulbMenuItem>(); if (declaration is IClassLikeDeclaration classDeclaration) { var fix = new GenerateUnityEventFunctionsFix(classDeclaration); result.Add( new BulbMenuItem(new IntentionAction.MyExecutableProxi(fix, Solution, textControl), "Generate Unity event functions", PsiFeaturesUnsortedThemedIcons.FuncZoneGenerate.Id, BulbMenuAnchors.FirstClassContextItems) ); } if (declaration is IMethodDeclaration methodDeclaration) { var declaredElement = methodDeclaration.DeclaredElement; if (declaredElement != null) { var isCoroutine = IsCoroutine(methodDeclaration, unityApi); if (isCoroutine.HasValue) { IBulbAction bulbAction; if (isCoroutine.Value) { bulbAction = new ConvertFromCoroutineBulbAction(methodDeclaration); } else { bulbAction = new ConvertToCoroutineBulbAction(methodDeclaration); } result.Add(new BulbMenuItem( new IntentionAction.MyExecutableProxi(bulbAction, Solution, textControl), bulbAction.Text, BulbThemedIcons.ContextAction.Id, BulbMenuAnchors.FirstClassContextItems)); } if (unityApi.IsEventFunction(declaredElement)) { var documentationNavigationAction = new DocumentationNavigationAction( Solution.GetComponent <ShowUnityHelp>(), declaredElement, unityApi); result.Add(new BulbMenuItem( new IntentionAction.MyExecutableProxi(documentationNavigationAction, Solution, textControl), documentationNavigationAction.Text, BulbThemedIcons.ContextAction.Id, BulbMenuAnchors.FirstClassContextItems)); } } } result.AddRange(CreateAdditionalMenuItem(declaration, unityApi, textControl)); return(result); } return(EmptyList <BulbMenuItem> .Enumerable); }