2009-02-25 4 views
17

Eclipse 명령 플러그인을 작성 중이며 패키지 탐색기보기에서 현재 선택된 노드를 검색하려고합니다. 선택된 노드가 파일 시스템 (즉, c : \ eclipse \ test.html)에 상주하는 절대 파일 경로를 리턴 할 수 있기를 원합니다.Eclipse 플러그인에서 패키지 탐색기에서 선택된 노드를 얻는 방법

어떻게하면됩니까? 당신이 LuaFileWizardAction class 같은 작업의 예를 볼 수

IWorkbenchWindow window = 
    PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 
ISelection selection = window.getSelectionService().getSelection("org.eclipse.jdt.ui.PackageExplorer"); 

: 같은

답변

15

코드가 될 것이다.

+1

아론 편집 해 주셔서 감사합니다. 그 코드를 잘못 추출했습니다 ... – VonC

+0

LuaFileWizardAction 클래스에 대한 귀하의 링크가 고장난 것 같습니다. 그것은 리디렉션 http://www.blackducksoftware.com/ – David

+0

@ David 감사합니다. 링크를 업데이트했습니다. – VonC

32

첫 번째 단계는 선택 서비스를받는 것입니다. 이 같은 뷰와 편집기에서 : 당신이보기 또는 편집기에서 어느 경우

ISelectionService service = getSite().getWorkbenchWindow() 
      .getSelectionService(); 

또는 as VonC wrote, 당신은 PlatformUI 통해 얻을 수 있습니다.

IFile file = (IFile) structured.getFirstElement(); 

지금의 전체 경로를 얻을 : 당신이 당신의 선택 IFILE 얻을 수 있습니다, 그에서

IStructuredSelection structured = (IStructuredSelection) service 
      .getSelection("org.eclipse.jdt.ui.PackageExplorer"); 

:

그런 다음, 패키지 탐색기에 대한 선택을 얻을하고 IStructuredSelection에 캐스팅 , 당신은 IFile을위한 위치를 얻어야 할 것입니다 :

IPath path = file.getLocation(); 

그럼 당신은 마침내 할 수 있습니다 (다른 것들 사이) 파일에 대한 실제 전체 경로를 얻기 위해 사용 Using the Selection Service :

System.out.println(path.toPortableString()); 

현재 선택 서비스에 대한 자세한 정보를 찾을 수 있습니다.

+1

"viewed 9 times"... 아무도 그 질문을 본다;) 어쨌든, 자세한 대답. +1 – VonC

+3

패키지 탐색기에서 선택 항목을 가져올 때 요소는 IFile 인 경우 인스턴스가 아닙니다. JDT-> 자원 변환을 수행해야합니다. – kberg

+0

@kberg 캐스트가 실제로 예외를 throw합니다. 하지만 JDT-> 리소스 변환을 수행한다는 것은 무엇을 의미합니까? – Fofole

관련 문제