Bonjour,

Je suis actuellement confronté à un problème. J'ai une Part qui s'ouvre dans le mauvais PartStack suite à un Handler.

Je possède deux PartStack avec chacune une Part. La première est mon FileBrowser que j'ai créé grâce à un TreeViewer, la deuxième est un éditeur de texte, créé avec un StyledText (la partStack est visible, mais la part ne l'est pas). J'ai relié chaque Part à une classe et celles-ci fonctionnent. Voici une image de mon e4xmi pour que vous compreniez mieux :

Nom : Exemple.PNG
Affichages : 120
Taille : 16,4 Ko Nom : Exemple2.PNG
Affichages : 117
Taille : 10,3 Ko

J'ai ensuite créé un Handler open que j'ai nommé OpenHadler. Dans celui-ci je vais tout d'abord récupérer le contenu sélectionné dans le TreeViewer. Il essaye de l'ouvrir (try catch) si c'est un fichier il y arrive, si c'est un dossier il envoie un message d'erreur. Jusque là tout va bien.

C'est maintenant que ça se corse. Lorsque c'est un fichier je veux qu'il crée une Part StyledText (comme je l'ai désigné avec la classe qui lui est attribué) dans le PartStack qui lui est réservé celle du EditorXML (oui c'est censé devenir un éditeur de XML, mais pour l'instant c'est un StyledText basique). Il me crée bien la Part, mais au lieu de la créer dans le PartStack du EditorXML il me l'a créé dans celui du FileBrowser.

Je n'arrive pas à lui faire changer de PartStack j'ai pourtant essayé trois méthodes différentes dont voici les codes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// create part
 
			/*Test 1*/
			MPart part = partService.createPart("zephyr-graphic-interface.partdescriptor.editor");
 
			/*Test 2*/
			MPart part = modelService.createModelElement(MPart.class);
 
			/*Test 3*/
			MPart part = partService.findPart("zephyr-graphic-interface.part.editorXML");
			partService.hidePart(part);
			part.setVisible(true);
			partService.showPart(part, PartState.VISIBLE);
 
			//Test fileName
			System.out.println(file.getName());
 
			part.setLabel(file.getName());
			part.setCloseable(true);
			part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG );
			part.setContributionURI("bundleclass://Zephyr-Graphic-Interface/net.zephyr.graphicInterface.parts.EditorXML");
			// get part stack and show new part
			ArrayList<MPartStack> stacks = (ArrayList<MPartStack>) modelService.findElements(application, null, MPartStack.class, null);
			stacks.get(0).getChildren().add(part);
			partService.showPart(part, PartState.ACTIVATE);
			((EditorXML) part.getObject()).styledText.setText(text);
Voici le Resultat :

Nom : Exemple3.PNG
Affichages : 116
Taille : 14,3 Ko

Sachant que le test 3 est encore pire car non seulement il n'ouvre pas la Part dans le bon PartStack, mais en plus il close le PartStack qui est réservé à l'éditeur de texte.

Une idée de comment faire ? (Je n'utilise que du RCP 4 et je n'utiliserais pas le "trick" permettant de faire des choses en RCP 3 pour les convertir en RCP 4)

Merci d'avance