Eclipse扩展点实践之添加菜单项(ActionSet方式实现)

时间:2021-11-14 18:45:38

ActionSet方式比起Command方式,比较直观,但是功能有限。

首先:新建一个项目,在Extension中添加org.eclipse.ui.actionSets的扩展。

Eclipse扩展点实践之添加菜单项(ActionSet方式实现)

然后,new->actionSet。在新生成的actionSet上new->menu和new->action。注意:action的label决定图标的显示。

Eclipse扩展点实践之添加菜单项(ActionSet方式实现)

下来写一个处理action的类,这个类必须实现IWorkbenchWindowActionDelegate接口,其中的run函数就是点击图标之后要执行的响应。
package com.wjy.action;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class ActionTest implements IWorkbenchWindowActionDelegate{
private IWorkbenchWindow window;
@Override
public void run(IAction action) {
// TODO Auto-generated method stub
Display display=Display.getCurrent();
Shell shell=new Shell(display);
MessageDialog.openInformation(
shell,
"PlungInClient",
"我是ActionSet模式实现的。");
} @Override
public void selectionChanged(IAction action, ISelection selection) {
// TODO Auto-generated method stub } @Override
public void dispose() {
// TODO Auto-generated method stub } @Override
public void init(IWorkbenchWindow window) {
// TODO Auto-generated method stub
this.window=window;
} }
最后对menu和action就行设定:  menu中的没什么意义。

                                            action中的是关键:label是显示的名称,icon是显示的图标,class是那个实现了IWorkbenchWindowActionDelegate接口的处理类的路径。
menubarPath是图标在menu的什么位置显示,toolbarPath是图标在toolbar的什么位置显示。 (有个问题,采用这种ActionSet的方式难道不能再快捷菜单中显示吗?只能在menu栏或者toolbar栏中显示吗?)

Eclipse扩展点实践之添加菜单项(ActionSet方式实现)

-----------------------------------------------------------------------------------------------------------------------

Eclipse扩展点实践之添加菜单项(ActionSet方式实现)

---------------------------------------------------------------------------------------------------------------
看一下效果:

Eclipse扩展点实践之添加菜单项(ActionSet方式实现)

点击之后:

Eclipse扩展点实践之添加菜单项(ActionSet方式实现)