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 :

Actions undo et redo qui ne se dégrisent pas


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 37
    Points : 33
    Points
    33
    Par défaut Actions undo et redo qui ne se dégrisent pas
    Bonjour,

    J'utilise Eclipse 3.8.1 pour coder une appli perso. J'ai ajouté dans le menu éditer de mon appli les actions undo et redo dans ma classe ActionBarAdvisor en n'oubliant pas de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    undoAction = ActionFactory.UNDO.create(window);
    register(undoAction);
    redoAction = ActionFactory.REDO.create(window);
    register(redoAction);
    jusqu'ici pas de soucis je vois bien le menu éditer et les actions grisées.

    Puis à partir d'une de mes vues (qui hérite de CommonNavigator) j'exécute une action d'un popup menu définie comme ceci :
    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
       <extension
             point="org.eclipse.ui.popupMenus">
          <objectContribution
                adaptable="false"
                id="test.personnesElementPopup"
                objectClass="test.ui.resources.PersonnesElement">
             <action
                   class="test.ui.actions.personne.NouvellePersonneAction"
                   enablesFor="1"
                   id="test.newPersonAction"
                   label="%NouvellePersonne.name"
                   menubarPath="navigatorGroup.new">
             </action>
          </objectContribution>
       </extension>
    qui s'exécute ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		IUndoableOperation aOperation = new NouvellePersonneOperation("Ajout personne", window, selection);
    		try {
    			IWorkbenchOperationSupport aWorkbenchOperationSupport = window.getWorkbench().getOperationSupport();
    			aOperation.addContext(aWorkbenchOperationSupport.getUndoContext());
    			aWorkbenchOperationSupport.getOperationHistory().execute(aOperation, null, null);
    		}
    		catch (ExecutionException e) {
    		}
    j'ai bien ajouté dans ma vue ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public void createPartControl(Composite aParent) {
    		super.createPartControl(aParent);
    		IWorkbenchOperationSupport aWorkbenchOperationSupport = getSite().getWorkbenchWindow().getWorkbench().getOperationSupport();
    		UndoActionHandler aUndoAction = new UndoActionHandler(getSite(), aWorkbenchOperationSupport.getUndoContext());
    		RedoActionHandler aRedoAction = new RedoActionHandler(getSite(), aWorkbenchOperationSupport.getUndoContext());
    		IActionBars actionBars = getViewSite().getActionBars();
    		actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), aUndoAction);
    		actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), aRedoAction);
    	}
    mais les actions undo/redo restent grisées !
    Pourtant en debuggant je passe bien après l'exécution de mon action dans
    OperationHistoryActionHandler.update et UndoActionHandler.shouldBeEnabled renvoie true, le texte du undo est bien positionné avec la valeur donnée par mon action mais rien ne se rafraichit dans le menu.

    Je n'arrive pas à comprendre ce que je rate...
    Merci d'avance pour votre aide.

    MystEre

  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,

    J'imagine que ta classe NouvellPersonneOperation hérite d'AbstractOperation ou, au moins, implémente l'interface IUndoableOperation. Est-ce que tu as vérifié que les méthodes canUndo() et canRedo() renvoie bien true?
    J'imagine que oui, mais c'est toujours utile à vérifier !
    Sinon, tout m'a l'air bon. Tu peux éventuellement rajouter un NullProgressMonitor, dans ton exécution...

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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Bonjour et merci pour ta réponse,

    Oui mon opération hérite bien de AbstractOperation et du coup canUndo et canRedo renvoyent bien true.
    Merci pour le conseil du NullProgressMonitor.

    J'ai mis ce problème de côté pour l'instant et avancent sur d'autres trucs, si je finis par trouver la solution je reviendrais l'indiquer, en attendant si vous avez d'autres idées n'hésitez pas.

    MystEre

Discussions similaires

  1. Undo et redo déjà implementé ?
    Par keul85 dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 29/03/2010, 13h36
  2. [C# graphisme] Annuler une action.(Undo)
    Par ndiayebass dans le forum C#
    Réponses: 5
    Dernier message: 25/10/2007, 17h17
  3. Requete d'action qui ne s'execute pas
    Par userB dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/08/2007, 13h47
  4. Action qui ne s'execute pas là
    Par kamaldev dans le forum Struts 1
    Réponses: 4
    Dernier message: 02/08/2006, 12h22
  5. [débutant][Stratégie]Gestion undo et redo
    Par pacha1 dans le forum Général Java
    Réponses: 12
    Dernier message: 28/06/2004, 11h55

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