WEB开发网
开发学院软件开发Java 为 SWT 应用程序配备内容助理:通过上下文敏感的智... 阅读

为 SWT 应用程序配备内容助理:通过上下文敏感的智能内容完成建议,提高最终用户的便利性和生产率

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 格式化信息文本默认情况下,这个信息控制实例将以纯文本的形式提供附加的信息文本,为 SWT 应用程序配备内容助理:通过上下文敏感的智能内容完成建议,提高最终用户的便利性和生产率(10),然而,添加一些美妙的文本表示形式是可以做到的,如清单 14 所示, 清单 14. 添加文本展示器returnne

格式化信息文本

默认情况下,这个信息控制实例将以纯文本的形式提供附加的信息文本。然而,添加一些美妙的文本表示形式是可以做到的。例如,我们可能希望以粗体打印所有标签。为此,我们需要相应地配置 IInformationControlCreator 创建的 DefaultInformationControl 实例。实现这点的惟一办法是使用一个不同的 IInformationControlCreator ,而这可以通过重写 XMLConfiguration 方法 getInformationControlCreator() 来完成。

这个方法在 SourceViewerConfiguration 类中的标准实现如清单 13 所示。


清单 13. getInformationControlCreator
public 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; 
  } 
}; 

上一页  5 6 7 8 9 10 

Tags:SWT 应用程序 配备

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接