2014-10-05 51 views
1

我擴展Eclipse JDT的內容輔助,
和我寫了一個實現IJavaCompletionProposalComputer類,
和我的代碼是這樣的:Eclipse插件:內容輔助建議信息與HTML格式

final static String[] fgProposals = { "A", "B" }; 
final static String[] fgInfo = { "<font color='red'>A_info</font>", "B_info" }; 

@Override 
public List<ICompletionProposal> 
computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) { 
    ICompletionProposal[] result = new ICompletionProposal[fgProposals.length]; 
    for (int i= 0; i < fgProposals.length; i++) { 
    IContextInformation info = new ContextInformation("AA", "BB"); 
    result[i]= new CompletionProposal(
     fgProposals[i], context.getInvocationOffset(), 0, 
     fgProposals[i].length(), null, fgProposals[i], 
     info, fgInfo[i]); 
    } 
    return Arrays.asList(result); 
} 

但是,
附加信息(所選提案右側的窗口)
忽略了html標記並僅顯示純文本。

我的問題是一樣的,因爲這話題:
HTML Formatting in Editor ContentAssit
我讀過這個,
但我不明白他們說的解釋。

任何人都可以告訴我如何用更清晰的解釋來解決這個問題嗎?
一個簡單的代碼片段將幫助很多!
謝謝。

回答

1

一個簡單的代碼片段是不可能的,因爲這並不簡單!

而不是您的代碼返回CompletionProposal的數組您必須返回實現ICompletionProposalICompletionProposalExtension3的類的數組。

一個在ICompletionProposalExtension3額外的方法是

public IInformationControlCreator getInformationControlCreator() 

此方法必須返回一個IInformationControlCreator類。這個類只是有一個方法:

public IInformationControl createInformationControl(Shell parent) 

返回IInformationControl是顯示的建議,並能夠處理HTML類。有一個抽象類AbstractInformationControl它實現了一些基本的要求,但它是由你來處理HTML。

處理HTML的一種方法是使用SWT Browser小部件。有一個BrowserInformationControl這樣做,但它在內部org.eclipse.jface.internal.text.html,所以它不可供插件使用。

+0

非常感謝!你的回答對我很有幫助。我使用了DefaultInformationControl,它工作, 但它只支持非常小的簡單的html標籤。我正在尋找可以支持更多html標籤的方法。 – Xavier 2014-10-08 11:26:54