Ich arbeite an einem 3,8-e4 hybrid (dh wir die Luna Abhängigkeiten haben, aber wir nicht verwenden , um die Application.e4xmi , noch) nicht . Wir führen also im Grunde die kompakte Schicht aus.
Wenn dies gesagt ist, wäre es schön, einen e4-programmatischen Weg zu finden, um diese bösen Ansichten auf den Editor-Ordner zu stapeln.
1.) Problem
Ich möchte einen generischen Ansichtsordner im Editorbereich platzieren, damit jede zur Laufzeit geöffnete Ansicht dort geöffnet wird.
(Bild aus dieser Frage gestohlen )
2.1) Möglicher Fix Nr. 1: Verwenden von plugin.xml
Erstellen Sie eine perspektivische Erweiterung und fügen Sie dieser Erweiterung jede mögliche Ansicht hinzu, wobei der Beziehungsstapel über der relativen org.eclipse.ui.editorss liegt . Dies ist etwas unpraktisch, wenn Sie zu viele Ansichten haben, um sie zu öffnen, und wenn das Projekt schnell skaliert werden kann. Mir ist auch aufgefallen, dass Platzhalter-Ansichts-IDs hier nicht funktionieren.
Wenn Sie die Zeit finden, jede mögliche Ansicht zur Perspektivenerweiterung hinzuzufügen, würde dies funktionieren. Wenn Sie jedoch eine Ansicht öffnen, die hier nicht hinzugefügt wurde (dh in einem anderen Ordner geöffnet wird), wird jede nachfolgende geöffnete Ansicht im vorherigen Ordner und NICHT im Editorbereich geöffnet (fragen Sie nach weiteren Erklärungen, wenn Sie dies nicht tun Kapiert).
2.2) Möglicher Fix Nr. 2: Verwenden von Code in der perspektivischen Fabrik
In der IPerspectiveFactory
haben wir Zugriff auf die IPageLayout
, was zufällig ist org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout
(e4 Zeug).
Nun ist diese ModeledPageLayout
Implementierung sinnvoll, aber auch keine Dokumentation und seltsame öffentliche APIs. Dieser gibt die Möglichkeit, eine Ansicht über jeden anderen Verwandten zu stapeln
modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);
Dies wäre die programmatische Version von 2.1 . Das gleiche Problem tritt auch hier auf. Wenn eine Ansicht an einer anderen Stelle geöffnet wird, wird der obige Code unbrauchbar.
Interessanterweise unterstützt die stackView
API keine Platzhalter (während andere wie addView
dies der Fall sind).
2.3) Möglicher Fix Nr. 3: Problemumgehungen yaaay!
Ich habe viele Perspektiven und viele verschiedene Ordner in jedem. Alles ist genau platziert.
Da Eclipse die APIs anbietet, um alle Ansichts-IDs von überall im System abzurufen, möchte ich pro Perspektive Folgendes tun: Jede Ansichts-ID, die keinem bestimmten Ordner hinzugefügt wurde, wird an den Editorbereich (dh den Editorordner) angehängt , Editor-Stack) .
Dies wäre mein letzter Ausweg, es sei denn, jemand bietet eine bequemere und zeitsparendere Lösung an.
Denken Sie daran, eine programmatische Alternative für e4 ist flexibler!
3.) Verwandte Fragen
- Eclipse RCP - Öffnen Sie die Ansicht im Editor-Ordner
- Eclipse RCP - Eine Ansicht mit dem Editorbereich stapeln?
- Benutzerdefinierte Eclipse-Perspektive, wobei die zunächst unsichtbare Ansicht im Editorbereich gestapelt ist
- Google Frage, Lars Antwort
Diese würden für die e4-Version veraltet sein.
4.) Verwandte Fehler in Eclipse's Bugzilla:
Dieser kürzlich von mir geöffnete Fehler hat einen Anhang mit einer kleinen SSCCE. Die Schritte zum Reproduzieren sind in diesem Kommentar beschrieben , daher werde ich sie hier nicht kopieren und einfügen.
Antworten:
Ich schlage vor, Sie gehen mit Possible Fix Nr. 3, da ich denke, es gibt keine schnellere Methode, um dies zu tun.
quelle