Wie kann in Eclipse Luna 4.4.1 aus einem Plugin der absolute Dateipfad einer selektierten Datei aus dem Package oder Project Exporer ermittelt werden?
Das Selection Service wird ja schön hier beschrieben.
Befindet man sich nicht in einer View, sondern in einer Action, kann folgende Methode verwendet werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/** * Liefert den selektierten absoluten Dateipfad aus der Package oder Project * Explorer View. * * @param explorer * Klassennamen des Package oder Projekt Exporers * @return der absolute Dateipfad oder null wenn nichts gewählt oder wenn * ein Projekt gewählt wird. */ private String getAbsolutenDateiPfad(final String explorer) { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IStructuredSelection structured = (IStructuredSelection) window.getSelectionService().getSelection(explorer); if (structured == null) { return null; } Object erstesElement = structured.getFirstElement(); if (erstesElement instanceof IFile) { IFile file = (IFile) structured.getFirstElement(); IPath path = file.getLocation(); return path.toPortableString(); } else { // Keine Projekte: org.eclipse.core.internal.resources.Project return null; } } |
Der Test liefert jeweils den Pfad inkl. Dateiname:
1 2 3 |
System.out.println("Im Package Explorer selektierte Datei: " + getAbsolutenDateiPfad("org.eclipse.jdt.ui.PackageExplorer")); System.out.println("Im Project Explorer selektierte Datei: " + getAbsolutenDateiPfad("org.eclipse.ui.navigator.ProjectExplorer")); |
Braucht man das Plattform Arbeisverzeichnis kann man dies über die folgende static Methode erhalten:
1 |
System.out.println("Plattform Arbeitsverzeichnis: " + Platform.getLocation()); |