- package gef.tutorial.step.app;
- import org.eclipse.jface.action.ICoolBarManager;
- import org.eclipse.jface.action.IMenuManager;
- import org.eclipse.jface.action.MenuManager;
- import org.eclipse.jface.action.Separator;
- import org.eclipse.jface.action.ToolBarManager;
- import org.eclipse.swt.SWT;
- import org.eclipse.ui.IWorkbenchWindow;
- import org.eclipse.ui.actions.ActionFactory;
- import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
- import org.eclipse.ui.application.ActionBarAdvisor;
- import org.eclipse.ui.application.IActionBarConfigurer;
- import gef.tutorial.step.action.DiagramAction;
- public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
- private IWorkbenchAction exitAction;
- private IWorkbenchAction aboutAction;
- private DiagramAction diagramAction;
- public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
- super(configurer);
- }
- /**
- * 1. 注册菜单或者工具栏的 Action.Action 只有注册后才能添加到菜单中.
- *
- */
- @Override
- protected void makeActions(IWorkbenchWindow window) {
- // 退出
- exitAction = ActionFactory.QUIT.create(window);
- register(exitAction);
- // 关于
- aboutAction = ActionFactory.ABOUT.create(window);
- register(aboutAction);
- // 绘图
- diagramAction = new DiagramAction(window);
- register(diagramAction);
- }
- /**
- * 2. 填充菜单栏. 用 Action 来填充菜单
- *
- * (1) 菜单管理器负责管理菜单项, 设置菜单行为, 创建级联菜单或者对菜单项进行分组.
- * (2) MenuManager 构造函数: 菜单项文本, 菜单项 ID
- * (3) new Separator() 为一条分割线
- */
- @Override
- protected void fillMenuBar(IMenuManager menuBar) {
- //(1) 一级菜单 File
- MenuManager fileMenuManager= new MenuManager("File", "fileMenuManager");
- // 加入绘图动作, 是叶子节点菜单, 也是二级菜单. 点击之后将执行 Action 的 run 方法
- fileMenuManager.add(diagramAction);
- // 加入分隔符
- fileMenuManager.add(new Separator());
- // 加入退出动作
- fileMenuManager.add(exitAction);
- //(2) 一级菜单 Help
- MenuManager helpMenuManager = new MenuManager("Help", "helpMenuManager");
- helpMenuManager.add(aboutAction);
- // 加入二级菜单
- helpMenuManager.add(fileMenuManager);
- //(3) 将菜单加入菜单栏
- menuBar.add(fileMenuManager);
- menuBar.add(helpMenuManager);
- }
- /**
- * 3. 填充工具栏. 用 Action 来填充工具栏
- * (1) 工具栏默认是不显示. 在 ApplicationWorkbenchWindowAdvisor 类中的
- * preWindowOpen 方法中有一句 configurer.setShowCoolBar(false); 将 false 改为 true 即可显示工具栏
- * (2) 工具栏管理器负责工具栏的分类管理
- * (3) SWT.FLAT 将工具栏设置成平滑方式, SWT.SHADOW_OUT 用于在工具栏和菜单栏之间加一条分割线
- *
- */
- @Override
- protected void fillCoolBar(ICoolBarManager coolBar) {
- //1. 生成工具栏
- ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT | SWT.SHADOW_OUT);
- //2. 将工具放入工具栏
- toolBarManager.add(diagramAction);
- //3. 将工具栏放入
- coolBar.add(toolBarManager);
- }
- }
来源: https://www.cnblogs.com/shirui/p/9173816.html