1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.Core;
6
using ICSharpCode.SharpDevelop.Dom;
7
using ICSharpCode.SharpDevelop.Gui;
9
namespace ICSharpCode.SharpDevelop.Editor.Commands
12
/// A menu command that uses the symbol under the editor's caret.
14
public abstract class SymbolUnderCaretMenuCommand : AbstractMenuCommand
16
public override void Run()
18
ITextEditorProvider editorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
19
if (editorProvider != null) {
20
Run(editorProvider.TextEditor, editorProvider.TextEditor.Caret.Offset);
24
public void Run(ITextEditor editor, int caretOffset)
26
var resolveResult = ParserService.Resolve(caretOffset, editor.Document, editor.FileName);
27
RunImpl(editor, caretOffset, resolveResult);
30
protected abstract void RunImpl(ITextEditor editor, int caretOffset, ResolveResult symbol);
32
public IClass GetClass(ResolveResult symbol)
34
if (symbol == null || !(symbol is TypeResolveResult)) {
37
return ((TypeResolveResult)symbol).ResolvedClass;
40
public IMember GetMember(ResolveResult symbol)
42
if (symbol == null || !(symbol is MemberResolveResult)) {
45
return ((MemberResolveResult)symbol).ResolvedMember;