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 :

[JFace] Menu contextuel inutile dans un TableViewer


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 : 41
    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
    Par défaut [JFace] Menu contextuel inutile dans un TableViewer
    Bonjour tout le monde,

    Mon problème concerne la présence non désirée d'un menu contextuel dans un TableViewer... Je suis dans une application de plug-in Eclipse. Dans cette application, j'ai un TableViewer qui permet la représentation de données. Dans ce TableViewer, j'ai une classe qui implémente EditingSupport pour permettre l'édition de cellules du tableau. Or, quand j'édite une cellule à l'aide d'un ComboBoxCellEditor ou d'un TextCellEditor, j'ai un menu contextuel qui apparaît au clic droit de l'utilisateur. Outre le fait qu'il soit indésirable, ce menu contextuel se basant sûrement sur la locale, je me retrouve avec un menu contextuel en français alors que tout les autres sont en anglais dans l'application

    Une idée sur la façon de supprimer ce menu?

    à+
    Gueritarish

  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 : 41
    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
    Par défaut
    Ok, je devrais apprendre à chercher sur mon ami ..
    J'ai donc trouvé une solution qui consiste à ne pas activer le CellEditor sur un clic droit. Pour ceux qui sont intéressé :
    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
     
    /**
     * {@inheritDoc}
     */
    @Override
    public void activate(final ColumnViewerEditorActivationEvent activationEvent) {
        super.activate(activationEvent);
        if (activationEvent.getSource() instanceof MouseEvent) {
            MouseEvent m = (MouseEvent) activationEvent.getSource();
            if (activationEvent.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION && m.button == MOUSE_RIGHT_BUTTON) {
                activationEvent.cancel = true;
            }
        }
    }

    Voilà, à+
    Gueritarish

    [EDIT:] Le code précédent est très utile pour empêcher l'utilisateur d'avoir accès au CellEditor par le clic droit. Par contre, il ne sert à rien quand il s'agit d'empêcher l'ouverture du menu contextuel indésirable quand le CellEditor est actif.

  3. #3
    Membre chevronné Avatar de desert
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 414
    Par défaut
    Salut,
    Normalement (si j'ai bien suivi), il suffit de récupérer le Control sur lequel se base ton CellEditor (Text pour TextCellEditor, etc...) et de lui donner comme menu contextuel un menu vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TextCellEditor editor = new TextCellEditor(table, SWT.SINGLE);
    Text text = (Text) editor.getControl();
    text.setMenu(new Menu(text));
    En espérant que cela t'aide.

  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 : 41
    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
    Par défaut
    Alors merci pour ta réponse...
    J'avais déjà testé un truc dans le même style:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MenuManager menu = new MenuManager();
    menu.setRemoveAllWhenShown(true);
    text.setMenu(menu.getMenu());
    Dans la méthode createPartControl de mon TextCellEditor (pour l'exemple)... Et le menu contextuel affiché est toujours celui qu'il ne faut pas. Bon, peut-être que je me gauffre en utilisant un MenuManager au lieu d'un Menu...
    Je vais essayer quand même, on sait jamais.

    Merci, à+
    Gueritarish

    [EDIT:] Ça marche impeccable. Merci pour le tuyau ^^

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/08/2009, 14h54
  2. Menu contextuel défectueus dans le menu démarrer
    Par Sami Xite dans le forum Windows XP
    Réponses: 0
    Dernier message: 16/05/2008, 21h11
  3. [VBA]Menu contextuel dynamique dans un état
    Par marcb03 dans le forum VBA Access
    Réponses: 32
    Dernier message: 13/04/2007, 14h06
  4. [C#] Menu contextuel explorer dans mon application
    Par mikyfpc dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/11/2005, 13h45

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