web-dev-qa-db-fra.com

Eclipse RCP - Ouvrir une vue dans la zone de l'éditeur (hybride 3.8 / e4)

Je travaille sur un hybride 3.8-e4 (c'est-à-dire que nous avons les dépendances Luna, mais nous ne pas utilisez Application.e4xmi , pour l'instant). Nous exécutons donc essentiellement la couche compacte.

Cela étant dit, il serait agréable de trouver un moyen programmatique e4 pour empiler ces vues désagréables sur le dossier de l'éditeur.


1.) Problème

Je souhaite placer un dossier de vues génériques dans la zone de l'éditeur, de sorte que chaque vue ouverte lors de l'exécution y soit ouverte.

View in editor folder

(photo volée à cette question )


2.1) Correction possible n ° 1: utilisation de plugin.xml

Créez une extension de perspective et ajoutez chaque vue possible à cette extension, avec pile de relations plus de organisation relative.Eclipse.ui.editorss. C'est un peu gênant si vous avez trop de vues à ouvrir et si le projet évolue rapidement. J'ai également remarqué que les ID de vue génériques ne fonctionnent pas ici.

SS of the plugin.xml with perspective extensions

Si vous vous trouvez le temps d'ajouter chaque vue possible à l'extension de perspective, cela fonctionnerait. Bien que, si vous ouvrez une vue qui n'est pas ajoutée ici (c'est-à-dire: s'ouvre dans un dossier différent), chaque vue ouverte suivante sera ouverte dans le dossier précédent, et NON dans la zone de l'éditeur (demandez des explications supplémentaires si vous ne le faites pas). tu piges).


2.2) Correctif n ° 2 possible: utilisation du code dans l'usine de perspective

Dans le IPerspectiveFactory, nous avons accès au IPageLayout, qui se trouve être org.Eclipse.ui.internal.e4.compatibility.ModeledPageLayout (e4).

Maintenant, cette implémentation de ModeledPageLayout est raisonnable, mais aussi pas de documentation et des API publiques étranges. Celui-ci donne la possibilité d'empiler une vue sur tout autre parent

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

Ce serait la version programmatique de 2.1. En outre, le même problème apparaît ici. Si une vue est ouverte ailleurs, le code ci-dessus devient inutile.

Assez intéressant, l'API stackView ne prend pas en charge les caractères génériques (contrairement à d'autres comme addView).


2.3) Correction n ° 3 possible: contournements yaaay!

J'ai beaucoup de perspectives et beaucoup de dossiers différents dans chacun. Tout est précisément placé.

Étant donné qu'Eclipse propose les API pour obtenir tous les ID de vue de partout dans le système, je souhaite effectuer les opérations suivantes, par perspective: chaque ID de vue qui n'a pas été ajouté à un dossier spécifique sera ajouté à la zone de l'éditeur (c'est-à-dire le dossier de l'éditeur, la pile de l'éditeur).

Ce serait mon dernier recours, à moins que quelqu'un ne propose une solution plus pratique et plus rapide.

N'oubliez pas, une alternative programmatique e4 est plus flexible!


3.) Questions connexes

Ceux-ci seraient rendus obsolètes pour la version e4.


4.) Bug lié au Bugzilla d'Eclipse:

Ce bug récent ouvert par moi-même a une pièce jointe avec un petit SSCCE. Les étapes pour reproduire ceci sont décrites dans ce commentaire , donc je ne vais pas les copier-coller ici.

105
GGrec

Je vous suggère d'utiliser le correctif possible n ° 3, car je pense qu'il n'y a pas de méthode plus rapide pour le faire.

1
user5501745