2009-02-25 26 views
17

Tôi đang viết một trình cắm thêm lệnh của Eclipse và muốn truy xuất nút hiện được chọn trong khung nhìn trình thám hiểm gói. Tôi muốn có thể lấy filepath tuyệt đối, nơi nút được chọn nằm trên hệ thống tập tin (ví dụ: c: \ eclipse \ test.html), từ kết quả trả về.Cách lấy nút đã chọn trong trình thám hiểm gói từ một trình cắm thêm Eclipse

Làm cách nào để thực hiện việc này?

Trả lời

15

Mã này sẽ như thế nào:

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

Bạn xem ví dụ trong một hành động như LuaFileWizardAction class này.

+1

Cảm ơn bạn đã chỉnh sửa, Aaron. Tôi đã trích xuất sai mã đó ... – VonC

+0

Liên kết của bạn tới lớp LuaFileWizardAction dường như bị hỏng. Nó chuyển hướng đến http://www.blackducksoftware.com/ – David

+0

@David cảm ơn bạn. Tôi đã cập nhật liên kết. – VonC

32

Bước đầu tiên là nhận dịch vụ lựa chọn, ví dụ: từ bất kỳ xem hoặc biên tập như thế này:

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

Hoặc, as VonC wrote, bạn có thể nhận được nó thông qua PlatformUI, nếu bạn không phải trong một cái nhìn hay một biên tập viên.

Sau đó, có được sự lựa chọn cho Package Explorer và đúc nó vào một IStructuredSelection:

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

Từ đó, bạn có thể nhận được iFile chọn của bạn:

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

Bây giờ để có được đường dẫn đầy đủ , bạn sẽ phải nhận vị trí cho IFile:

IPath path = file.getLocation(); 

Sau đó bạn có thể cuối cùng sử dụng để có được những đường dẫn đầy đủ thực để tập tin của bạn (trong số những thứ khác):

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

Bạn có thể tìm thêm thông tin về các dịch vụ lựa chọn ở đây: Using the Selection Service.

+1

"đã xem 9 lần" ... không ai xem những câu hỏi đó;) Dù sao, câu trả lời chi tiết cũng được. +1 – VonC

+3

Khi nhận được lựa chọn từ trình thám hiểm gói, các phần tử không phải là trường hợp nếu IFile. Bạn cần thực hiện JDT-> chuyển đổi tài nguyên. – kberg

+0

@kberg Các diễn viên ném một ngoại lệ thực sự. Nhưng ý của bạn là thực hiện JDT-> chuyển đổi tài nguyên – Fofole

Các vấn đề liên quan