为 SWT 应用程序配备内容助理:通过上下文敏感的智能内容完成建议,提高最终用户的便利性和生产率
2009-12-14 00:00:00 来源:WEB开发网格式化信息文本
默认情况下,这个信息控制实例将以纯文本的形式提供附加的信息文本。然而,添加一些美妙的文本表示形式是可以做到的。例如,我们可能希望以粗体打印所有标签。为此,我们需要相应地配置 IInformationControlCreator 创建的 DefaultInformationControl 实例。实现这点的惟一办法是使用一个不同的 IInformationControlCreator ,而这可以通过重写 XMLConfiguration 方法 getInformationControlCreator() 来完成。
这个方法在 SourceViewerConfiguration 类中的标准实现如清单 13 所示。
清单 13. getInformationControlCreatorpublic IInformationControlCreator getInformationControlCreator
(ISourceViewer sourceViewer) {
return new IInformationControlCreator() {
public IInformationControl createInformationControl(Shell parent) {
return new DefaultInformationControl(parent);
}
};
}
我们通过向 DefaultInformationControl() 构造函数添加一个 DefaultInformationControl.IInformationPresenter 类型的文本展示器(presenter),从而修改 DefaultInformationControl 实例的创建,如清单 14 所示。
清单 14. 添加文本展示器 return new DefaultInformationControl(parent, presenter);
最后剩下的事情就是实现这个文本展示器,如清单 15 所示。
清单 15. 文本展示器private static final DefaultInformationControl.IInformationPresenter
presenter = new DefaultInformationControl.IInformationPresenter() {
public String updatePresentation(Display display, String infoText,
TextPresentation presentation, int maxWidth, int maxHeight) {
int start = -1;
// Loop over all characters of information text
for (int i = 0; i < infoText.length(); i++) {
switch (infoText.charAt(i)) {
case '<' :
// Remember start of tag
start = i;
break;
case '>' :
if (start >= 0) {
// We have found a tag and create a new style range
StyleRange range =
new StyleRange(start, i - start + 1, null, null, SWT.BOLD)
// Add this style range to the presentation
presentation.addStyleRange(range);
// Reset tag start indicator
start = -1;
}
break;
}
}
// Return the information text
return infoText;
}
};
更多精彩
赞助商链接