Eclipse RCP - Öffnen Sie eine Ansicht im Editorbereich (3.8 / e4-Hybrid)

106

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.

Ansicht im Editorordner

(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.

SS der plugin.xml mit perspektivischen Erweiterungen

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 IPerspectiveFactoryhaben wir Zugriff auf die IPageLayout, was zufällig ist org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(e4 Zeug).

Nun ist diese ModeledPageLayoutImplementierung 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 stackViewAPI keine Platzhalter (während andere wie addViewdies 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

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.

GGrec
quelle
Ich halte es für sehr unwahrscheinlich, dass dies möglich ist, wenn der 3.x-Kompatibilitätscode enthalten ist. Möglicherweise können Sie mithilfe der e4-APIs eine Ansicht im Editorbereich platzieren, aber ich würde erwarten, dass dies den Kompatibilitätscode verwirrt.
Greg-449
1
Wenn Sie keine Editoren verwenden, minimieren Sie einfach den freigegebenen Bereich und gestalten Sie das Layout nach Ihren Wünschen.
Bebbo
Fahren Sie mit einer neueren Version fort, in der dies sofort funktioniert.
Bebbo
@bebbo Ich benutze Editoren und kann das Ganze nicht auf einmal auf e4 verschieben. Unternehmenssoftware. :-)
GGrec

Antworten:

1

Ich schlage vor, Sie gehen mit Possible Fix Nr. 3, da ich denke, es gibt keine schnellere Methode, um dies zu tun.


quelle
Jeder Vorschlag mit pripr Antwort könnte als Kommentar anstelle einer neuen Antwort geschrieben werden.
Mahalakshmi