Eclipse RCP - Otwórz widok w obszarze edytora (hybryda 3.8 / e4)

106

Pracuję na hybrydzie 3.8-e4 (tzn. Mamy zależności Luna, ale nie używamy jeszcze Application.e4xmi ). Więc w zasadzie używamy warstwy kompaktowej.

Mając to na uwadze, byłoby miło znaleźć programowy sposób e4 na umieszczenie tych paskudnych widoków w folderze edytora.


1.) Problem

Chcę umieścić ogólny folder widoku w obszarze edytora, aby każdy widok, który jest otwierany w czasie wykonywania, był tam otwierany.

Wyświetl w folderze edytora

(zdjęcie skradzione z tego pytania )


2.1) Możliwa poprawka nr 1: Korzystanie z pliku plugin.xml

Tworzenie rozszerzenia perspektywy, i dodać każdy możliwy widok do tego rozszerzenia, z relacjami z komina nad względnej org.eclipse.ui.editorss . Jest to trochę niewygodne, jeśli masz zbyt wiele widoków oczekujących na otwarcie, a projekt szybko się skaluje. Zauważyłem również, że identyfikatory widoku symboli wieloznacznych nie działają tutaj.

SS pliku plugin.xml z rozszerzeniami perspektywicznymi

Jeśli znajdziesz czas, aby dodać każdy możliwy widok do rozszerzenia perspektywy, to zadziała. Chociaż, JEŻELI otworzysz widok, który nie jest tutaj dodany (tj .: otwiera się w innym folderze), to każdy kolejny otwarty widok zostanie otwarty w poprzednim folderze, a NIE w obszarze edytora (zapytaj o dalsze wyjaśnienia, jeśli nie zdobyć).


2.2) Możliwa poprawka nr 2: Używanie kodu w fabryce perspektyw

W IPerspectiveFactory, mamy dostęp do IPageLayout, co jest org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(rzeczy e4).

Ta ModeledPageLayoutimplementacja jest rozsądna, ale nie ma też dokumentacji i dziwnych publicznych interfejsów API. Ten daje możliwość nałożenia widoku na dowolnego innego krewnego

modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);

Byłaby to programowa wersja 2.1 . Również tutaj pojawia się ten sam problem. Jeśli widok zostanie otwarty w innym miejscu, powyższy kod stanie się bezużyteczny.

Co ciekawe, stackViewAPI nie obsługuje symboli wieloznacznych (podczas gdy inne tak jak addViewto robią).


2.3) Możliwa poprawka nr 3: obejścia tak!

Mam wiele perspektyw i wiele różnych folderów w każdym. Wszystko jest precyzyjnie umieszczone.

Ponieważ Eclipse oferuje interfejsy API do pobierania wszystkich identyfikatorów widoków z dowolnego miejsca w systemie, chcę wykonać następujące czynności z perspektywy: każdy identyfikator widoku, który nie został dodany do określonego folderu, zostanie dołączony do obszaru edytora (tj. Folderu edytora , stos edytora) .

To byłaby moja ostatnia deska ratunku, chyba że ktoś zaproponuje wygodniejsze i oszczędzające czas rozwiązanie.

Pamiętaj, alternatywna automatyzacja e4 jest bardziej elastyczna!


3.) Pytania pokrewne

Będą one przestarzałe w wydaniu e4.


4.) Powiązany błąd w Bugzilli Eclipse:

Ten ostatnio otwarty błąd ma załącznik z małym SSCCE. Kroki prowadzące do odtworzenia tego są opisane w tym komentarzu , więc nie zamierzam ich tutaj kopiować i wklejać.

GGrec
źródło
Myślę, że jest bardzo mało prawdopodobne, aby można to zrobić, gdy dołączony jest kod zgodności 3.x. Być może uda Ci się umieścić widok w obszarze edytora za pomocą interfejsów API e4, ale spodziewałbym się, że zmyli to kod zgodności.
greg-449
1
Jeśli nie używasz żadnych edytorów, po prostu zminimalizuj wspólny obszar i zaprojektuj układ według własnego uznania.
bebbo
przejdź do nowszej wersji, w której działa to po wyjęciu z pudełka.
bebbo,
@bebbo Używam edytorów i nie mogę od razu przenieść całości na e4. Oprogramowanie firmowe. :-)
GGrec

Odpowiedzi:

1

Sugeruję skorzystanie z Możliwej poprawki nr 3, ponieważ myślę, że nie ma szybszej metody, aby to zrobić.


źródło
każda sugestia z pierwszą odpowiedzią może zostać zapisana jako komentarz zamiast nowej odpowiedzi.
Mahalakshmi