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
jusqu'ici pas de soucis je vois bien le menu éditer et les actions grisées.
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);
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 :
qui s'exécute ainsi :
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>
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 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) { }
mais les actions undo/redo restent grisées !
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); }
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
Partager