Un seul atelier 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 définies pour différentes perspectives, ou 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 une 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 montrer des données 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 utilisiez uniquement Windows pour que vous puissiez voir différentes perspectives des mêmes données sur différents moniteurs. Dans ce cas, vous n'avez pas besoin de créer par programme les fenêtres, mais vous n'avez qu'à ajouter l'action fournie par le plan de travail. Cela peut se faire en modifiant votre classe ActionBarAdvisor:
ajouter aux déclarations sur le terrain:
private IWorkbenchAction newWindowAction;
ajouter au code où vous faites 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 des menus:
menu.add(newWindowAction);
où le menu est typica Seulement le menu Fenêtre. Si vous ne disposez pas d'un menu Fenêtre déjà dans votre application et souhaitez créer une, la ligne suivante fonctionnera:
MenuManager menu = new MenuManager(
"&Window",
IWorkbenchActionConstants.M_WINDOW);
Cela vous donnera un élément de menu qui va créer une nouvelle fenêtre de la même manière comme l'élément de menu Window-> New Window dans l'IDE Eclipse.
Si, par contre, vous souhaitez que chaque fenêtre affiche des données différentes, vous devrez ouvrir les nouvelles fenêtres par programmation. Cela vous permet de définir différentes entrées pour chaque fenêtre. Vous aurez besoin d'une ligne de code quelque chose comme:
IWorkbenchPage newPage = window.openPage(inputObject);
où InputObject contient des informations qui identifie les données affichées dans la fenêtre. Si vous voulez définir la perspective initiale, cela peut être fait en appelant setPerspective sur la page.
Vous voulez définir le titre dans chaque fenêtre:
newPage.getWorkbenchWindow().getShell().setText(windowTitle);
où titreFenêtre est une chaîne décrivant l'entrée à la fenêtre.
Vous pouvez chercher l'entrée d'une fenêtre comme suit:
window.getActivePage().getInput()
Vous pouvez ensuite lancer ce à quelque classe que vous utilisez comme entrée de fenêtre.
bon départ sur stackoverflow, merci! – tomash
Ceci est RCP3, non? – Weltraumschaf