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 :

Ouvrir un popup quand on clique sur un éditeur


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Points : 25
    Points
    25
    Par défaut Ouvrir un popup quand on clique sur un éditeur
    salut,
    j'ai un éditeur gmf,quand j'utilise un outil de ma palette , je veux avant que mon composant graphqiue apparaisse , ouvrir un popup !

    j'ai une classe que j'ai récupérer d'eclipse tout bête :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    package Descripteur.actions;
     
    import org.eclipse.jface.action.IAction;
    import org.eclipse.jface.viewers.ISelection;
    import org.eclipse.ui.IEditorActionDelegate;
    import org.eclipse.ui.IEditorPart;
    import org.eclipse.ui.IWorkbenchWindow;
    import org.eclipse.ui.IWorkbenchWindowActionDelegate;
    import org.eclipse.ui.PlatformUI;
    import org.eclipse.jface.dialogs.MessageDialog;
     
    /**
     * Our sample action implements workbench action delegate.
     * The action proxy will be created by the workbench and
     * shown in the UI. When the user tries to use the action,
     * this delegate will be created and execution will be 
     * delegated to it.
     * @see IWorkbenchWindowActionDelegate
     */
    public class SampleAction implements IWorkbenchWindowActionDelegate,IEditorActionDelegate {
        private IWorkbenchWindow window;
        private IAction action;
        /**
         * The constructor.
         */
        public SampleAction() {
        }
     
        /**
         * The action has been activated. The argument of the
         * method represents the 'real' action sitting
         * in the workbench UI.
         * @see IWorkbenchWindowActionDelegate#run
         */
        public void run(IAction action) {
            MessageDialog.openInformation(
                window.getShell(),
                "Ddd Plug-in",
                "Hello, Eclipse world");
        }
     
        /**
         * Selection in the workbench has been changed. We 
         * can change the state of the 'real' action here
         * if we want, but this can only happen after 
         * the delegate has been created.
         * @see IWorkbenchWindowActionDelegate#selectionChanged
         */
        public void selectionChanged(IAction action, ISelection selection) {
        }
     
        /**
         * We can use this method to dispose of any system
         * resources we previously allocated.
         * @see IWorkbenchWindowActionDelegate#dispose
         */
        public void dispose() {
        }
     
        /**
         * We will cache window object in order to
         * be able to provide parent shell for the message dialog.
         * @see IWorkbenchWindowActionDelegate#init
         */
        public void init(IWorkbenchWindow window) {
            this.window = window;
        }
     
        public void setActiveEditor(IAction action, IEditorPart targetEditor) {
            this.action = action;
            if (targetEditor!=null) {
                init(targetEditor.getSite().getWorkbenchWindow());
            } else {
                init(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
            }
     
        }
    }
    mais je n'arrive pas à la lancer !

    les actions sont valables pour une persperctive je crois , moi je veux juste une action pour mon editeur ! peut-on m'éclairer !!!!
    merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    je crois qu'il faut utiliser IObjectActionDelegate !

    voici une classe généré de mon projet :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    package Descripteur.diagram.part;
     
    import org.eclipse.emf.edit.ui.action.LoadResourceAction.LoadResourceDialog;
    import org.eclipse.jface.action.IAction;
    import org.eclipse.jface.viewers.ISelection;
    import org.eclipse.jface.viewers.IStructuredSelection;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.ui.IObjectActionDelegate;
    import org.eclipse.ui.IWorkbenchPart;
    import Descripteur.diagram.edit.parts.RacineDocumentEditPart;
     
    /**
     * @generated
     */
    public class RepresentationLoadResourceAction implements IObjectActionDelegate {
     
        /**
         * @generated
         */
        private RacineDocumentEditPart mySelectedElement;
     
        /**
         * @generated
         */
        private Shell myShell;
     
        /**
         * @generated
         */
        public void setActivePart(IAction action, IWorkbenchPart targetPart) {
            myShell = targetPart.getSite().getShell();
        }
     
        /**
         * @generated
         */
        public void run(IAction action) {
            LoadResourceDialog loadResourceDialog = new LoadResourceDialog(myShell,
                    mySelectedElement.getEditingDomain());
            loadResourceDialog.open();
        }
     
        /**
         * @generated
         */
        public void selectionChanged(IAction action, ISelection selection) {
            mySelectedElement = null;
            if (selection instanceof IStructuredSelection) {
                IStructuredSelection structuredSelection = (IStructuredSelection) selection;
                if (structuredSelection.size() == 1
                        && structuredSelection.getFirstElement() instanceof RacineDocumentEditPart) {
                    mySelectedElement = (RacineDocumentEditPart) structuredSelection
                            .getFirstElement();
                }
            }
            action.setEnabled(isEnabled());
        }
     
        /**
         * @generated
         */
        private boolean isEnabled() {
            return mySelectedElement != null;
        }
     
    }
    mais comment l'appeler y pas de constructeur ! quand on l'appelle ça lance run ! ok c'est quoi qui doit l'appeler ! je débute sous eclipse !
    merci

  3. #3
    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
    Il y a une questions qui me vient à l'esprit.

    Comme tu ne places pas ton action dans un endroit standard d'un éditeur (la barre de tâches de l'éditeur), es-tu certain qu'un point d'extension pour activer des actions est disponible dans la palette d'un éditeur GEF ou GMF dans ton cas?

    Sinon, tu devrais essayer de trouver toi même où passe cette action de la palette et lancer ton popup par là.

    Ton action RepresentationLoadResourceAction, elle vient de où dans ton projet? Est-ce qu'elle est définie dans le plugin.xml?
    RCP rulez!

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    oui c'est une classe généré de mon projet,elle est défini dans mon plugin.xml ! c'est pas vraiment ça que je veux ! et je ne dois pas passer par une action si je commence à comprendre, y me faut une contribution objet ou autre chose !

    doit falloir référencer une IobjectActionDelegate !
    je veux que quand je clique sur mon éditeur avec un certain outil de ma palette que ça ouvre un popup pour choisir une ressource du workspace !
    j'ai localiser la portion de code ou mettre mon popup ! mais j'arrive à rien !

    j'essaye de faire du code spaghetti c'est pour ça merde complet ! j'arrive pas à faire un truc à la con parcequ'y a encore des truc qui m'échappe dans l'api d'eclipse ! je sens que je suis pas loin mais ...

  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
    Je crois pas que tu sois très loin effectivement. Mais je ne suis pas convaincu que tu doives hériter de IObjectActionDelegate nécessairement. Ce que tu dois faire si je comprends bien c'est de trouver où tu dois intercepter l'action de ton outil de ta palette lors du clic sur ton éditeur. (Tu mentionnes l'avoir trouvé)

    Maintenant reste à être capable de "plugger" ton popup et de sélectionner ta resource du workspace.

    Autre question, ta ressource, elle va servir à quoi sur ton éditeur?
    RCP rulez!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    dans un premier temps je voulais être capable d'ouvrir un popup en interceptant mon clic sur l'éditeur ! mais en réalité voici ce à quoi je dois arriver :

    je dois générer du code avec acceleo.
    pour cela je dois fournir au générateur un xmi et un template acceleo.
    je devrais obtenir un code xmi que mon éditeur gmf peut comprendre !

    ensuite je dois mettre ce code généré dans mon éditeur gmf ! pour qui m'affiche la représentation graphique !

    et je suis entrain de demander si c'est possible !

    quand j'ouvre mon éditeur gmf en mode texte et que je rajoute du code xmi, il comprend !
    mais aller rajouter du code quand il est déja ouvert en mode diagramme ! c pas pareille !

    mais effectivement je devrais attaquer le probléme en ne m'écartant pas trop de ce que je veux !

  7. #7
    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
    Peut-être que GMF est trop restrictif pour tes besoins.
    RCP rulez!

Discussions similaires

  1. Ouvrir un fenêtre quand on clique sur une zone du graphique
    Par palaschese dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 04/02/2014, 17h15
  2. Mettre une fenêtre popup au premier plan quand on clique sur le lien
    Par metabaron81 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/03/2011, 16h58
  3. Popup personalisé qui s'ouvre quand on clique sur une pub.
    Par XpFive dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/06/2009, 09h02
  4. Ouvrir un fichier Excel quand on clique sur un bouton
    Par perdeak dans le forum Composants VCL
    Réponses: 10
    Dernier message: 31/01/2008, 11h12
  5. Insérer un code quand on clique sur un smiles
    Par Blade dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/12/2004, 01h10

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