我正在尝试打开一个标记,同时在eclipse插件中双击TableViewer
中的条目。我能够从标记中获取关联的资源,但是在执行openEditor
方法时没有发生任何事情。
代码如下:
viewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
try {
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
ReviewIssue reviewIssue = (ReviewIssue) sel.getFirstElement();
if(reviewIssue != null){
MessageDialog.openError(window.getShell(), "Insta Review", reviewIssue.getMarker().getResource());
try {
IDE.openEditor(window.getActivePage(), reviewIssue.getMarker(), true);
} catch (PartInitException e) {
MessageDialog.openError(window.getShell(), "Insta Review", e.getMessage());
}
}
} catch (Exception e) {
MessageDialog.openError(window.getShell(), "Insta Review", e.getMessage());
}
}
});
如果我在这里遗漏了什么,请告诉我。提前谢谢。
同时忽略消息对话框,因为我计划稍后实现日志记录功能。
更新
即使我在IFile
上创建了标记,我也会遇到相同的行为。我终于能够使用IFile
而不是标记来打开编辑器。
IFile iFile = markerProject.getFile(path);
//IMarker marker = iFile.createMarker("id.myMarker");
.....
IDE.openEditor(window.getActivePage(), reviewIssue.getiFile(), true);
//IDE.openEditor(window.getActivePage(), reviewIssue.getMarker()), true);
答案 0 :(得分:1)
要使其正常工作,IMarker.getResource()
方法必须返回IFile
。 IDE.openEditor
中的代码是:
// get the marker resource file
if (!(marker.getResource() instanceof IFile)) {
IDEWorkbenchPlugin
.log("Open editor on marker failed; marker resource not an IFile"); //$NON-NLS-1$
return null;
}
请查看工作区.metadata目录中的.log文件,看看是否收到该日志消息。
通常您会使用IFile.createMarker
方法为文件创建标记(createMarker
实际上是IResource
方法)。