`

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;
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics