Eclipse plugin 激活jface TextViewer eclipse工作台操作的查找/替换
我制作了一个带有TextViewer界面的eclipse插件,用于显示文本文档,但标准的查找/替换仍处于灰色模式 我假设您在视图中使用TextViewer,而不是编辑器。在这种情况下:Eclipse plugin 激活jface TextViewer eclipse工作台操作的查找/替换,eclipse-plugin,Eclipse Plugin,我制作了一个带有TextViewer界面的eclipse插件,用于显示文本文档,但标准的查找/替换仍处于灰色模式 我假设您在视图中使用TextViewer,而不是编辑器。在这种情况下: 使用TextViewer的视图必须“适应”到org.eclipse.jface.text.IFindReplaceTarget,即其getAdapter()必须从查看器返回目标 您需要显式注册“org.eclipse.ui.edit.findReplace”命令的处理程序(可以是org.eclipse.ui.te
org.eclipse.jface.text.IFindReplaceTarget
,即其getAdapter()
必须从查看器返回目标org.eclipse.ui.texteditorFindReplaceAction
)。退房开始吧我用Martii Kärik的指针找到了这个问题的答案。我已经让它使用以下代码,但是它使用了TextEditor中的内部字符串标识符。不过,事情还是这样
getAdapter()
必须像这样实现(viewer
是TextViewer
的一个实例)
createPartControl()
中,添加以下代码:
FindReplaceAction findAction= new FindReplaceAction(ResourceBundle.getBundle("org.eclipse.ui.texteditor.ConstructedTextEditorMessages"), null, this);
IHandlerService handlerService= (IHandlerService) getSite().getService(IHandlerService.class);
IHandler handler= new AbstractHandler() {
public Object execute(ExecutionEvent event) throws ExecutionException {
if (viewer != null && viewer.getDocument() != null)
findAction.run();
return null;
}
};
handlerService.activateHandler("org.eclipse.ui.edit.findReplace", handler);
FindReplaceAction findAction= new FindReplaceAction(ResourceBundle.getBundle("org.eclipse.ui.texteditor.ConstructedTextEditorMessages"), null, this);
IHandlerService handlerService= (IHandlerService) getSite().getService(IHandlerService.class);
IHandler handler= new AbstractHandler() {
public Object execute(ExecutionEvent event) throws ExecutionException {
if (viewer != null && viewer.getDocument() != null)
findAction.run();
return null;
}
};
handlerService.activateHandler("org.eclipse.ui.edit.findReplace", handler);