Zusammenfassung zum Thema:
Es ist nicht möglich den Editor (extends EditorPart) in einen anderem Folder oder Position zu platzieren, er packt in immer in die 'EditorArea'.
Wer jedoch die Position bestimmen will, muss eine View dafür verwenden. Dies ist jedoch ganz einfach, wenn man weis wie
.
1. Erstellen der View mit ihren ganzen Feldern, auch die Felder die dann später gefüllt werden soll. Der View gibt man dann das GridLayout (parent.setLayout(new GridLayout())) mit und bei jedem Feld was man später füllen will muss man 'setLayoutData(new GridData(GridData.FILL_HORIZONTAL))' verwenden (dann passt er die horizontale Größe automatisch dem Inhalt an).
2. Man implementiert der View noch eine extra Mehtode(ich habe sie 'setInput' genannt, wie bei einem Editor) der ein Objekt übergeben wird (es ist euch überlassen welches). In dieser setzt ihr dann euren Inhalt der Felder mit den Sachen aus dem Objekt.
3. Erstell ein Commando zum öffnen der View, ihr könnt euch daran orientrieren
editor_command (wirklich gutes Tutorial). Blos anstellen des Code 'page.openEditor(input, MyPersonEditor.ID)' verwendet ihr 'page.showView(MyPersonEditor.ID)' (jenach dem ob ihr eine normale View öffnen wollt oder die erweiterte, wenn ihr die View mehrmals anzeigen wollt). Danach lasst euch eine Referenc auf die View wiedergeben mit 'page.findViewReference(ID, SecondaryID)'
und über diese Reference könnt ihr euch die View holen 'getView(true)'. Die View müsst ihr dann natürlich noch auf euren ViewTyp casten und dann könnt ihr die Mehtode 'setInput(Object)' (in meine Fall) ausführen.
4. Dann müsst ihr natürlich noch die Position definieren, wo es angezeigt werden soll. Das macht ihr in der 'Perpective.java', erstellt euch vom IPageLayout einen Folder über 'createFolder' und fügt diesem Folder mit 'addPlaceholder' die View hinzu (bitte beachten, wenn die View mehrmals existieren soll muss ':*' angehangen werden).
Ihr Könnt auch gleich dem IPageLayout den Placeholder geben ohne einen Folder, wenn euch das lieber ist.
Und schon sollte alles Funktionieren
, vielen Dank auch an Wildcard für die Hilfe.
Tipp für MultipleViews:
Beim erstellen des Commando für Anzeigen könnt ihr noch eine zusätzlich Prüfung rein machen, damit diese View mit ihrere ID und SecondaryID einzigartig ist.
Lasst euch dazu einfach eine Referenc auf die View wieder geben mit 'page.findViewReference(ID, SecondaryID)' und wenn diese null ist, könnt ihr eine neue View erstellen. Wenn nicht könnt ihr über 'page.activate(IViewReference.getView(true))' den Focus auf die View setzen. Nützlich falls ihr mit einer Tabele arbeite und ihr jedes Element nochmal anzeigen wollt in einer View.