让ToolBarManager中的项不仅仅显示图标

一般来说,把 IContributionItem 或 IAction 加入 ToolBarManager中,只会显示相应的图标。
但如果想即显示 图标,又显示文字(就像 Perspective Shortcut)。怎么办?

看了源码,知道 Perspective Shortcut 的是处理 ToolItem, 调用 ToolItem.setText(...)。

所以,只要我能拿到 ToolBarManager 中的 ToolBar 中 ToolItem

但是: 在 ApplicationActionBarAdvisor 或者 ViewPart 中, 当你添加 action 时, 是得不到 ToolItem 的(还没初始化)

像这样:

java 代码
 
  1. public class ApplicationActionBarAdvisor extends ActionBarAdvisor {  
  2.     ...  
  3.     protected void fillCoolBar(ICoolBarManager coolBar) {  
  4.         ToolBarManager menu = new ToolBarManager(SWT.FLAT | SWT.RIGHT);  
  5.         coolBar.add(menu);   
  6.         ... // 添加一些action   
  7.         ... // 但是如何让文字也显示在图标的右边呢?这里Toolbar 没有初始化,但我又不想让代码侵入其他部分.  
  8.     }  
  9. ...  

于是,我写了以下帮助类,它是一个 ContributionItem

java 代码
 
  1. public class ShowTextToolBarContributionItem extends ContributionItem {  
  2.       
  3.     @Override  
  4.     public void fill(ToolBar parent, int index) {  
  5.         ToolItem[] toolItems = parent.getItems();  
  6.         for (ToolItem toolItem : toolItems) {  
  7.             ActionContributionItem contributionItem = (ActionContributionItem) toolItem.getData();  
  8.             IAction action = contributionItem.getAction();  
  9.             if (toolItem.getText() == null || toolItem.getText().length() == 0) {  
  10.                 toolItem.setText(action.getText());  
  11.             }  
  12.         }  
  13.     }  
  14. }  

嘿,"这个时刻",总该让我得到 ToolItem 了吧! 见上面的 fill

然后, 我的 fillToolBar 大概像这样了:

java 代码
 
  1. protected void fillCoolBar(ICoolBarManager coolBar) {  
  2.     ToolBarManager menu = new ToolBarManager(SWT.FLAT | SWT.RIGHT);  
  3.     coolBar.add(menu);   
  4.       
  5. u.add(new ShowTextToolBarContributionItem());   // here  
  6. }  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值