`
bencode
  • 浏览: 109649 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

让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. }  

...
分享到:
评论
1 楼 379548695 2008-05-20  
你太强啦博主!

相关推荐

    Eclipse菜单探密.doc

    Action是Eclipse中处理用户交互的基本单元,它包含了行为(run方法)和展示信息(如文本、图标等)。通过`makeAction`函数创建Action,接着使用`fillMenuBar`和`fillToolBar`来将Action添加到对应的菜单和工具栏上。...

    ToolBar 的封装

    - **代码复用**:封装`ToolBar`可以将通用的功能(如设置标题、添加返回按钮、设置菜单项)集中到一个地方,避免在每个需要`ToolBar`的Activity或Fragment中重复编写相同的代码。 - **统一风格**:通过封装,可以...

    java树形导航的实现

    例如,`MenuManager`和`ToolBarManager`用于管理菜单项和工具栏按钮,它们与`Action`配合,将用户的交互动作映射到具体的代码执行。 `IMenuManager`和`IToolBarManager`接口提供了添加、移除和更新菜单项或工具栏...

    SWT(JFace) FTP客户端实现

    4. `Action` - JFace的行动类,用于定义用户界面中的可操作项,如按钮或菜单项。 5. `ToolBarManager` 和 `MenuManager` - 分别管理工具栏和菜单,用于组织用户界面中的操作。 6. `TableViewer` - JFace中的视图组件...

    ToolBarDockExample.zip

    1. **ToolBarManager.cs**:这是核心管理类,负责工具栏的创建、组织和停靠逻辑。它可能提供了添加、删除工具栏,以及处理工具栏停靠状态变化的方法。 2. **ToolBarDockHolder.cs**:此文件可能定义了一个类,用于...

    vb+mo地理信息系统源码

    在VB(Visual Basic)编程环境中,MapObjects是一个强大的GIS(地理信息系统)组件库,由ESRI公司提供,它使得开发者能够轻易地在Windows应用程序中集成地图显示和地理数据处理功能。"vb+mo地理信息系统源码"这个...

    Eclipse RCP详细教程

    扩展是一种动态的方式,可以在不修改原有代码的情况下扩展应用的功能。 - **扩展点**:扩展点是插件提供的接口,用于接收来自其他插件的扩展。通过定义扩展点,插件可以指定其他插件可以扩展的部分。 #### 2. 创建...

    swt和JFace练习,整合eclipse

    8. **菜单和工具栏**:JFace的`Action`类简化了菜单和工具栏的创建,通过`MenuManager`和`ToolBarManager`,我们可以轻松地添加菜单项和工具栏按钮。 在"SWTProjec"中,你可能已经实践了上述的一些或所有知识点,...

    SWT(JFace)小制作 BugTracker

    在这个BugTracker项目中,JFace的Action类被用来创建菜单项和工具栏按钮,这简化了事件处理逻辑。 在给出的代码中,`BugTracker`类是整个应用的核心,它初始化了一个SWT的`Shell`对象,即主窗口。窗口布局使用`...

    插件导入rcp项目(详细).doc

    - 在`com.PluginTest`项目中添加一个按钮或菜单项。 - 调用`com.HelloRcp`插件中`com.testplugin`包中的方法,例如: ```java Action action = new Action() { public void run() { ...

    rcp editor实例的项目代码

    你可以创建`MenuManager`和`ToolBarManager`来管理这些动作,并在编辑器的上下文中添加它们。 5. **事件处理**:RCP编辑器需要监听并响应用户的交互事件,例如点击按钮、选择菜单项等。这些事件通常通过`Command`和...

    C#实现可拖拽、浮动工具栏代码

    this.toolbarManager = new ToolStripControl.ToolBarManager(this,this); ToolStripControl.ToolBarDockHolder holder = this.toolbarManager.AddControl(this.axToolbarControl, DockStyle.Top); holder....

    moss2007 开发资料

    "ToolbarManager.wsp"文件是一个SharePoint解决方案包,通常包含了WebPart或其他SharePoint组件。解压并查看这个WSP文件,我们可以学习到如何打包和部署WebPart,以及WebPart的元数据和配置信息。 通过深入研究Moss...

    【Kotlin】FarawayPlayer

    主界面动态适配ToolBar(由于需求三个组件都是动态交互的,所以不能写成静态的) 1)M层Utils包下建立ToolBarManager接口用于管理类 a.新建一个toolbar对象 b.写一个初始化Main主页标题信息 kotlin接口是可以写实现...

    MailRCP.zip

    SWT ToolBar和CoolBar;...JFace ToolBarManager和CoolBarManager; Eclipse RCP CoolBar 包括一些基本使用、工具栏上自定义控件的添加,以及通过扩展向工具栏上添加按钮或自定义控件等。 详见本人CSDN相关文章。

Global site tag (gtag.js) - Google Analytics