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

Eclipse Platform Discussion :

[RCP] Remplir un TableViewer d'une Vue depuis une Action


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut [RCP] Remplir un TableViewer d'une Vue depuis une Action
    Bonjour,

    Développant toujours mon application RCP (voir mes autres posts de détresse ), je dois afficher un tableau (TableViewer) rempli de noms de fichiers (TableItem) , de dates, etc...
    J'ai donc créé le tableau vide dans une vue (ContenuView.java), avec les colonnes nommées, puis je m'attaque à l'action qui permettra de remplir ce tableau (DisplaySpaceAction.java).
    L'action et la vue étant séparées, je ne sais pas comment accéder au tableau, pour ajouter des items.

    Voici un extrait de ma 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
    public void createPartControl(Composite parent) {
            FillLayout layout = new FillLayout();
            layout.marginHeight = 0;
            layout.marginWidth = 0;
            parent.setLayout(layout);
     
            tableViewer = new TableViewer(parent, SWT.FULL_SELECTION);
            tableViewer.setUseHashlookup(true);
     
            String[] column = new String[] {"Nom","Date de création","Propriétaire","Aperçu"};
     
            for (int i = 0; i < column.length; i++) {
                TableColumn c = new TableColumn(tableViewer.getTable(), SWT.LEFT);
                c.setText(column[i]);
                c.setWidth(100);
            }
    }
    Par contre pour l'action, je ne sais pas comment m'y prendre pour ajouter les items que je veux à ce tableViewer.
    J'avais également pensé réunir le tout (déclaration du TableViewer et des colonnes, ainsi que le remplissage du table) dans l'action, mais la vue deviendrait alors quasiment inutile.

    J'espère avoir été assez clair, merci de votre aide.

  2. #2
    Membre chevronné Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Par défaut
    Tu peux coder des actions qui seront reliées directement aux menus de ta vue à l'intérieur de la classe qui contient ta 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    protected List actionList = null;
    
    public void createPartControl(Composite parent)
    {
     
    
    
    windowCanvas =
    new SWTWindowCanvas(parent);
    makeActions(); contributeToActionBars(); registerPartListener(); loadSpecificProgram();
    }
    private void contributeToActionBars() {
    IActionBars bars = getViewSite().getActionBars(); fillLocalPullDown(bars.getMenuManager()); fillLocalToolBar(bars.getToolBarManager());
    } private void fillLocalToolBar(IToolBarManager menuManager) {
    Iterator iter = actionList.iterator(); while (iter.hasNext())
    menuManager.add((IAction)iter.next());
    }
    private void fillLocalPullDown(IMenuManager menuManager) {
    Iterator iter = actionList.iterator(); while (iter.hasNext())
    menuManager.add((IAction)iter.next());
    }
    La fonction addAction ne fait qu'ajouter une action à la liste de ta vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    addAction(new OpenGenericAppAction(this, "Open Generic App", "Open Generic App"));
    
    Par la suite, ton action reçoit un objet de ta vue en paramètre et peut alors générer des actions conséquentes à cette vue dans sa fonction run().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import org.eclipse.jface.action.Action;
    
    public class OpenGenericAppAction extends Action
    {
     
    
    
    public OpenGenericAppAction(AbstractViewPart inView, String inText, String inToolTipText)
    }
    J'espère que ça peut t'aider.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Hmm, je comprends pas tellement...
    Tu peux coder des actions qui seront reliées directement aux menus de ta vue à l'intérieur de la classe qui contient ta vue.
    De quels menu parle-tu ?

    En fait, je veux juste remplir un tableau. Mon problème est de trouver comment accéder à ce tableau depuis une action extérieure à la vue pour ajouter des Items.

    EDIT: Hum, je me demande pourquoi j'ai mis ce topic dans Eclipse... ça n'a pas réellement de rapport... Il aurait plus sa place dans Interface Graphique ou Général...

  4. #4
    Membre chevronné Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Par défaut
    Chaque vue possède deux menus, un qui se situe à côté de l'onglet et un "dropdown" accessible par une flèche vers le bas (toujours à côté de l'onglet). Ces menus, tu peux les coder (ajouter des actions) à l'intérieur de la classe qui définit ta vue. Ces actions pourront donc avoir accès à ta vue sans diffiicultés.

    Moi je crois comprendre ce que tu veux faire: avoir une action dans le workbench qui change l'état de ta vue. Mais ça c'est pas une bonne idée. Parce que t'as aucun lien entre ton action et ta vue. Faut que tu revois ton concept.

    Bonne chance.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Je développe une application qui permet à un utilisateur identifié d'accéder à une sorte de plate forme de fichiers, qui permet de mettre à disposition des fichiers entre les utilisateurs.
    J'ai donc une arborescence dans une vue, et un tableau dans une autre (et d'autres vues bien sûr). Je voulais que lorsque l'utilisateur clique sur un répertoire dans l'arborescence, que le contenu du répertoire soit affiché dans le tableau.
    En gros, je ne passe pas par les menus dont tu parles. Mais le fait de cliquer sur un répertoire dans l'arborescence, enclencherait une action, qui remplirait alors le tableau.

  6. #6
    Membre chevronné Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Par défaut
    Ah, ben là c'est pas pareil. Maintenant je vois clair. Ce que je comprends maintenant c'est que tu as besoin du service de SelectionProvider/SelectionListener de la plateforme d'Eclipse pour réaliser ce que tu désires. Tu n'as pas besoin d'une action pour exécuter ça.

    Regarde cet article: http://www.eclipse.org/articles/Arti...s/article.html (très bon).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 18
    Par défaut
    Citation Envoyé par Jean-Philippe Shields
    Moi je crois comprendre ce que tu veux faire: avoir une action dans le workbench qui change l'état de ta vue. Mais ça c'est pas une bonne idée. Parce que t'as aucun lien entre ton action et ta vue. Faut que tu revois ton concept.

    Bonne chance.
    Juste pour mon information personnelle , n'aurait-il pas été possible de mettre le TableViewer en attribut static à la vue pour qu'il soit accessible par n'importe quelle classe ?

  8. #8
    Membre chevronné Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Par défaut
    Citation Envoyé par Cyrion
    Juste pour mon information personnelle , n'aurait-il pas été possible de mettre le TableViewer en attribut static à la vue
    Oui bien sûr

    Citation Envoyé par Cyrion
    pour qu'il soit accessible par n'importe quelle classe ?
    Le problème ici est de récupérer l'instance de la classe qui possède le TableViewer. J'ai vu dernièrement un bout de code qui récupère cette référence grâce à l'interface IPartListener2. L'utilisation de cette technique aurait pu "hacker" le problème pour obtenir un fonctionnement immédiat. Mais du point de vue de la programmation OO, cette technique est définitivement peu extensible et conduira certainement à d'autres problèmes dans l'avenir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. [Plug-in] Ecrire dans une vue depuis une class Handler
    Par bulldo dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 05/03/2011, 00h45
  3. [RCP] Une vue dans une vue ?
    Par holypraal dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 28/04/2010, 12h40
  4. Ecrire du texte depuis une variable dans une vue
    Par Vlad_Oliv dans le forum MFC
    Réponses: 1
    Dernier message: 09/01/2007, 17h28
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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