Eclipse RCP - Ouvrir une vue dans la zone d'édition (3.8 / e4 hybride)

106

Je travaille sur un hybride 3,8-e4 (autrement dit , nous avons les dépendances de Luna, mais nous n'utiliser le Application.e4xmi , encore). Nous utilisons donc essentiellement la couche compacte.

Cela étant dit, il serait bien de trouver un moyen par programme e4 d'empiler ces vues désagréables dans le dossier de l'éditeur.


1.) Problème

Je veux placer un dossier de vue générique dans la zone de l'éditeur, de sorte que chaque vue qui est ouverte au moment de l'exécution y soit ouverte.

Afficher dans le dossier de l'éditeur

(photo volée à cette question )


2.1) Solution possible n ° 1: Utilisation de plugin.xml

Créez une extension de perspective et ajoutez chaque vue possible à cette extension, avec une pile de relations sur org.eclipse.ui.editorss relative . 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 identifiants de vue génériques ne fonctionnent pas ici.

SS du plugin.xml avec des extensions de perspective

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


2.2) Solution possible n ° 2: 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 stuff).

Maintenant, cette ModeledPageLayoutimplémentation est raisonnable, mais aussi aucune documentation et 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' stackViewAPI ne prend pas en charge les caractères génériques (alors que d'autres comme le addViewfont).


2.3) Solution possible n ° 3: Solutions de contournement 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 faire ce qui suit, 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 , 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 qu'une alternative programmatique e4 est plus flexible!


3.) Questions connexes

Celles-ci deviendraient obsolètes pour la version e4.


4.) Bug connexe sur Bugzilla d'Eclipse:

Ce bogue 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.

GGrec
la source
Je pense qu'il est très peu probable que cela puisse être fait lorsque le code de compatibilité 3.x est inclus. Vous pourrez peut-être placer une vue dans la zone de l'éditeur à l'aide des API e4, mais je m'attendrais à ce que cela perturbe le code de compatibilité.
greg-449 du
1
Si vous n'utilisez aucun éditeur, réduisez simplement la zone partagée et concevez la mise en page comme vous le souhaitez.
bebbo
passez à une version plus récente où cela fonctionne hors de la boîte.
bebbo
@bebbo J'utilise des éditeurs, et je ne peux pas tout déplacer vers e4 en même temps. Logiciels d'entreprise. :-)
GGrec

Réponses:

1

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


la source
toute suggestion avec une réponse pripr pourrait être écrite comme un commentaire au lieu d'une nouvelle réponse.
Mahalakshmi