`

CoolBar CoolBarManager应用到任何ViewForm

阅读更多
ViewForm viewForm = new ViewForm(container, SWT.NONE);
MyActionGroup actionGroup = new MyActionGroup();
CoolBar coolBar=new CoolBar(viewForm,SWT.FLAT);
CoolBarManager coolBarManager = new CoolBarManager(coolBar); // 创建一个toolBar的管理器
ToolBar toolBar = new ToolBar(coolBar, SWT.FLAT); // 创建一个ToolBar容器
ToolBarManager toolBarManager = new ToolBarManager(toolBar); // 创建一个toolBar的管理器
actionGroup.fillActionToolBars(coolBarManager,toolBarManager); //将Action通过toolBarManager注入ToolBar中
//actionGroup.fillContextMenu(new MenuManager());
viewForm.setTopLeft(coolBar);




package com.test;

import java.net.MalformedURLException;
import java.net.URL;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.CoolBarManager;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ViewForm;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.ui.actions.RefreshAction;

public class MyActionGroup extends ActionGroup {

public void fillContextMenu(IMenuManager mgr) {
// 加入两个Action对象到菜单管理器
MenuManager menuManager = (MenuManager) mgr;
/*
* menuManager.add(new OpenAction()); menuManager.add(new
* RefreshAction()); // 生成Menu并挂在表格table上。menu和table两个对象互为对方的参数 Table
* table = tv.getTable();
*/
// Menu menu = menuManager.createContextMenu(compoiste);
// compoiste.setMenu(menu);
}

// 自定义方法。生成Action对象,并通过工具栏管理器ToolBarManager填充进工具栏
public void fillActionToolBars(CoolBarManager coolBarManager,
ToolBarManager actionBarManager) {
// 创建Action对象,一个按钮对应一个个的Action
Action refreshAction = new Action() {

};
Action addAction = new Action() {

};

// 将按钮通过工具栏管理器ToolBarManager填充进工具栏,如果用add(action)
// 也是可以的,只不过只有文字没有图像。要显示图像需要将Action包装成
// ActionContributionItem,在这里我们将包装的处理过程写成了一个方法
actionBarManager.add(createContributionItem(refreshAction));
actionBarManager.add(createContributionItem(addAction));
// actionBarManager.add(createContributionItem(removeAction));
actionBarManager.update(true);// 更新工具栏,否则工具栏不显示任何按钮
ToolBar toolBar=new ToolBar(coolBarManager.getControl(),SWT.FLAT);
ToolBarManager actionBarManager1=new ToolBarManager(toolBar);
actionBarManager1.add(createContributionItem(refreshAction));
actionBarManager1.add(createContributionItem(addAction));
actionBarManager1.update(true);

toolBar=new ToolBar(coolBarManager.getControl(),SWT.FLAT);
ToolBarManager actionBarManager2=new ToolBarManager(toolBar);
actionBarManager2.add(createContributionItem(refreshAction));
actionBarManager2.add(createContributionItem(addAction));
actionBarManager2.update(true);

toolBar=new ToolBar(coolBarManager.getControl(),SWT.FLAT);
ToolBarManager actionBarManager3=new ToolBarManager(toolBar);
actionBarManager3.add(createContributionItem(refreshAction));
actionBarManager3.add(createContributionItem(addAction));
actionBarManager3.update(true);

coolBarManager.add(actionBarManager);
coolBarManager.add(actionBarManager1);
coolBarManager.add(actionBarManager2);
coolBarManager.add(actionBarManager3);
coolBarManager.update(true);
}

// 将Action包装成ActionContributionItem类的方法。实际上Action加入到
// ToolBarManager或MenuManager里时,也做了ActionContributionItem的包装,
// 大家看它ToolBarManager的add(IAction)的源代码即知
private IContributionItem createContributionItem(IAction action) {
ActionContributionItem aci = new ActionContributionItem(action);
aci.setMode(ActionContributionItem.MODE_FORCE_TEXT);// 显示图像+文字
return aci;
}

// 得到一个图像的ImageDescriptor对象
private ImageDescriptor getImageDesc(String fileName) {
try {
URL url = new URL("file:icons/" + fileName);
return ImageDescriptor.createFromURL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
}
分享到:
评论

相关推荐

    拥有CoolBar的例程(CtrlDemo)

    通过学习CtrlDemo这个实例,开发者不仅可以掌握CoolBar的使用,还能了解到如何在MFC环境中设计和实现复杂的用户界面元素,这对于提升Windows应用程序的专业性和用户体验有着显著的帮助。同时,这个过程也会加深对MFC...

    coolbar实例

    在VC++编程环境中,"coolbar"是一种特殊的控件,它通常被用来创建自定义的工具栏或状态栏。Coolbar允许用户自定义其外观和功能,甚至可以实现...总之,掌握coolbar的使用,对于提升VC++应用的用户体验具有重要的意义。

    Controls-Coolbar.rar_coolbar_coolbar vb实例

    1. **基础使用**:展示如何在VB6环境中添加CoolBar控件到窗体,设置其基本属性,并添加按钮。 2. **浮动工具栏**:如何使工具栏可以浮动于窗口之外,提供更自由的操作体验。 3. **自定义样式**:通过修改控件的外观...

    coolbar 非常酷的工具条制作源程序

    标题中的“coolbar 非常酷的工具条制作源程序”指的是一个专门用于创建个性化、功能丰富的工具栏的源...通过阅读和实践,开发者能够理解如何将这些技术应用到自己的项目中,创造出更加独特且用户友好的应用程序界面。

    vc++coolbar平台手机小游戏

    CoolBar是MFC(Microsoft Foundation Classes)库中的一个组件,用于创建具有多种工具栏风格的应用程序,包括浮动、可停靠和多列布局等,为用户界面增加了灵活性和交互性。 在手机小游戏的开发过程中,使用VC++和...

    COOLBAR使用例程.rar_coolbar

    通过学习这个"COOLBAR使用例程",开发者不仅可以掌握如何在Windows应用程序中创建和使用自定义工具栏,还能了解如何设计和优化用户界面,提升应用的整体体验。对于新手来说,这是一个很好的实践项目,可以帮助他们更...

    coolbar类非常好用

    本文将深入探讨“coolbar类”的使用,包括它的特点、优点以及如何在实际开发中应用。 首先,"coolbar"是微软MFC(Microsoft Foundation Classes)库中的一个类,它实现了Windows API中的TBSTYLE_COOLBAR样式工具栏...

    CBEx.zip_BAR_coolbar_pathicb

    原生的CoolBar控件通常用于在应用程序界面上创建可自定义的工具栏,允许用户以垂直或水平布局排列各种控件,如按钮、菜单等。而"chevron support"意味着它添加了下拉箭头的功能,这使得用户可以展开隐藏的附加选项,...

    code_coolbar.zip_音乐播放系统

    【音乐播放系统】是一个专为音乐爱好者设计的应用程序,它允许用户轻松地打开和播放他们的音乐文件。这个系统的核心功能是提供一个用户友好的界面,让用户可以方便地浏览和选择要播放的歌曲,从而享受音乐带来的乐趣...

    pb9做的一个cool的菜单实例!

    通过这个实例,我们可以学习到如何设计和实现自定义的用户界面元素,以及如何将它们整合到应用程序中。 标签“coolbar”通常指的是在Windows应用程序中常见的工具栏或者状态栏,它能够显示各种快捷按钮、下拉菜单等...

    An example of how to create a coolbar such as the one in Int

    An example of how to create a coolbar such as the one in Internet Explorer without using a 3rd party control.

    在DELPHI7中不使用任何第三方控件,实现放在工具栏上可拖动的

    1. **添加ActionBars到CoolBar**:通过`ActionBars`属性将Action Manager与CoolBar关联起来。例如,可以创建两个ActionBars:一个用于主菜单栏(`ActionMainMenuBar`),另一个用于工具栏(`ActionToolBar`)。 2. *...

    vb visual basic

    在实际开发中,Coolbar控件可以极大地提升应用程序的用户界面体验,通过精心设计的带区布局和个性化的子控件组合,可以创建出符合用户需求的个性化工具栏。通过熟练掌握Coolbar控件的使用,开发者可以构建出更专业、...

    VB6制作Win98风格的工具栏...

    通过本教程,您将学习到如何利用 VB6 中的 ActiveX 控件(如 CoolBar 和 ToolBar)来实现这种风格的工具栏。 #### 关键概念与步骤 ##### 1. 创建项目与添加控件 首先,在 VB6 中创建一个新的项目,并将其命名为...

    MailRCP.zip

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

    mapx的鹰眼图以及浮动窗口的例子

    在本项目中,我们主要探讨的是使用MapX库来创建一个具有鹰眼图(迷你地图)功能的地图应用程序。MapX是Bentley Systems公司提供的一个GIS(地理信息系统)组件,它允许开发者在Windows应用程序中集成地图显示和地理...

    MiniGUI的软键盘快速设计方法

    本文介绍了一种在MiniGUI系统中快速设计软键盘的方法,该方法利用MiniGUI提供的酷工具栏(Coolbar)控件创建软键盘面板,并通过发送相应的按键消息到MiniGUI的内部输入法窗口,实现包括中文在内的字符输入功能。...

    《 VB6制作Win98风格的工具栏 》...

    ##### 步骤 3:添加 ToolBar 组件到 CoolBar - 在 CoolBar1 上添加一个新的 ToolBar 组件,将其命名为 `ToolBar1`。 - 通过 `CoolBar1` 的属性窗口找到 `Bands` 选项卡,点击 `Insert Band` 按钮添加一个新的工具栏...

    cbe酷吧手机QQ系统文件

    在移动设备上,系统文件是运行任何应用程序的基础。这些文件包含了程序运行所需的各种组件,如动态链接库(DLL)、配置文件、资源文件以及代码执行所需的系统资源。对于cbe酷吧手机QQ系统文件而言,它们可能包括以下...

    Dephi数据库案例(图片,查找)

    这个案例不仅涵盖了基本的数据库交互,还涉及到用户界面组件的使用,如菜单、Coolbar和Images,以提升用户体验。以下是本案例涉及的关键知识点: 1. **数据库连接与操作**:首先,你需要了解如何在Delphi中设置和...

Global site tag (gtag.js) - Google Analytics