Saturday, August 8, 2009

Is there a better way to programmatically retrieve a local variable IType from an EditorAction text selection in Eclipse?

public class MyEditorAction extends EditorAction {

/**
* @param unitEditor
* @return
*/
private IDocument getDocument(final CompilationUnitEditor unitEditor) {
IDocumentProvider provider = unitEditor.getDocumentProvider();
IEditorInput input = unitEditor.getEditorInput();
IDocument document = provider.getDocument(input);
return document;
}

public void runAction() {
if (getTargetEditor() instanceof CompilationUnitEditor) {

CompilationUnitEditor unitEditor = (CompilationUnitEditor) getTargetEditor();
ICompilationUnit varContainerUnit = (ICompilationUnit) unitEditor.getViewPartInput();

IDocument document = getDocument(unitEditor);

try {
JavaTextSelection javaSelection = new JavaTextSelection(varContainerUnit.getTypes()[0].getTypeRoot(),
document, getTextSelection().getOffset(), getTextSelection().getLength());


ILocalVariable localVar = (ILocalVariable) javaSelection.resolveElementAtOffset()[0];
String varQualifiedTypeName = Signature.getSignatureSimpleName(localVar.getTypeSignature());
//At this point with variable's container unit and qualified type name, use search engine to retrieve IType...

IType varType = SearchEngine.getVarType(varQualifiedTypeName, varContainerUnit);
}
}

No comments:

Post a Comment