我正在扩展eclipse jdt的内容辅助,
我写了一个实现IJavaCompletionProposalComputer的类,
我的代码如下:
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
我读过这个,
但是我不能理解他们说的解释。
有人能告诉我如何用更清楚的解释来解决这个问题吗?
一个简单的代码片段将有很多帮助!!
感谢。
答案 0 :(得分:1)
不可能使用简单的代码段,因为这并不简单!
而不是代码返回CompletionProposal
数组,您必须返回一组实现ICompletionProposal
和ICompletionProposalExtension3
的类。
ICompletionProposalExtension3
中的一个额外方法是
public IInformationControlCreator getInformationControlCreator()
这必须返回IInformationControlCreator
课程。这个班只有一个方法:
public IInformationControl createInformationControl(Shell parent)
返回的IInformationControl
是显示提案并可以处理HTML的类。有一个抽象类AbstractInformationControl
可以实现一些基本要求,但是由你来处理HTML。
处理HTML的一种方法是使用SWT Browser
小部件。有BrowserInformationControl
可以执行此操作,但它位于内部包org.eclipse.jface.internal.text.html
中,因此插件无法使用它。