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 :

Contribuer à un Menu existant


Sujet :

SWT/JFace Java

  1. #1
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut Contribuer à un Menu existant
    Bonjour à tous,
    voilà j'ai regardé les Menu SWT, enfin MenuManager de JFace et j'ai vu qu'en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getSite().registerContextMenu(contextMenu, this);
    this implémente ISelectionProvider.

    Cela dit, je n'ai vu nulle part comment faire pr ajouter des Items à ce menu depuis une autre classe ...
    Une idée ??

    merci d avance
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Cet ajout de Menu est-il dynamique ou non? Dans le 2ème cas, tu peux très bien passer par le plugin.xml et l'extension org.eclipse.ui.menus pour ajouter des items à ton menu...
    Sinon, de façon dynamique, tu peux récupérer le MenuManager grâce aux IActionBars de ton IEditorSite / ton IViewSite. Donc, dans tout les cas, il te faut (à mon sens) récupérer l'instance de ta View / ton Editor:
    Code Java : 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
    final IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    if (activeWorkbenchWindow != null) {
            final IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
            if (activePage != null) {
                    IViewPart view = activePage.findView("MyView.ID");
                    if (view instanceof MyView) {
                            MyView myView = (MyView) view;
                            IViewSite site = myView.getViewSite();
                            final IActionBars actionBars = site.getActionBars();
                            if (actionBars != null) {
                                    IMenuManager contextMenu = actionBars.getMenuManager();
                                    ISelectionProvider provider = site.getSelectionProvider();
                                    ...
                            }
                    }
            }
    }
    Pour un Editor l'approche est la même...

    Pour ma part, je pense que le fait de passer par le plugin.xml et le point d'extension est une meilleure approche. Mais ce n'est que mon avis ^^

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    Je garde ce bout de code merci
    J'ai aussi trouvé un article d'Eclipse Corner qui présente la démarche suivante :
    utiliser le point d'extension "org.eclipse.ui.popupMenus" avec une 'viewContribution'. On donne l'id de la vue contenant le menu et c est gagné

    merci bien
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Avec plaisir ^^
    Citation Envoyé par jojodu31 Voir le message
    utiliser le point d'extension "org.eclipse.ui.popupMenus" avec une 'viewContribution'.
    Sinon, l'inconvénient majeur de cette méthode est qu'elle te fait passer par des IAction au lieu de pouvoir utiliser des Commands... Les Commands sont à mon sens plus intéressantes que les IAction.
    Donc, si tu passes par ton plugin.xml, je te conseille vivement de passer par le point d'extension "org.eclipse.ui.menus" en rajoutant un 'menuContribution' avec comme locationURI : "popup:myView.id". Sache que tu peux encore spécifier l'URI en rajoutant un "popup:myView.id?after=" et ensuite rajouter l'identifiant d'une Command présente dans ton Menu ou l'identifiant d'un Separator.
    Les 2 méthodes sont équivalentes, mais les Commands sont carrément plus souples que les IAction...

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  5. #5
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    en effet j'avais lu que les commandes étaient recommandées. J'ai donc fais le test avec les commandes (cf. pièce jointe), ça marche nikel
    Par contre pk plus souple ? ça vient du fait que l'on peut changer d'action juste en changeant commandId de menuContribution ? Je vois pas bien le gain réel en fait
    Images attachées Images attachées  
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  6. #6
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Grâce aux commandes, du fait d'avoir un identifiant pour ta commande tu peux faire énormément de choses plus facilement (keyBinding, mnémonic, ...).
    Tu peux aussi les faire avec des actions , mais c'est moins direct. Tu as toute une série d'articles sur ce blog qui te donne les différences entre les Actions et les Commands.
    Je te laisse lire ça ^^ C'est très intéressant et instructif.

    Voilà, à+
    Gueritarish

    [EDIT:] Pour apporter quelques précisions à ma réponse, avec les Commands tu peux surcharger des commandes existantes en leur affectant un Handler que tu auras écris. Je ne pense pas que tu puisses faire ça avec les Actions.
    Pas de questions technique par MP, les forums sont là pour ça.

  7. #7
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    merci pour ces précisions, je vais lire ça de suite ^^
    Sinon pour ceux que ça intéresse j'ai trouvé un lien qui explique un peu la création de contributions diverses (menu, toolbar, etc...) avec les URI concernées : menuContributions .

    Merci encore,
    à bientot sans doute
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  8. #8
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    ah ! une dernière chose même si ça devrait être un nouveau thread..
    En faisant avec les Commands j'ai donc cette classe :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class MaCommande1 extends AbstractHandler implements IHandler {
     
    	@Override
    	public Object execute(ExecutionEvent event) throws ExecutionException {
     
    		MessageDialog.openInformation(null, 
    				"CONFIMATION COMMANDE", 
    				"Vous avez exécuté la commande 1");
     
    		return null;
    	}
    }
    Cela dit comment puis-je récupérer l'objet sélectionné ? par exemple l'Item de mon Tree sur lequel j'ai fais mon clic droit ?

    [EDIT] :
    j'ai trouvé ceci que j'ai ajouté dans mon execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Override
    	public Object execute(ExecutionEvent event) throws ExecutionException {
     
    		ResultatsRechercheView resRechercheView = (ResultatsRechercheView)PlatformUI.getWorkbench().
    												getActiveWorkbenchWindow().getActivePage().findView(ResultatsRechercheView.ID);
     
    		ISelection s = resRechercheView.getSelection();
                  //..............
    si d'autres solutions existent je prends !

    merci d'avance
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  9. #9
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Non, je pense que c'est la bonne solution... Après, il ne faut pas oublier d'enregistrer ton TreeViewer comme ISelectionProvider dans le Site de ta View. Sinon, tu peux éventuellement jeter un œil sur cet article d'Eclipse qui parle du service de sélection (mais en gros ça revient au même... mais c'est toujours bon de s'informer ^^).
    Du coup, avec le ISelectionService la récupération de la sélection se fait comme suit :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ISelectionService service = (ISelectionService) PlatformUI.getWorkbench().getService(ISelectionService.class);
    if (service != null) {
        ISelection selection = service.getSelection(MyView.ID);
    }

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  10. #10
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    ouaip je connais cet article je vais donc rester sur cette solution,


    a+
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/11/2013, 09h43
  2. modification d'un menu existant
    Par chrtophe dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 13/09/2011, 09h39
  3. Contribuer au menu contextuel de la vue problème
    Par mina86 dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 04/10/2009, 11h02
  4. plugin comme sous menu de menu existant
    Par henpower dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/05/2008, 09h21
  5. Ajout d'un menu personalisé à un menu existant
    Par tazthedev dans le forum Delphi
    Réponses: 2
    Dernier message: 31/10/2006, 15h24

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