# Zwei Editoren mit der selben Extension



## code404 (15. Feb 2011)

Hallo zusammen,

ich habe einen modifizierten XML-Editor erstellt. Dieser baut auf dem bereits existierenden XML Editor auf. 
Beide Editoren haben also als File-Extension "xml" registriert. 
Baue ich jetzt mein RCP habe ich das Problem das als Default Editor für XML Dateien (Doppelklick auf die Resource) nicht mein Editor sondern der andere Editor auf geht. Erst wenn ich mit der rechten Maustaste "Open With" mache kann ich meinen Editor auswählen. 
Gibt es eine Möglichkeit (ohne den Basis-XML-Editor zu ändern) meinen Editor als Default zu öffnen?

Besten Dank
code404


----------



## Gonzo17 (15. Feb 2011)

Das Problem hatte ich auch schonmal. Konnte es leider nicht wirklich lösen.

Wie du schreibst gibt es ja in den extensions eine property "default", die man auf "true" setzen muss. Das reicht aber nicht immer. Ich erinnere mich irgendwann irgendwie gesehen zu haben, dass es sowas wie "priority" gab, hab es aber jetzt nichtmehr gefunden. Das doofe war nur, dass es da dann auch wieder Willkür war, wenn zwei Editoren auf "high" bzw "highest" (kA wie es da hieß) gesetztb waren. Deswegen ist das auch recht sinnlos, sofern es eben einen anderen Editor auf höchster Priorität gibt. :bahnhof:


----------



## code404 (15. Feb 2011)

Mhh...also noch ein bisschen überlegen bin ich auf eine, leider nicht so elegante Lösung gestoßen:
Was macht RCP beim Start: es ließt alle plugin.xml Dateien aus den Jar-Files ein und baut sich seine Extensionregistry zusammen.
Die geschieht anscheinend nach dem Alphabet sortiert. 
Der Base-XML Editor ist im jar: org.eclipse... mein eigener war in org.cr...
Also wurde meine plugin.xml zuerst eingelesen und die xml-Extension wurde dann vom Eclipse-XML-Editor überschrieben.
Nenne ich jetzt mein Plugin um, so dass es Alphabetisch nach org.eclipse... kommt, ist mein Editor auch der Standard Editor.
Aber so richtig toll ist das auch nicht :-(


----------



## Gonzo17 (15. Feb 2011)

Was du theoretisch machen könntest (ist aber auch nicht so schön glaube ich) ist beim Start der RCP Applikation die Extensionreg. zu checken, zu gucken welcher Editor der Default-Editor für .xml-Dateien ist und das dann ggfs. programmatisch anzupassen. Geht bestimmt irgendwie. Gibt ja genug Möglichkeiten sich beim Start irgendwie irgendwo einzuhängen. Und den Default-Editor programmatisch setzen geht mit Sicherheit auch irgendwie. Die Frage ist nur, ob das dann so "elegant" und vor allem sauber ist.


----------



## Wildcard (15. Feb 2011)

Du musst deinen Editor auf einen Content Type registrieren und dann diesen neuen Content Type per Extension anlegen. Wichtig bei einem Content Type: er muss sehr schnell arbeiten da Eclipse jede neue xml Datei auf diesen Content Type prüfen wird.
Bei einem Content Type für ein XML Dokument bietet es sich zB an den XML Header + Root Tag zu lesen, dann zB den Namespace zu prüfen um zu entscheiden ob dein Editor für diese Art XML in Frage kommt.
Danach kannst du dann mit parsen aufhören.
In der Praxis sieht man das zB am Ant Editor, der Default Editor für build.xml ist.


----------



## code404 (16. Feb 2011)

Vielen Dank!
Der Tipp mit dem Content Type hat geholfen:
Eclipse Tip: Define Custom Content Types to Identify Your Data Files - Developer.com


----------

