Eclipse RCP - Paramètre pour instanciation d'une Vue

Eclipse RCP - Paramètre pour instanciation d'une Vue - Java - Programmation

Marsh Posté le 18-06-2007 à 11:08:28    

Bonjour,  
 
je suis toujours en auto-formation sur Eclipse RCP et j'ai un problème avec la création de mes vues, je ne sais pas trop comment m'y prendre.  
 
J'ai une premier vue avec un tableau d'objet, quand je click sur un de ces objets, il ouvre une nouvelle vue dans un TabFolder plus bas.  
Mais j'aimerai que cette vue s'instancie en fonction de l'élément selectionné, donc j'ai besoin de lui passer un paramètre pour la remplir selon mes souhaits.  
 
Pour ça j'ai créé dans cette vue une petite fonction "majInfos(List listeObjets)" qui se charge de remplir le tableau qui s'y trouve en fonction de la liste passé en paramètre.  
 
ça marchait tant que je ne faisait que "raffraichir" une unique vue.  
Mais je voudrais maintenant créé une nouvelle instance de cette vue avec ces infos mais je n'obtient qu'une vue "vide" (mon tableau n'est pas initialisé malgres mon appel a la fonction "majInfos" ).
 
Alors je me dit que je récupèr epeut-être mal ma vue nouvellement créé (j'essai d'utilisé les secondaryID pour ça mais je ne suis pas sur de comment l'utilisé correctement)
 
Voici mon code pour créer/instancier ces vues :  
 

Code :
  1. try{
  2.     getSite().getWorkbenchWindow().getActivePage().showView(ListeLotView.ID, Integer.toString(instanceNum++), IWorkbenchPage.VIEW_ACTIVATE);
  3. } catch (PartInitException e1) {
  4. e1.printStackTrace();
  5. }
  6. ListeLotView vue = (ListeLotView)getViewSite().getPage().findViewReference(ListeLotView.ID, Integer.toString(instanceNum));
  7. vue.majInfos(listeLots);


 
Quelqu'un peut m'aider a résoudre le problème ?

Reply

Marsh Posté le 18-06-2007 à 11:08:28   

Reply

Marsh Posté le 18-06-2007 à 11:17:24    

Un truc con : t'as essayé de surchargé les constructeurs de ta vue (cad ceux que t'hérite de la classe "ViewPart" ) et peut être voir ceux qui sont appelés ?

Reply

Marsh Posté le 18-06-2007 à 11:41:12    

Chronoklazm a écrit :

Un truc con : t'as essayé de surchargé les constructeurs de ta vue (cad ceux que t'hérite de la classe "ViewPart" ) et peut être voir ceux qui sont appelés ?


 
Je ne crois pas qu'on puisse définir un constructeur pour une vue.  
D'ailleur si j'essaie (meme un qui ne fait rien a part un super() j'ai un message d'erreur.
 

Reply

Marsh Posté le 18-06-2007 à 15:18:16    

C'est bizzare. Moi perso y a pas de probleme, le constructeur de ma vue est bien appelé appelé a chaque fois que je l'affiche.
 

Code :
  1. public class TimItView extends ViewPart {
  2. public static final String ID = ".......views.TimItView";
  3. public static Button refreshSelected;
  4. public static Button refreshAll;
  5. private ScrollingGraphicalViewer timItViewer;
  6. private ChartContainerObject chartContainer;
  7. /**
  8.  * The constructor.
  9.  */
  10. public TimItView() {
  11.  System.out.println("TimItView.TimItView() ------> " );
  12.  this.chartContainer = new ChartContainerObject();
  13. }
  14. /** ... */


 
Et puis pour ton histoire de parametre tu peux definir une variable statique affecté au moment ou l'utilisateur clique sur un element de ta liste, et lors de l'instanciation de ta vue (dans le fameux constructeur qui est censé être appelé) t'accede a la variable statique (qui sera forcement affecté car l'invocation de la vue survient forcement après le clique sur un élément de la liste)
 
Ou alors tu fait un truc bien avec les ActionRegistry et tout le bousin qui va avec les Viewer ..
 
T'en pense quoi ?

Message cité 1 fois
Message édité par Chronoklazm le 18-06-2007 à 15:19:34

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Marsh Posté le 18-06-2007 à 15:55:08    

Chronoklazm a écrit :

C'est bizzare. Moi perso y a pas de probleme, le constructeur de ma vue est bien appelé appelé a chaque fois que je l'affiche.
 
Et puis pour ton histoire de parametre tu peux definir une variable statique affecté au moment ou l'utilisateur clique sur un element de ta liste, et lors de l'instanciation de ta vue (dans le fameux constructeur qui est censé être appelé) t'accede a la variable statique (qui sera forcement affecté car l'invocation de la vue survient forcement après le clique sur un élément de la liste)
 
Ou alors tu fait un truc bien avec les ActionRegistry et tout le bousin qui va avec les Viewer ..
 
T'en pense quoi ?


 
J'ai de nouveau essayer de mettre un constructeur, et j'ai réussi a en fair eun qui marche (mais j'ai eu 2x une erreur en voulant le modifier..?!)
Bref, vu que je ne peux pas passer de param a mon constructeur, celui-ci n'a pas d'interet pour moi.  
 
Par contre l'idée de la variable Static m'est utile, car comme ça je peux remplir mon tableau des l'appel a la fonction createpartControl.
 
Pas sur que ce soit tres genieLog m'enfin ;)
 
Faut juste que je n'utilise pas cette variable a un autre moment que lors de l'initialisation de la vue.

Reply

Marsh Posté le 03-08-2009 à 18:29:51    

Bonjour, j'ai le même problème que toi, c'est à dire que :
 
J'ai une perspective avec 2 folders contenant chacun 1 vue
 
Je voudrai créer plusieurs instance dans une de ces deux vues.
 
J'utilise :
 
window.getActivePage().showView(SatView.ID,Integer.toString(instanceNum++),IWorkbenchPage.VIEW_ACTIVATE);
 
Le problème c'est que le "getActivePage()" ne me prend pas en compte le folder que je voudrai, celui correspondant à la vue que je veux.
 
Comment pourrais je faire ?
 
Peux tu partager ton code final stp gargantua307
 
Merci par avance.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed