我在View中使用sourceViewer,我已定义命令org.eclipse.ui.edit.findReplace并为该命令创建一个处理程序以调用FindReplace动作。

我还定义了按键绑定来调用命令(Ctrl + F)

现在,我在View类中重写了getAdapter方法,并添加了一个检查类是否等于org.eclipse.jface.text.IFindReplaceTarget,然后返回textViewer.getFindReplaceTarget()。

但是对我来说什么都没有用,在快捷键(Ctrl + F)上既没有调用命令,也没有在getAdapter方法中检查是否为IFindReplaceTarget编写了代码。

谁能帮我解决问题,或者如何在SourceViewer中实现查找替换功能?

最佳答案

我在Eclipse源代码中看不到任何使用Handler的东西,而是它们都使用了较旧的样式动作。这是org.eclipse.jdt.internal.debug.ui.display.DisplayView的作用:

FindReplaceAction findReplaceAction = new FindReplaceAction(bundle, "find_replace_action_", this);
findReplaceAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_FIND_AND_REPLACE);
setGlobalAction(ActionFactory.FIND.getId(), findReplaceAction);

protected void setGlobalAction(String actionID, IAction action) {
    IActionBars actionBars = getViewSite().getActionBars();
    actionBars.setGlobalActionHandler(actionID, action);
}

09-27 17:04