Eclipse Plugin: Wie kann der absolute Dateipfad einer selektierten Datei aus der View des Package oder Project Explorer ermittelt werden?

Erstellt am 21. Februar 2015 von It_berater

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:

/**
	 * 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:

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:

System.out.println("Plattform Arbeitsverzeichnis: " + Platform.getLocation());

Ähnliche Artikel:

  1. Explorer Plugin für Eclipse
  2. Jar2UML Plugin für Eclipse
  3. APT (Almost Plain Text) Editor Plugin für Eclipse Juno: Apache Doxia.