2016-06-21 64 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',標記不會被創建。 –