# datei im editor öffnen(tutorial undurchsichtig)



## Spot84 (18. Dez 2009)

Hallo!
ich würde gerne eine Datei(vom Typ File, liegt nicht im Workspace) in einem Editor öffnen. Eclipse bietet dafür im Wiki auch folgendes Tutorial an, das ich allerdings nicht ganz verstehe..
FAQ How do I open an editor on a file outside the workspace? - Eclipsepedia

die zweite variante funtioniert bei mir ohne Probleme. Die erste allerdings nicht, weil ich nicht weiss was und von welchem Typ names_ ist oder etwa filterPath.

Kann mir da villeicht jemand helfen?



		Java:In die Zwischenablage kopieren


String name= new FileDialog(aShell, SWT.OPEN).open();
if (name == null)
    return;
IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(filterPath));
fileStore = fileStore.getChild(names[i]);
if (!fileStore.fetchInfo().isDirectory() && fileStore.fetchInfo().exists()) {
    IWorkbenchPage page=  window.getActivePage();
    try {
        IDE.openEditorOnFileStore(page, fileStore);
    } catch (PartInitException e) {
        /* some code */
    }
}


Wo ich schon einmal dabei bin würde ich auch gerne fragen ob es zu der ResourceSet eigentlich ein Gegenstück in der Workspace gibt, also so etwas wie IResourceSet? Bei Resource gibt es ja IResource usw.._


----------



## Wildcard (18. Dez 2009)

Schau mal hier:
IFileStore (Eclipse Platform API Specification)


> Wo ich schon einmal dabei bin würde ich auch gerne fragen ob es zu der ResourceSet eigentlich ein Gegenstück in der Workspace gibt, also so etwas wie IResourceSet? Bei Resource gibt es ja IResource usw..


Welches ResourceSet? Das EMF ResourceSet? Das ist schon ein Interface, da braucht man kein IResourceSet mehr.


----------



## Spot84 (18. Dez 2009)

Hallo WildCard!

ja da hatte ich schon geschaut, aber ich werde aus der Beschreibung nicht wirklich schlau.. 

Beschreibung:
Returns a child store with the provided name whose parent is this store. This is a handle-only method; a child is provided regardless of whether this store or the child store exists, or whether this store represents a directory or not. 

Ich weiss  aber ehrlich gesagt nicht mal was der child store sein soll und es wird in der API auch nirgendwo erklärt. Daher hab ich in meinem Beispiel bisher auch nicht die Methode getChild(String) sondern getChild(IPath) genutzt.

Und der FilterPath ist mir auch ein totales Rätsel.

Mein Code sieht derzeit folgendermassen aus:
file ist mein File das ich im Editor darstellen will.

```
IWorkbenchPage page = PlatformUI.getWorkbench()
				.getActiveWorkbenchWindow().getActivePage();

		 IPath location = new Path(file.getAbsolutePath());
		
		 try {
		 IFileStore fileStore = EFS.getLocalFileSystem().getStore(location);
		 fileStore = fileStore.getChild(location);
		
		 IDE.openEditorOnFileStore(page, fileStore);
		 } catch (CoreException e1) {
		 // TODO Auto-generated catch block
		 e1.printStackTrace();
		 }
```

was ich bekomme ist allerdings:
java.lang.ClassCastException: org.eclipse.ui.ide.FileStoreEditorInput cannot be cast to org.eclipse.ui.IFileEditorInput


----------



## Spot84 (18. Dez 2009)

also ich hab jetzt zumindest rausgefunden das wenn ich einen beliebigen String bei getChild einsetze, er mir einen Texteditor mit dem Namen öffnet. Trag ich den Namen meiner Datei ein bekomme ich die gleiche Exception wie oben..


----------



## Wildcard (18. Dez 2009)

EFS ist eine Dateissystemabstraktion. Wenn dein Filestore ein Directory ist, liefert childStores die enthaltenen Dateien.
Die Exception die du bekommst bedeutet das der Editor den du zu öffnen versuchst einn IFileEditorInput erwartet. Da du aber kein IFile sondern einen IFileStore hast, kann dieser Editor nichts damit anfangen. Nicht alle Editoren können mit nicht (Workspace-) lokalen Dateien umgehen.


----------



## Spot84 (19. Dez 2009)

Wildcard ich sag mal wieder vielen Dank!!! 
Hast mir wie immer super geholfen


----------

