2016-06-21 61 views
0

我创建了一个插件,并且作为插件功能的一部分,我需要在'问题'表或'控制台”。从插件写入'问题'表或'控制台'

我试图让它与Eclipse在构建时显示错误/警告的方式非常相似。

我有错误代码,错误消息和行号。我已经在SWT应用程序中使用表格成功创建了这个逻辑。但是,我现在需要创建一个插件。到目前为止,我正在尝试将其显示在Eclipse的“问题”表上。

在一个绝望的尝试,我试着用

System.out.println 
System.console().writer().println(), 

写入到控制台,但没有奏效。我使用

StatusManager ab; 
IStatus status = new Status(Status.ERROR, "HELLO", "HELLO!"); 
ab.handle(status, 0); 

也试过,但似乎我需要初始化AB,但我不能做到这一点与

StatusManager ab = new StatusManager(); 

我也试过

logger.info("Info!"); 
logger.severe("Error!"); 
logger.warning("Warning!"); 

但他们不工作无论是。

Plugin ab; 
ab.getLog().log(new Status(Status.INFO,"Hello", "hehe")); 

无法正常工作或事业,我需要初始化AB,其中

Plugin ab = new Plugin(); 

我真的需要一点帮助推我就如何做到这一点的正确方向。

P.S:我提到的控制台或问题表是实际的Eclipse。

回答

1

问题视图显示IMarker具有问题类型的对象。

标记对象始终与对象(或其衍生的接口之一,如IFileIFolder)关联。

您创建一个标记的东西,如:

IFile file = .... get file to mark 

IMarker marker = file.createMarker(IMarker.PROBLEM); 

marker.setAttribute(IMarker.LINE_NUMBER, line number); 
marker.setAttribute(IMarker.MESSAGE, "error message"); 
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR); 

可以使用org.eclipse.core.resources.markers扩展点来定义自己的标记类型,这将帮助你区别于其他插件的标记您的标记。

+0

当没有文件可用时,始终存在工作空间根:'IResource root = ResourcesPlugin.getWorkspace()。getRoot()' – Basilevs

+0

谢谢!它非常完美!你的回答与@Basilevs结合起来就像一个魅力。非常感谢你!最后! –

+0

只需稍后续问题@ greg-449,关于'file.createMarker(IMarker.PROBLEM);',在问题表中显示类型是'问题',我可以将其更改为自定义字符串,例如作为'语法检查'?我试着改变它,但如果我改变'IMarker.Problem',标记不会被创建。 –