为SWT文本控件添加弹出式内容辅助

 转自http://www.blogjava.net/nighty/archive/2007/11/02/157797.html

通常情况下,用户应该在简单字段(例如文本字段或组合框)中提供文本信息。虽然用来填充这些字段的应用程序代码通常比用来填充复杂窗口小部件(例如 表或树)的代码简单得多,但这些“简单”字段通常会给用户带来更多负担。用户必须确定哪些字段需要内容、某个字段是否包含有效内容以及应该选择哪些选项。 JFace 的字段辅助支持提供了一些类来帮助指导用户完成输入任务。
    org.eclipse.jface.fieldassist包提供了二种方式的辅助。带修饰字段支持允许您提供图像修饰,以便向用户提供有关特定字段状态的提示。内容建议支持允许您提供内容辅助弹出窗口,以便向用户提供内容选项。
    下面了解一下关于内容建议部分。
    一般的IDE工具都有内容建议的功能,比如很常见的Java编辑器,输入“.”之后就会激活一个窗口,从里面可以选择方法或字段,这个功能可以快速高效地完成代码,而且可以减少很多输入错误。jface的fieldassist提供了对这个功能的支持。
    我们做一个demo,先看一下这个demo的效果。
     
     当按下Alt + '/'的时候,弹出内容辅助的窗口。从中可以选择相应的建议,进行快速输入。
    下面是相应的代码,非常简单。
    
sShell  =   new  Shell();
        sShell.setText(
" Shell " );
        GridLayout gridLayout 
=   new  GridLayout( 1 false );
        sShell.setLayout(gridLayout);
        sShell.setSize(
new  Point( 300 200 ));
        
        
final  Text t  =   new  Text(sShell, SWT.BORDER  |  SWT.MULTI);
        t.setLayoutData(
new  GridData(GridData.FILL_BOTH));
        autoActivationCharacters 
=   new   char []  '#''(' } ;
        
try   {
            keyStroke 
= KeyStroke.getInstance("Alt+/");
        }
  catch  (ParseException e1)  {
            e1.printStackTrace();
        }

        ContentProposalAdapter adapter 
=   new  ContentProposalAdapter(t,
                
new  TextContentAdapter(),  new  SimpleContentProposalProvider(
                        
new  String[]  "建议1""建议2""建议3" } ), keyStroke,
                autoActivationCharacters);

    按照帮助文档的描述如下:为了在用户从弹出窗口中选择建议时获取和设置控件内容,必须向适配器提供IControlContentAdapter 实例,该实例可以检索和设置特定类型控件的内容。对于文本字段来说,可以使用TextContentAdapter 类。但是,也可以灵活地实现 IControlContentAdapter,以便将内容建议适配器与任何其他类型的控件配合使用。
    关键是定义ContentProposalAdapter类,它有几个必须的参数,第一个是需要进行内容辅助的控件,第二个是IControlContentAdapter 实例,jface默认提供了二个实现:ComboContentAdapter,TextContentAdapter。按照上面的建议,如果你需要更加高级的功能,那么得实现IControlContentAdapter第四个是IContentProposalProvider的实例,这是提供内容辅助窗口中的内容提供器的接口,jface只实现了一个SimpleContentProposalProvider,这是最简单的只提供文本内容的内容提供器。同样的,你可以继承IContentProposalProvider来实现更高级的功能。
    keyStroke是定义按下什么键时激活该提示。autoActivationCharacters是定义当输入遇到什么符号时会激活提示的字符数组。
   按照帮助文档的说明,可以在任意控件上安装 ContentProposalAdapter 以提供此行为。需要什么样的高级功能,就必须具体实践一下以上几个接口的实现。一般的编辑器都会配合SoucreViewer来提供这些功能。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值