How to get the selected node in the package explorer from an Eclipse plugin
Asked Answered
T

2

18

I'm writing an Eclipse command plugin and want to retrieve the currently selected node in the package explorer view. I want to be able to get the absolute filepath, where the selected node resides on the filesystem (i.e. c:\eclipse\test.html), from the returned result.

How do I do this ?

Translucid answered 25/2, 2009 at 12:32 Comment(0)
T
33

The first step is to get a selection service, e.g. from any view or editor like this:

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

Or, as VonC wrote, you could get it via the PlatformUI, if you are neither in a view or an editor.

Then, get the selection for the Package Explorer and cast it to an IStructuredSelection:

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

From that, you can get your selected IFile:

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

Now to get the full path, you will have to get the location for the IFile:

IPath path = file.getLocation();

Which you then can finally use to get the real full path to your file (among other things):

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

You can find more information on the selection service here: Using the Selection Service.

Tuinal answered 25/2, 2009 at 13:34 Comment(4)
"viewed 9 times"... nobody look those questions ;) Anyway, well detailed answer. +1Idolater
When getting the selection from the package explorer, the elements are not instances if IFile. You need to perform JDT->resource conversions.Hinckley
@Hinckley The cast throws an exception indeed. But what do you mean perform JDT->resource conversionTussis
Where is "org.eclipse.jdt.ui.PackageExplorer" defined as a constant? Dont like magic strings.Khat
I
16

The code would be like:

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

You view an example in an Action like this LuaFileWizardAction class.

Idolater answered 25/2, 2009 at 12:54 Comment(1)
Your link to LuaFileWizardAction class seems to be broken. It redirects to blackducksoftware.comJudd

© 2022 - 2024 — McMap. All rights reserved.