# Editor aus View öffnen - fehler: unbekannte Editor ID



## dzim (21. Apr 2008)

Hallo zusammen,

da ich auf Arbeit mt dem für mich neuen Thema RCP (und JFace / SWT ;-) ) beschäftigen muss, bin ich bezüglich einiger Herangehensweisen bei RCP etwas verwirrt.

Ich habe mir unter anderen das RCP-Tutorial von Lars Vogel
(www.vogella.de/articles/RichClientPlatform/article.html) angeschaut und einige Probleme wurden dank dieser Tutorials und SWT-Designer - der Mensch ist doch von Natur aus faul - einige Einsicht in diese Technologie erhalten.

Allerdings stoße ich bei der Entwicklung von besagten EditorPart auf ein mir nicht erklärliches Problem.
Ich habe eine kleine Test-anwendung geschrieben, die aus einem Modell mittels TableViewer und den zugehörigen Providern nett die Daten einer Collection ausliest.
Probehalber funktioniert auch der SelectionListener (den ich aber jetzt erst mal wieder rausgenommen habe).
Das Problem ist eine doubleClickAction (wie im besagten Tutorial aufgebaut) die im StandaloneView zwar offensichtlich ein Event feuert, aber durch den Code

```
private Action doubleClickAction;

	private void hookDoubleClickAction() {

		viewer.addDoubleClickListener(new IDoubleClickListener() {

			public void doubleClick(DoubleClickEvent event) {
				
				doubleClickAction.run();
			}
		});
	}

	private void contributeActions() {

		doubleClickAction = new Action() {
			public void run() {

				ISelection selection = viewer.getSelection();
				Object obj = ((IStructuredSelection) selection)
						.getFirstElement();

				Task task = (Task) obj;

				TestEditorInput input = new TestEditorInput(task
						.getTask());

				IWorkbenchPage page = PlatformUI.getWorkbench()
						.getActiveWorkbenchWindow().getActivePage();
				
				try {
					page.openEditor(input, TestEditor.ID, true);
					
					// notify any listeners of the view with the actual data of
					// the view
					viewer.setSelection(viewer.getSelection());
				} catch (PartInitException e) {
					System.out.println(e.getMessage());
				}
			}
		};
	}
```

nur die Fehlermeldung


> Unable to open editor, unknown editor ID: Editor.TestEditor


auf die Konsole wirft (also die PartInitException...)

Ehrlich - ich bin ratlos.
Habe in der plugin.xml kontrolliert, ob da auch wirklich die selbe id wie in der entsprechenden Klasse steht. Weiß nicht, ob name, und u.s.w. bezüglich der klassenstrucktur übereinstimmen müssen - das tut es bei mir nämlich nicht.
id: Editor.TestEditor
name: Editor.TestEditor
class: test.editor.editor.TestEditor

in der Klasse test.editor.editor.TestEditor
public static final String ID = "Editor.TestEditor";

Hat jemand vielleicht eine Idee?

Viele Grüße,
Daniel


----------



## Wildcard (21. Apr 2008)

Versuch mal deine PlugIn ID davor zu stellen.


----------



## dzim (21. Apr 2008)

ich geh mal davon aus, das es in meinem fall die application id wäre
also diese id+editor id?


----------



## dzim (21. Apr 2008)

Bei Eingabe von

  page.openEditor(input, "application."+TestEditor.ID, true);

(application ist im Extensions-Abschnitt unter org.eclipse.core.runtime.applications die id.
die eigentliche Klasse dafür ist unter test.editor.Application zu finden...


----------



## dzim (21. Apr 2008)

ach so: die Plug-In-Id ist laut der Activator-Klasse Editor... hilft mir das jetzt weiter, es zu wissen?


----------



## dzim (21. Apr 2008)

Also ich führe gerne Selbstgespräche 

Ein Teil des Problems ist gelöst - auch wenn ich die Lösung schlicht und ergreifend dämlich finde:
Wer lesen kann ist klar im Vorteil - Lasr Vogel schreibt, dem Editor ist ein Icon zuzuweisen - sonst geht's nicht.
And guess what: Ich hatte kein Icon zugeordnet (das Icon erscheint dann im Extensions-fenster, aber nicht beim geöffneten Editor-fenster - irgendwie blöd, oder?)

Nächstes Problem, auf das ich nun überhaupt nicht vorbereitet war:



> !ENTRY org.eclipse.ui 4 0 2008-04-21 12:58:12.132
> !MESSAGE Unable to create editor ID Editor.TestEditor: null argument:A part's title tool tip must be non-null
> !STACK 0
> org.eclipse.core.runtime.AssertionFailedException: null argument:A part's title tool tip must be non-null
> ...




...Häh???


----------



## Wildcard (21. Apr 2008)

Das mit dem Icon hast du aber auch als Warning in der PlugIn.xml gesehen. Das Icon Attribut ist im ExtensionPoint Schema als required markiert.


> A part's title tool tip must be non-null


Sagt doch eigentlich alles, oder?


----------



## dzim (21. Apr 2008)

hm...
Also ich hab da keine warning im extensions-tab gesehen und bei mir wird es nicht mit * markiert, aber das ist erst mal egal, weil es Ersenzählerei wäre.

Zum neuen Problem: Ja, es ist mir durchaus verständlich, dass ich wohl einen Title-Tool-Tip setzen muss, aber auch unter Verwendung des 
  setTitleToolTip("bla");
kommt der Fehler (hab es im createPartControl des fraglichen EditorPart gemacht)

edit: das Selbe gilt für die Methode initialize im Editor (und auch probehalber im aufrufenden View - createPartControl)
edit2: Ok, es wurde aus dem Fehler nicht wirklich klar, das der Tooltip im EditorInput gesetzt werden MUSS, aber jetzt geht's erst mal


----------



## dzim (21. Apr 2008)

Ok, also soweit ist ja (erst einmal) alles klar.

Eine Frage am Rande sei mir gestattet: Kann man die Editor-Fenster/-Tabs genauso wie die Views in der Perspective so einstellen, das der Titel nicht angezeigt wird?


----------



## Wildcard (21. Apr 2008)

dzim hat gesagt.:
			
		

> edit2: Ok, es wurde aus dem Fehler nicht wirklich klar, das der Tooltip im EditorInput gesetzt werden MUSS, aber jetzt geht's erst mal


Einen Namen in der plugin.xml zu setzen, reicht AFAIK.


> Eine Frage am Rande sei mir gestattet: Kann man die Editor-Fenster/-Tabs genauso wie die Views in der Perspective so einstellen, das der Titel nicht angezeigt wird?


Kannst du nicht einfach setTitle(""); machen? Wüsste nicht das es geht, bzw. ich habe noch nie einen Editor ohne Title gesehen.


----------



## dzim (21. Apr 2008)

Wildcard hat gesagt.:
			
		

> dzim hat gesagt.:
> 
> 
> 
> ...



Hm. Bei mir leider nicht - der Fehlertratt dann immer noch auf - erst als ich den Rat von Lars Vogel beherzigte - besser gesagt: gelesen hab - ging es. Ich kann es nicht anders erklären.



			
				Wildcard hat gesagt.:
			
		

> dzim hat gesagt.:
> 
> 
> 
> ...



Ja, könnte ich sicher, aber das ist ja dann auch eher bescheiden.
Die Idee dahinter war, das man nicht unbedingt sehen MUSS welcher Tab gerade offen ist... Aber ist auch nicht so tragisch glaube ich.
Was ich allerdings toll fände, ist: Herausfinden, wie Views nicht von Anfang an offen sein müssen - neue Views einbinden - wenn man sie in die Perspektive knallt, sind sie ja immer gleich da.

Danke für die Antwort jedenfalls!


----------



## Wildcard (21. Apr 2008)

Wenn du sie eben nicht an der Perspektive registrierst, sind sie auch nicht per Default zu sehen  :wink:


----------

