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 :

Pb : Barre d'outil, Item DROP_DOWN


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut Pb : Barre d'outil, Item DROP_DOWN
    Bonjour,

    Perimetre :
    J'ai commencé les Techno SWT et Jface il y a un mois à peine et actuellement je travail sur une évolution d'un logiciel.

    J'ai une methode dans ma gestion d'IHM qui s'occupe de ma barre d'outil "fillCoolBar".
    Je gère mes éléments de la barre par des "IToolBarManager" en leur ajoutant succéssivement des "IWorkbenchAction" soit des class que j'ai instancié et qui gèrent mes action et la tête de mon item.
    En suite je les rajoute à ma coolbar

    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
    protected void fillCoolBar(ICoolBarManager coolBar) {
            .
            .
            .
            IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | 
                                                                            SWT.RIGHT);
            toolbar.add(addPJFileAction);
            toolbar.add(addPjPostitAction);
            toolbar.add(addPjSonAction);
            toolbar.add(addPjPhotoAction);
     
            coolBar.add(new ToolBarContributionItem(toolbar, "main")); 
            .
            .
            .
    }
    Problème :
    Ce que j'aimerai faire c'est modifier ma méthode de façon à créer dans ma IToolBarManager un sous menu de façon à regrouper mes actions dans un bouton type "Drop_Down".
    J'avais pensé a utiliser une ToolBar et des ToolItem mais je n'ai pas trouvé comment y inclure mes "IWorkbenchAction".

    Si vous avez une piste vers laquelle m'orienter ce serait pas mal.

    Merci d'avance et bonne journée à tous

  2. #2
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut
    Salut Talkirun,

    Ta méthode fillCoolBar, fait-elle partie de la classe ActionBarAdvisor ? Dans le cas où tu développes une application RCP ? (les classes générées par Eclipse)

    Dans tous les cas, dans cette méthode et via le ICoolBarManager tu peux avoir accés à la CoolBar en créant un ToolBarContributionItem.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ToolBarContributionItem myItem = 
      new ToolBarContributionItem(coolBarManager) {
        public void fill(CoolBar pCoolBar, int pIndex) {
        ...
        }
      });
     coolBarManager.add(myItem);
    En fait, ton ToolBarContributionItem te permet de créer les éléments dans ta CoolBar. Ne pas oublier la dernière ligne.

    Un CoolItem (élément d'un CoolBar) peut avoir des chevrons comme style (Drop_Down). Les chevrons d'un CoolItem sont utilisés au moment où la largeur du CoolItem est inférieur à la largeur du contenant (la fenêtre en générale).

    Au CoolItem tu vas ajouter une ToolBar qui contiendra des ToolItem dont le style sera à Drop_Down. De cette façon chaque ToolItem (un élément de ta barre d'outils) pourra avoir un popup menu.

    Oula c'est tout compliqué tout ça, voici le reste de l'exemple.

    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
     
    CoolItem coolItem = new CoolItem(pCoolBar, SWT.DROP_DOWN);
    ToolBar toolBar = new ToolBar(pCoolBar, SWT.WRAP | SWT.FLAT);
    ToolItem toolItem1 = new ToolItem(toolBar, style);
    toolItem1.setText("Mon Action");
    ToolItem toolItem2 = new ToolItem(toolBar, style);
    toolItem2.setText("Mon Action");
    ToolItem toolItem3 = new ToolItem(toolBar, style);
    toolItem3.setText("Mon Action");
    coolItem.setControl(toolbar);
    Point size = toolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT);
    Point coolSize = coolItem.computeSize(size.x, size.y);
    final int minimumSize = 10;
    coolItem.setMinimumSize(minimumSize, coolSize.y);
    coolItem.setPreferredSize(coolSize);
    coolItem.setSize(coolSize);
    Normalement ça devrait faire ce que tu as dit. Ensuite, il faut mettre des écouteurs sur les ToolItems pour savoir si tu as des réponses à la sélection de tes actions.

    Mickaël
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut
    Lu Michaël,

    Ma méthode fillCoolBar fait bien partie d'une class ActionBarAdvisor et c'est une appli RCP.

    J'ai rechangé mon appli en modifiant comme tu me l'avais spécifié grace à un "ToolBarContributionItem".
    Le pb déja c'est que le constructeur prend automatiquement un IToolBarManager et non un "CoolBarManager".
    Bref je l'ai adapté pour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ToolBarContributionItem myItem = 
      new ToolBarContributionItem(new ToolBarManager(SWT.FLAT | SWT.RIGHT)) {
        public void fill(CoolBar pCoolBar, int pIndex) {
        ...
        }
      });
     coolBarManager.add(myItem);
    En suite tu m'as donné un bon cours sur les CoolItem et je t'en remerci.
    Mais j'ai une remarque sur cette partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toolItem3.setText("Mon Action");
    coolItem.setControl(toolbar);
    Tu me permet de rajouter un contrôle sur mon coolItem mais le parametre toolBar n'est pas un control par defaut donc j'ai du zapper quelque chose.

    En suite mon probleme initial est toujours d'actualité à savoir :
    Sur mes IAction (IWorkbenchAction)
    comment je peut les inclures dans les ToolItem que tu m'as montré.

    Rappel : J'ai oublié de t'en parler et je m'en excuse.
    Mes IWorkbenchAction sont des class qui gèrent mes évènements et la forme de mon composant (text, image...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class AddPjPhotoAction extends Action implements IWorkbenchAction, IRunnableWithProgress, 
    PropertyChangeListener {
    ...}
    Dans mon ancien code je l'incorporais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toolbar.add(new AddPjPhotoAction(window));
    A tu une idée car ça m'embeterait de casse mes classes.

    Ca fait beaucoup de questions mais c'est parce que je galère depuis pas mal de temps

    Jte remerci.

  4. #4
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut
    Salut,

    Ok pour le premier problème, un bête copié/collé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    toolItem3.setText("Mon Action");
    coolItem.setControl(toolbar);
    Pour le deuxième problème, je voulais dire que tu pouvais ajouter un listener de type SelectionListener sur un ToolItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    toolItem3.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
      ... // Ton Code
     }
    });
    Pour ton histoire d'appeler ton objet action, il y a bien une solution mais bon c'est pas très propre. Pour la suite, je ne suis pas responsable

    Pour chaque ToolItem tu mappes le texte, l'image et le run de ton objet action avec le ToolItem.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    final Action myAction = new AddPjPhotoAction(window)
    ToolItem toolItem1 = new ToolItem(toolBar, style);
    toolItem1.setText(myAction.getText());
    toolItem1.setImage(myAction.getImage());
    toolItem1.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       myAction.run();
     }
    });
    Désolé, je sors ...

    Mickaël
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

Discussions similaires

  1. [] Raccourci clavier pour bouton d'une barre d'outil
    Par Sébastien dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/03/2003, 17h02
  2. [VB6]Barre d'outil
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/02/2003, 11h48
  3. [VBA-E] Barre d'outil créée automatiquement
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2002, 16h45
  4. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50
  5. Barre d'outils
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/08/2002, 22h48

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