Eclipse插件:内容辅助HTML格式的提案信息

时间:2014-10-05 13:49:34

标签: java eclipse eclipse-plugin eclipse-jdt

我正在扩展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
我读过这个,
但是我不能理解他们说的解释。

有人能告诉我如何用更清楚的解释来解决这个问题吗? 一个简单的代码片段将有很多帮助!!
感谢。

1 个答案:

答案 0 :(得分: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中,因此插件无法使用它。