2015-12-28 3 views
0

J'ai créé un éditeur HTML multipage dans lequel un onglet a un éditeur de texte. J'ai défini le gestionnaire d'actions globales sur la barre d'actions pour les actions annuler/rétablir dans l'éditeur de source. Chaque fois que j'ajoute quelque chose dans l'éditeur de source puis l'annule, il ne retourne pas le même code dans la première tentative. Il se termine dans la deuxième tentative. Quelqu'un peut-il m'aider à résoudre ce problème.L'éditeur de texte dans le plugin eclipse n'est pas correctement exécuté

Dans l'éditeur principal, remplacez la méthode setFocus() et dans cette méthode, appelez la méthode suivante de l'éditeur de source.

public void setUndoRedoActionHandlers() { 

    final IActionBars actionBars = getEditorSite().getActionBars(); 
    actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), 
      mUndoAction); 
    actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), 
      mRedoAction); 
    actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), 
      mDeleteAction); 
    actionBars.setGlobalActionHandler(
      ITextEditorActionConstants.DELETE_LINE, mDeleteLineAction); 

    actionBars.updateActionBars(); 
} 

Merci

+0

Comment cela peut-il être résolu sans même regarder le code ?? –

+0

Vérifiez le code source ci-dessus. –

+0

Si je me souviens bien, vous devriez utiliser 'MultiPageEditorActionBarContributor' comme classe contributeur de la barre d'actions de l'éditeur. –

Répondre

0

sont en redéfinissant setFocus() vous assurer que vous définissez les actions mondiales? Regardez ceci: https://wiki.eclipse.org/FAQ_How_do_I_enable_global_actions_such_as_Cut,_Paste,_and_Print_in_my_editor%3F Il dit qu'ils doivent être fixés à l'intérieur de la méthode setActiveEditor()

La raison pour laquelle je pense que la raison pour laquelle vous voyez ce deuxième temps de travail est - Lorsque la première fois que vous cliquez sur votre éditeur se concentrer et setFocus est appelé et seulement alors les actions globales sont définies. Ensuite, la deuxième fois, cela fonctionnera car les actions sont maintenant définies.

+0

Merci pour la réponse, en fait, j'ai le problème. C'était dû au fait que l'action de suppression est déjà active sur l'éditeur de source, donc quand je fais l'opération simple de suppression du concepteur alors la suppression se produit sur l'éditeur de source aussi bien que la suppression se produit du côté de concepteur code. Donc, deux changements sont arrivés en un clic. Et donc annuler le dernier code source est mis à jour mais la première suppression sur le code source n'est pas mise à jour et donc le problème. –

+0

J'ai ajouté l'éditeur et l'éditeur de texte dans l'éditeur de formulaires. Je souhaite ajouter une fonctionnalité de suppression à la fois sur l'éditeur et l'éditeur de source, qui se comportera différemment à la fois sur l'éditeur. Pouvez-vous me dire comment puis-je réaliser cette fonctionnalité? –

+0

@ishan Je ne peux pas me souvenir exactement de ce que vous devez faire exactement. S'il vous plaît regardez [FAQ eclipse editor] (https://wiki.eclipse.org/FAQ_How_do_I_get_started_with_creating_a_custom_text_editor%3F) Je suppose que vous devez surcharger setAction (DELETE) – SomeDude