Как получить выбранный узел в проводнике пакетов из плагина Eclipse

Я пишу подключаемый модуль команд Eclipse и хочу получить текущий выбранный узел в представлении проводника пакетов. Я хочу получить абсолютный путь к файлу, где выбранный узел находится в файловой системе (например, c: \ eclipse \ test.html), из возвращенного результата.

Как мне это сделать ?

Ответов (2)

Первый шаг - получить услугу выбора, например, из любого вида или редактора, подобного этому:

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

Или, как писал VonC , вы можете получить его через PlatformUI, если вы не находитесь ни в представлении, ни в редакторе.

Затем выберите для проводника пакетов и преобразуйте его в IStructuredSelection:

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

Из этого вы можете получить выбранный IFile:

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

Теперь, чтобы получить полный путь, вам нужно будет определить местоположение IFile:

IPath path = file.getLocation();

Который вы, наконец, можете использовать, чтобы получить реальный полный путь к вашему файлу (среди прочего):

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

Более подробную информацию о службе выбора можно найти здесь: Использование службы выбора .

Код будет примерно таким:

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

Вы просматриваете пример в Action, подобном этому классу LuaFileWizardAction .