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 :

[Plug-in]"Link with editor" view action dans une de mes vues...


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Points : 33
    Points
    33
    Par défaut [Plug-in]"Link with editor" view action dans une de mes vues...
    Bonjour,

    Je participe au développement d'une application RCP et, dans cette application, il y a entre autres une sorte de workspace view.

    Je souhaiterais ajouter la View Action "Link with editor" à cette vue mais je ne vois pas trop comment faire. J'imagine qu'il faut passer par plugin.xml mais je ne sais pas quel Action Id utiliser...

    Quelqu'un saurait-il comment on peut faire ça ?

    Merci d'avance pour votre aide.
    Les mots vrais traversent le temps mais pas les mauvais...

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 340
    Points
    340
    Par défaut
    Peux-tu me décrire cette action. Je ne la connais pas... J'ai du mal à saisir ton problème.
    RCP rulez!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    C'est l'action que tu as par exemple en vue "java" qui correspond à l'icône avec 2 petites flèches l'une au dessus de l'autre (1 vers la droite et 1 vers la gauche) dans le package explorer. C'est un bouton à 2 états: si l'état est "on", 1 prise de focus par une fenêtre "éditeur" force la sélection de l'élément édité dans le package explorer. Si l'état est "off", la sélection d'une fenêtre "éditeur" n'a aucun impact sur le package explorer...
    Les mots vrais traversent le temps mais pas les mauvais...

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 340
    Points
    340
    Par défaut
    Je n'ai jamais utilisé cette action séparément (ni dans la vue Outline d'ailleurs), mais à mon avis cette action n'est pas disponible à l'extérieur de la vue Outline. Elle doit venir avec quand tu instancies la vue en question. Un peu comme si tu utilises la vue console ou la vue Properties, les menus de chaque vue contiennent déjà certaines actions utiles, que l'on a pas besoin de redéfinir.

    Bien entendu si on veut juste avoir l'action ça se complique. Essaie d'instancier la vue Outline pour vérifier. Si l'action y appartient et que tu la veux, je te suggère d'ouvrir le code et de voir le mécanisme principal. Je ne sais pas vraiment comment elle agit.
    RCP rulez!

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 340
    Points
    340
    Par défaut
    Après y avoir pensé un peu et surtout l'avoir essayé, j'ai l'impression que ça utilise le mécanisme de SelectionListener et que le selectionProvider est le package explorer ou le navigator plus que l'éditeur de texte. Ça serait un bon "guess" si je peux me permettre et ça ne serait pas très difficile à reproduire dans ton application car l'action en tant que tel ne ferait rien de spécial. C'est l'implémentation du Listener qui est la plus grosse tâche.

    Edit : Je crois que tu as raison, l'éditeur de texte est le SelectionProvider dans ce cas et non pas le Package Explorer, ni le Navigator.
    RCP rulez!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Ca y est, j'ai réussi à le faire:
    Pour résumer, j'ai créé une ViewAction de type Toggle dans mon plugin.xml qui a pour action une nouvelle action que j'ai aussi créée.

    L'action implémente IViewActionDelegate et la seule méthode utilisée est run:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void run(IAction action) {
        MyViews.GetWorkspaceView(true).setLinkingEnabled(action.isChecked());
    }
    Où la méthode setLinkingEnabled(boolean) positionne un flag.

    A coté de cela, dans la WorkspaceView, j'ai ajouté un IPartListener2:
    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
    43
        private IPartListener2 _partListenerForLinkWithEditorAction = new IPartListener2()  {
            /**
             * This method tests if the "link with editor" feature is enabled and refreshes 
             * the view if necessary.
             * */
            private void refocus()
            {
                if (_isLinkingEnabled)
                {
                    IEditorPart editor = getSite().getPage().getActiveEditor();
                    if (editor != null)
                    {
                        editorActivated(editor);
                    }
                }
            }
            public void partActivated(IWorkbenchPartReference partRef)
            {
                refocus();
            }
            public void partBroughtToTop(IWorkbenchPartReference partRef)
            {
                refocus();
            }
            public void partClosed(IWorkbenchPartReference partRef)
            {
            }
            public void partDeactivated(IWorkbenchPartReference partRef)
            {
            }
            public void partOpened(IWorkbenchPartReference partRef)
            {
            }
            public void partHidden(IWorkbenchPartReference partRef)
            {
            }
            public void partVisible(IWorkbenchPartReference partRef)
            {
            }
            public void partInputChanged(IWorkbenchPartReference partRef)
            {
            }
        };
    Et enfin, ma méthode editorActivated() remet à jour l'arbre de la workspace view en fonction de l'éditeur qui a le focus...

    Voilà, je crois que c'est tout!
    Les mots vrais traversent le temps mais pas les mauvais...

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

Discussions similaires

  1. view "flottante" dans une view principal
    Par lamur dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 24/11/2011, 12h20
  2. [ZF 1.10] Appel du view helper "action" dans une module ne marche pas
    Par ilalaina dans le forum MVC
    Réponses: 7
    Dernier message: 28/10/2010, 10h11
  3. View port dans une image
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 20/07/2008, 23h09
  4. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  5. Réponses: 5
    Dernier message: 15/04/2005, 14h22

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