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 非常酷的工具条制作源程序 coolbar 非常酷的工具条制作源程序
vc++ coolbar平台 手机小游戏 有游戏的一般结构 不是很完美很多缺陷
拥有CoolBar的例程(CtrlDemo),可供修改学习利用
VB6中控件coolbar相关的多个实例
实现了类似于vc++本省的可拖动窗口
感觉还可以,比较简单
TCoolBarEx. Standard CoolBar with chevron support
提供了bar丰富的包装函数。操作简单,实用。
An example of how to create a coolbar such as the one in Internet Explorer without using a 3rd party control.
·这是一个播放音乐的系统,只要你打开所要播放的歌曲就可以播放了,不信试试看..
SWT ToolBar和CoolBar;...JFace ToolBarManager和CoolBarManager; Eclipse RCP CoolBar 包括一些基本使用、工具栏上自定义控件的添加,以及通过扩展向工具栏上添加按钮或自定义控件等。 详见本人CSDN相关文章。
9.4 可拖动的工具栏(CoolBar和CoolItem) 161 9.4.1 带有下拉选项的工具栏 163 9.4.2 常用的方法 163 9.5 系统托盘(Tray和TrayItem) 164 9.6 滑动组件 167 9.6.1 滑块(Slider) 167 9.6.2 刻度条...
一个功能强大的MFC界面处理扩展库:CJ60Lib 这是从网上搜集的一个扩展库,把它...添加下面代码到StdAfx.h 头文件,其将使库静态链接到应用程序: #define MFCXLIB_STATIC #define MFCX_PROJ #include <CJ60Lib.h>
主要ActiveX控件--Coolbar控件
一个综合的数据库操作案例 其中包含数据库中图片的保存,查找,以及其他一些附加功能 另外,对菜单组件,Coolbar,Images等基本组件也有很好的应用。
4.2.2 CoolBar 100 4.2.3 ControlBar 101 4.3 状态栏 101 4.4 方法与技巧 106 4.4.1 动态创建菜单 106 4.4.2 为菜单动态定义快捷键 108 4.4.3 动态改变菜单 108 4.4.4 定制系统菜单 109 4.4.5 制作图形菜单项 110 ...
4.2.2 CoolBar 100 4.2.3 ControlBar 101 4.3 状态栏 101 4.4 方法与技巧 106 4.4.1 动态创建菜单 106 4.4.2 为菜单动态定义快捷键 108 4.4.3 动态改变菜单 108 4.4.4 定制系统菜单 109 4.4.5 制作图形菜单项 110 ...