2014-12-23 2 views
0

Eclipse IDE로 작업하고 있습니다. 우선 플러그인을 개발하고 싶습니다.이 플러그인을 사용하면 전체 소스 코드를 간단한 문자열로 사용할 수 있습니다.Eclipse 편집기의 현재 소스 코드를 가져 옵니까?

"hello world 명령"템플릿을 사용하여 간단한 "hello the world"플러그인을 만들었습니다. 이제는 Eclipse의 편집기에서 소스 코드를 가져 와서 System.out.println()으로 표시하려고합니다. 성명서에 HELLO THE WORLD를 보여주는 대신에.

나는 이것을 시도했지만 내 프로젝트 인 packageName/src/nameOfClass의 계층 적 시퀀스만을 보여 주었다.

System.out.println(
    Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput() 
); 

내 목표는 클래스 자체의 소스 코드 (public class nameOfClass {***})를 얻는 것입니다.

+0

감사는 의 모든하지만 난 생각, 내가 "IDocument"또 다른 문제가 있어요, 내 이클립스처럼 보인다는 가져 오기, 심지어는 다시 – steevn

답변

1

처음 사용하지 마십시오 Workbench 이것은 내부 클래스이므로 사용하지 않아야합니다. PlatformUI을 사용하여 워크 벤치를 가져 오십시오.

IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); 

if (editor instanceof ITextEditor) 
{ 
    ITextEditor textEditor = (ITextEditor)editor; 

    IDocumentProvider provider = textEditor.getDocumentProvider(); 

    IEditorInput input = editor.getEditorInput(); 

    IDocument document = provider.getDocument(input); 

    String text = document.get(); 

    ... 
} 

참고 :이 점검 될 필요가 있으므로 모든 편집자합니다 (ITextEditor 인스턴스가 위의 확인) 텍스트 편집기입니다.

+0

답 : 감사에 대한 같으면 대기 무엇인지한다 IEditorPart를 내용을 제공 할 수있는 것으로 변경하는 것이 더 낫지 않습니까? 나에게는 Eclipse SDK가 없으므로 편집자가 일반적으로 적응할 수있는 인터페이스가 무엇인지 모르겠지만 과거에는 그런 식으로 일하는 것을 기억합니다. –

+0

@ E-Riz 편집기에서 스타일이 지정된 텍스트 컨트롤을 사용할 수 있지만이 코드는 더 일반적입니다. –

+0

아니요,'IEditorPart'에서'getAdapter()'를 사용하여 내용, EditorInput 또는 문서를 직접 반환하는 것으로 변경하려고 생각했습니다. 일반적으로 이클립스 플랫폼은 인스턴스와 캐스트에 대한 Adaptable의 사용을 권장합니다. –

관련 문제