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 :

[RCP] LabelRetargetAction & opération undo/redo


Sujet :

Eclipse Platform

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut [RCP] LabelRetargetAction & opération undo/redo
    Bonjour,
    j'ai une vue avec des opérations undo/redo qui fonctionnent.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    	public class ZoneExplorerTreeView extends ViewPart {
    	/**
             * Les actions annuler et refaire
             */
    	private UndoActionHandler undoAction;
    	private RedoActionHandler redoAction;
     
    	/**
             * Le contexte d'annulation privé pour l'explorateur de zone
             */
    	private IUndoContext undoContext ;
     
    	/**
             * Cette méthode est appelé lors de la création de la vue 
             * et permet d'initialiser celle-ci
             */
    	@Override
    	public void createPartControl(Composite parent) {
     
                     //......
     
    		//Création des commandes d'undo/redo
    		createGlobalActionHandlers();
    		//Création du menu contextuel
    		hookContextMenu();
    	}
     
    	/**
             * Création des commandes d'undo/redo
             */
    	private void createGlobalActionHandlers() {
    		undoContext = PlatformUI.getWorkbench().getOperationSupport().getUndoContext();
    		// set up action handlers that operate on the current context
    		undoAction = new UndoActionHandler(this.getSite(), undoContext);
    		redoAction = new RedoActionHandler(this.getSite(), undoContext);
     
    		IActionBars actionBars = getViewSite().getActionBars();
    		actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
    				undoAction);
     
    		actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(),
    				redoAction);
     
    	}
     
    	/**
             * Ajoute le menu contextuel ‡ la vue
             */
    	private void hookContextMenu() {
    		MenuManager menuMgr = new MenuManager("#PopupMenu");
    		menuMgr.setRemoveAllWhenShown(true);
    		menuMgr.addMenuListener(new IMenuListener() {
    			public void menuAboutToShow(IMenuManager manager) {
    				ZoneExplorerTreeView.this.fillContextMenu(manager);
    			}
    		});
    		Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
    		treeViewer.getControl().setMenu(menu);
    		getSite().registerContextMenu(menuMgr, treeViewer);
    	}
     
    	/**
             * Ajoute les actions undo et redo au menu contextuel.
             */
    	private void fillContextMenu(IMenuManager manager) {
    		manager.add(undoAction);
    		manager.add(redoAction);
    		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
    	}
    ....
    }
    Les labels des actions undo/redo du menu contextuel se mettent à jour parfaitement.

    J'ai ajouté les undo/redo au menu principal et au menu contextuel de ma vue
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
       <extension
             point="org.eclipse.ui.menus">
          <menuContribution
                locationURI="menu:org.eclipse.ui.main.menu">
             <menu
                   label="Edition">
                <command
                      commandId="org.eclipse.ui.edit.undo"
                      icon="icons/undo.gif"
                      label="Undo"
                      style="push">
                </command>
                <command
                      commandId="org.eclipse.ui.edit.redo"
                      icon="icons/redo.gif"
                      label="Redo"
                      style="push">
                </command>
             </menu>
          </menuContribution>
          <menuContribution
                locationURI="popup:org.pegase.ui.views.zoneExplorerTreeView">
             <command
                   commandId="org.eclipse.ui.edit.undo"
                   icon="icons/undo.gif"
                   label="Undo"
                   style="push">
             </command>
             <command
                   commandId="org.eclipse.ui.edit.redo"
                   icon="icons/redo.gif"
                   label="Redo"
                   style="push">
             </command>
          </menuContribution>
       </extension>
    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
    17
    18
     
    public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
    	public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
    		super(configurer);
    	}
     
    	@Override
    	protected void makeActions(final IWorkbenchWindow window) {
    		IWorkbenchAction undoAction = ActionFactory.UNDO.create(window);
    		register(undoAction);
    		IWorkbenchAction redoAction = ActionFactory.REDO.create(window);
    		register(redoAction);
    	}
     
    	protected void fillMenuBar(IMenuManager menuBar) {
     
    	}
    }

    Les commandes ajoutées via les extensions fonctionnent mais les labels ne sont pas mis à jours suivant l'opération à annuler/refaire
    Voir la pièce jointe. En Haut, les menu ajoutés directement dans ma vue.
    En bas, (icônes verts) les menu ajoutés via les extensions

    D'avance merci pour votre aide.
    Images attachées Images attachées  

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

Discussions similaires

  1. [Eclipse plug-in]Limite des opérations d'Undo/Redo
    Par Gueritarish dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 20/07/2009, 11h38
  2. [Débutant] Undo/Redo sur appli RCP
    Par pingoui dans le forum Eclipse Platform
    Réponses: 9
    Dernier message: 02/04/2009, 12h09
  3. Undo / Redo. Peut-on enregistrer que certaines actions ?
    Par Peewee dans le forum Général Java
    Réponses: 2
    Dernier message: 03/04/2006, 11h33
  4. Réponses: 5
    Dernier message: 31/03/2006, 18h12
  5. Undo-Redo (Ctrl-Z, Ctrl-Y) : comment le gérer ?
    Par MiJack dans le forum Langage
    Réponses: 6
    Dernier message: 13/01/2006, 13h26

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