Bonjour à tous,
Dans le cadre de mon application, je dois limiter la pile des opérations d'undo/redo aux 5 dernières opérations pour chaque Vue et Editeurs de ma perspective. Pour le moment, la technique que j'ai implémenté consiste à créer un UndoContext pour chaque Vue et chaque instance d'Editeur :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IUndoContext undoContext = new UndoContext(); UndoRedoActionGroup undoRedoActions = new UndoRedoActionGroup(getSite(), undoContext, true); undoRedoActions.fillActionBars(getEditorSite().getActionBars()); // set the limit of operation in the OperationHistory IOperationHistory operationHistory = OperationHistoryFactory.getOperationHistory(); operationHistory.setLimit(undoContext, 5);
Ensuite, je crée un OperationHistoryListener pour chaque Part et je l'ajoutes à la liste des listeners de l'operationHistory. Quand une opération d'édition est faite sur un Editeur, j'ajoute son UndoContext à cette opération.
Mon problème, c'est que quand j'ai plusieurs Editeurs ouvert et que je fais une opération d'édition, cette première opération ne met pas à jour le label de l'action d'undo dans le menu Edit... Quand une seconde opération d'édition est effectué sur un autre éditeur, l'action d'undo est permise et mise à jour pour chaque éditeur -_-".
En d'autres termes, je peux annuler cette opération sur le second éditeur à partir de n'importe quel autre.
Une idée de ce que je pourrais faire de travers?
Gueritarish
Partager