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
可以扩展
separator
和
groupmaker,
主要区别是扩展
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、
效果图如下:
本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/120422,如需转载请自行联系原作者