eclipse插件中的文本编辑器未正确执行

时间:2015-12-28 16:20:20

标签: eclipse eclipse-plugin swt text-editor undo-redo

我创建了多页面HTML编辑器,其中一个选项卡有文本编辑器。我已将全局操作处理程序设置为源编辑器中撤消/重做操作的操作栏。每当我在源代码编辑器中添加一些东西然后撤消它,它就不会在第一次尝试时返回相同的代码。它在第二次尝试中完成。任何人都可以帮我解决这个问题。

在主编辑器中覆盖setFocus()方法,并在此方法中调用源编辑器的以下方法。

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();
}

由于

1 个答案:

答案 0 :(得分:0)

您确定通过覆盖setFocus()来设置全局操作吗?看看这个:https://wiki.eclipse.org/FAQ_How_do_I_enable_global_actions_such_as_Cut,_Paste,_and_Print_in_my_editor%3F 它说它们需要在方法setActiveEditor()

中设置

我猜你为什么第二次看到它工作的原因是 - 当你第一次点击你的编辑器获得焦点并调用setFocus时,只有这样才设置了全局动作。然后第二次它会起作用,因为现在已经设置了动作。