5 votes

Application Eclipse RCP - conception multifenêtre pour plusieurs moniteurs

Question sur Eclipse RCP et la conception de la perspective, de la vue et de l'éditeur - quelle est la meilleure façon de créer une application qui affichera plusieurs fenêtres sur plusieurs moniteurs ? Les tutoriels et les livres que j'ai vus regroupent toujours la conception RCP/SWT dans des vues à l'intérieur de la perspective dans une seule fenêtre d'application.

Une fenêtre doit-elle régir toutes les autres ou toutes doivent-elles être égales (la fermeture de la dernière fenêtre entraîne la sortie de l'application) ? Comment gérer les perspectives et les vues ? Y a-t-il d'autres choses que nous devrions savoir ?

Environnement : Eclipse Ganymede, Windows XP.

7voto

user85259 Points 175

Un seul banc de travail Eclipse peut créer plusieurs fenêtres. Chaque fenêtre est disposée en utilisant une perspective, de sorte que différentes fenêtres peuvent être configurées selon différentes perspectives, ou selon la même perspective, et vous pouvez changer de perspective dans chaque fenêtre indépendamment des autres fenêtres.

Vous pouvez également définir l'entrée pour chaque fenêtre. Ceci est utile si chaque fenêtre travaille sur des données différentes (par exemple, chaque fenêtre pourrait être connectée à un serveur différent ou pourrait afficher des données provenant de différentes bases de données qui ont toutes le même schéma mais des données différentes).

Il se peut que vous n'utilisiez Windows que pour voir différentes perspectives des mêmes données sur différents moniteurs. Dans ce cas, vous n'avez pas besoin de créer la fenêtre par programme, mais seulement d'ajouter l'action fournie par le workbench. Vous pouvez le faire en modifiant votre classe ActionBarAdvisor :

à ajouter aux déclarations de champs :

private IWorkbenchAction newWindowAction;

ajouter au code où vous réalisez les actions (généralement une méthode appelée makeActions) :

    newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window);
    register(newWindowAction);

à ajouter au code où vous créez les menus :

    menu.add(newWindowAction);

où le menu est généralement le menu Fenêtre. Si vous n'avez pas encore de menu Fenêtre dans votre application et que vous souhaitez en créer un, la ligne suivante fonctionnera :

    MenuManager menu = new MenuManager(
      "&Window", 
      IWorkbenchActionConstants.M_WINDOW);

Cela vous donnera un élément de menu qui créera une nouvelle fenêtre de la même manière que l'élément de menu Fenêtre->Nouvelle fenêtre dans l'IDE Eclipse.

Si, en revanche, vous souhaitez que chaque fenêtre affiche des données différentes, vous devrez ouvrir les nouvelles fenêtres de manière programmée. Cela vous permet de définir une entrée différente pour chaque fenêtre. Vous aurez besoin d'une ligne de code du genre :

IWorkbenchPage newPage = window.openPage(inputObject);

où inputObject contient des informations qui identifient les données affichées dans la fenêtre. Si vous souhaitez définir la perspective initiale, vous pouvez le faire en appelant setPerspective sur la page.

Vous voudrez définir le titre de chaque fenêtre :

newPage.getWorkbenchWindow().getShell().setText(windowTitle);

où windowTitle est une chaîne décrivant l'entrée de la fenêtre.

Vous pouvez récupérer l'entrée d'une fenêtre comme suit :

window.getActivePage().getInput()

Vous pouvez ensuite l'adapter à la classe que vous utilisez comme entrée de fenêtre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X