`
aswang
  • 浏览: 839663 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

通过编程的方式实现菜单

    博客分类:
  • RCP
 
阅读更多

上一节,我们通过配置的方式实现了菜单和工具栏,下面将通过编程的方式实现菜单和工具栏:

第一件事,我们需要创建一个action,这个action继承Action,这里作为示例,该action的作用就是创建一个对话框,代码如下:

 

public class HelloAction extends Action {
	private IWorkbenchWindow window ;
	
	public HelloAction(IWorkbenchWindow window) {
		this.window = window ;
		this.setText("About!");
	}

	@Override
	public void run() {
		MessageBox mb = new MessageBox(window.getShell() ,SWT.OK);
		mb.setMessage("Author:lql\nDate:2010-7-25!");
		mb.setText("Demo");
		mb.open();
	}
}

 

 

第二件事,就是修改ApplicationActionBarAdvisor这个java文件:

最终代码看起来是这样:

 

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
	private HelloAction helloAction ;
	
    public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
        super(configurer);
    }

    protected void makeActions(IWorkbenchWindow window) {
    	super.makeActions(window);
    	helloAction = new HelloAction(window);
    	helloAction.setId("demo.HelloAction");
    	register(helloAction);
    }

    protected void fillMenuBar(IMenuManager menuBar) {
    	super.fillMenuBar(menuBar);
    	MenuManager demoMenu = new MenuManager("编程实现菜单");
    	demoMenu.add(helloAction);
    	menuBar.add(demoMenu);
    }
    
    /* (non-Javadoc)
     * @see org.eclipse.ui.application.ActionBarAdvisor#fillCoolBar(org.eclipse.jface.action.ICoolBarManager)
     */
    @Override
    protected void fillCoolBar(ICoolBarManager coolBar) {
    	IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
    	coolBar.add(new ToolBarContributionItem(toolbar, "main"));
    	toolbar.add(helloAction);
    }
}

我们来看看这个类,它定义了一个属性HelloAction helloAction,这个就是点击菜单或者工具栏按钮之后执行的动作。

它还包含一个makeActions方法,这个方法就是初始化这些action,并注册。

和菜单栏相关的方法就是fillMenuBar,通过方法名就能够看出来,该方法里面创建了一个MenuManager,这个其实就对应着菜单栏中的

一个菜单,然后demoMenu.add(helloAction) ;该方法就是向刚创建的菜单中添加一个菜单项,然后将这个菜单加到菜单栏中。

和工具栏相关的方法是fillCoolBar,对比上面的菜单创建方法,很容易理解工具栏的创建。

coolBar.add(new ToolBarContributionItem(toolbar, "main"));这行代码的作用就是将工具栏加到窗口中。然后就是向工具栏

中添加了一个工具栏按钮。

下面看下结果:

RCP之编程实现菜单

 

到此实现菜单的两种方式就结束了。当然还有些细节,以后再摸索。

 

 

 

 

 

 

 

 

  • 大小: 45.2 KB
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics