Eclipse版本:3.4

Eclipse可以在plugin.xml中创建菜单,可是网上资料不多,经过一番艰苦研究,终于发现了使用Extentions创建菜单的方法,步骤如下:
1、 创建菜单Extentions
2、 org.eclipse.ui.menus上单击右键,选择NewàmenuContribution
3、 Location URI处输入menu:org.eclipse.ui.main.menu,这是根菜单的标志;
4、 创建顶层菜单项
5、 输入菜单信息:
6、 创建子菜单:
7、 填写子菜单信息
8、 现在菜单项创建完毕,但是还不能显示,子菜单项需要与Action进行关联,菜单与工具条按钮才可以正常显示。
9、 增加一个actionSets扩展:
10、             输入actionSet的信息:
11、             actionSet上单击右键创建Action
12、             设置Action的参数:
主要参数说明:
Label:菜单项上显示的名称,该参数会覆盖对应menu扩展的Label
menubarPath:设置本Action关联到哪个菜单项上,需要输入菜单项的全路径,菜单项之间以“/”分隔。
toolbarPath:其值为空时将不在工具栏上显示;其值可以是任意字符串,只要值相同则代表了工具栏上具有相似功能的一组按钮,与其它组用分割线隔开。
icon:设置菜单中和工具条上的图片。
class:该Action对应的类。
1. ActionSet下扩展的menu的最后运行显示结果与编辑时的菜单顺序相反。
2. ActionSet下的menu可以扩展separatorgroupmaker,主要区别是扩展separator,则在各子菜单间以一分隔线隔开;groupmaker则没。
3. Action中的menubarPath属性(红色),其值必须以“/”分开,若置空,则不会在其菜单中显示,更甚的是当此Action所在的菜单只有这一个子菜单时,那么这整个菜单都不会显示。
4. Action中的toolbarpath属性(蓝色),其值为空时将不在工具栏上显示;其值可以是任意字符串,只要值相同则代表了工具栏上具有相似功能的一组按钮,与其它组用分割线隔开。
5. Action中的class属性(紫色),其值一般不要为空。
6. 作为在工具栏上显示的Action,只是在作为具有相似功能的按钮组内其顺序与编辑时的顺序相反,而其余整体顺序与编辑时相同。
13、             点击上图的class链接,创建Action类:
14、             Action类的示例代码如下:

 

package textviewer.actions;

 

import java.io.File;

 

import org.eclipse.jface.action.IAction;

import org.eclipse.jface.viewers.ISelection;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.FileDialog;

import org.eclipse.ui.IWorkbenchWindow;

import org.eclipse.ui.IWorkbenchWindowActionDelegate;

 

public class FileOpen implements IWorkbenchWindowActionDelegate {

 

    private IWorkbenchWindow fWindow;

 

    @Override

    public void dispose() {

 

    }

 

    @Override

    public void init(IWorkbenchWindow window) {

       fWindow = window;

    }

 

    @Override

    public void run(IAction action) {

       queryFile();

    }

 

    @Override

    public void selectionChanged(IAction action, ISelection selection) {

       // TODO Auto-generated method stub

 

    }

 

    private File queryFile() {

       FileDialog dialog= new FileDialog(fWindow.getShell(), SWT.OPEN);

       dialog.setText("Open File"); //$NON-NLS-1$

       String filters[] = {"*.txt","*.*"};

       dialog.setFilterExtensions(filters);

       String path= dialog.open();

       if (path != null && path.length() > 0)

           return new File(path);

       return null;

    }

}

 

15、             效果图如下: