3 pièce(s) jointe(s)
[RCP] Ouverture de Part dans le mauvais PartStack
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 :
Pièce jointe 172327 Pièce jointe 172332
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:
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 :
Pièce jointe 172333
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 :)