IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

[Eclipse RCP] Accéder à une variable présente dans une vue


Sujet :

SWT/JFace Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 34
    Points
    34
    Par défaut [Eclipse RCP] Accéder à une variable présente dans une vue
    Dans une classe d'action RCP, j'aimerais accéder à une donnée présente dans une vue. Ma manière de faire ne me semble pas optimale et lourde à programmer car je dois rechercher ma vue en parcourant le tableau des références aux vues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    IViewReference[] wp = window.getActivePage().getViewReferences();
    myView view = null;
    for (int i=0; i<wp.length; i++)
    {
        if (wp[i].getView(true).getClass().equals(myView.class))
        {
             view = (myView)wp[i].getView(true);
             break;
        }
    }
    Existe-t-il un autre mécanisme ?

    Merci d'avance pour votre aide,

    Fabrisss

  2. #2
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 177
    Points : 145
    Points
    145
    Par défaut
    ya deux solution :

    1) mettre tes variables en static

    2) ou ca:

    IViewPart showView(String viewId)
    Shows the view identified by the given view id in this page and gives it focus.

    IViewPart showView(String viewId, String secondaryId, int mode)
    Shows a view in this page with the given id and secondary id.

    Tu peux alors caster l'objet IViewPart dans le type de ta vue et appeler ses fonctions directement.

  3. #3
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Points : 72 948
    Points
    72 948
    Par défaut
    Salut,

    Pourquoi tu ne spécialiserais pas ta vue en utilisant une interface pour ajouter de nouvelles fonctionnalités? Ces fonctionnalités correspondraient par exemple aux éléments dont tu voudrais avoir accés.

    Je m'explique : ...

    Au niveau de ta vue, tu implémentes une interface par exemple IDataIntoView qui contient des accesseurs, des modifieurs ... Par exemple getTaVariable() qui serait un accesseur à ta variable dont tu cherches à avoir accés.

    Quand ta vue se crée elle pourrait se faire connaitre de l'activator du plugin qui la contient. Ainsi, ton activator contiendrait l'ensemble des instances des vues qui ont besoin d'être publique. En fait, ton activator ne stockerait pas directement un objet ViewPart mais plutôt un objet de type IDataIntoView. Par ailleurs, quand tu fermes une vue, elle est disposée, donc n'oublie pas de notifier l'activator.

    Enfin, pour avoir accés à ton objet IDataIntoView (qui correspond indirectement à ta vue) il suffit de passer par ton activator. Pour rappel un activator est un singleton.

    Mickael

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Points : 171
    Points
    171
    Par défaut
    Bonjour,
    J'ai le même problème actuellement, keulkeul ta solution me plait bien mais j'ai un peut de mal à voir comment la mettre en place.
    J'ai décris mon besoin dans ce post:
    http://www.developpez.net/forums/sho...d.php?t=440489

    Pour faire simple, j'ai donc à ma disposition un singleton qui se charge de gérer l'affichage de ma vue substituable.
    Voici le code pour afficher une nouvelle vue:
    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
     
         /**
          * 
          * @param identifiantVue: Identifiant de la vue que l'on souhaite afficher.
          * @param mode: Mode d'affichage (Création / Modification) enum DialogType
          */
         public void affichageVue(String identifiantVue, DialogType mode){
        	 final String method 	= "<affichageVue> : ";
        	 logger.debug(method + "--> Début");
     
        	 // Fermeture de la vue en cours.
        	 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        	 logger.debug(method + "Demande de fermeture de la vue en cours: " + idVueEnCours);
        	 IViewPart vue = page.findView(idVueEnCours);
        	 page.hideView(vue);
        	 logger.debug(method + "Demande d'affichage de la nouvelle vue: " + identifiantVue);
        	 perspective.layout.addStandaloneView(identifiantVue,  false, IPageLayout.RIGHT, 0.2f, MaussangTreeView.ID);
        	 // Réinitialisation de l'identifiant de la vue en cours.
        	 idVueEnCours = identifiantVue;
        	 logger.debug(method + "--> Fin");
         }
    et voici le type d'appel effectué dans une action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	GestionnaireAffichage gest = GestionnaireAffichage.getInstance();
     	                    			Perspective perspective = gest.getPerspective();
     	                    			perspective.layout.addStandaloneView(ClasseView.ID,  false, IPageLayout.RIGHT, 0.2f, MaussangTreeView.ID);
    Alors mon problème est quand je veux afficher ma vue en mode modification, cela implique que je set l'objet que je souhaite modifier. Par exemple je veux modifier une Ecole il faut que je puisse initialiser mon objet Ecole dans ma vue.
    Ce que j'ai imaginé c'est effectivement définir une interface.
    Par contre je ne vois pas comment faire au niveau de mon Gestionnaire on peut imaginer modifier la signature de la méthode d'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     public void affichageVue(String identifiantVue, DialogType mode, Object objet){
    Où objet serait l'objet que je casterais dans mes vues par le bon type.
    Le problème est que je ne sais pas comment faire pour récupérer une référence sur mon interface et pas une IPartView d'autant plus que je ne maitrise pas l'affichage car c'est la perpespective avec le addStandalone.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    perspective.layout.addStandaloneView(identifiantVue,  false, IPageLayout.RIGHT, 0.2f, MaussangTreeView.ID);
    Pouvez vous me donner un coup de main, j'espère avoir été assez clair sinon n'hésitez pas je reformulerais.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Points : 171
    Points
    171
    Par défaut
    Peut être que les Wizards seraient plus appropriés.
    Quant pensez vous ?

Discussions similaires

  1. [XL-2003] Définir une variable présente dans une autre macro
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/11/2009, 15h02
  2. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  3. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  4. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo