我制作了一个带有TextViewer界面的eclipse插件,用于显示文本文档,但标准的查找/替换保持灰色模式。
答案 0 :(得分:2)
我假设您在视图中使用TextViewer而不是编辑器。在这种情况下:
org.eclipse.jface.text.IFindReplaceTarget
,即其getAdapter()
必须从查看者返回目标。org.eclipse.ui.texteditorFindReplaceAction
)。查看Platform Command Framework即可开始使用。答案 1 :(得分:2)
我使用了MartiiKäärik的指针来找到这个问题的答案。我已经使用了以下代码,但是它使用了TextEditor的内部字符串标识符。不过,在这里。
getAdapter()
必须像这样实现(viewer
是TextViewer
的实例)
public Object getAdapter(Class adapter) {
if (IFindReplaceTarget.class.equals(adapter)) {
if (viewer != null) {
return viewer.getFindReplaceTarget();
}
}
return super.getAdapter(adapter);
}
在视图的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);
无需XML。