废话不说。直接看如何操作。
以大家熟悉的Package Explore视图为例。
step1:
新建一个org.eclipse.ui.popupMenus扩展点,在其下建立一个viewerContribution,
id任意(注意保持唯一,不要和工作台和自己的viewerContribution重复),
targetID设置为"org.eclipse.jdt.ui.PackageExplorer","org.eclipse.jdt.ui.PackageExplorer"就是
Package Explore视图的id,注意这里填的实际上是注册到PartSite上的ContextMenu的id(后面的博文会对此进行专门的描述)。
关于targetID:表示视图或编辑器内上下文菜单的唯一标志
step2:在刚才新建的viewerContribution下面创建一个Action。
id任意(取名原则和step1一致,勿重复),
label设置为"Hello,Package Explorer View!"。
重要的是menubarPath,menubarPath需要填入占位符(insert point)。
此时,我们应该去看看Package Explore View的占位符结构。
看源代码去吧。
经过一些查看,发现其占位符是在org.eclipse.jdt.internal.ui.JavaPlugin类中进行创建的,如下:
public static void createStandardGroups(IMenuManager menu) {
if (!menu.isEmpty())
return;
menu.add(new Separator(IContextMenuConstants.GROUP_NEW));
menu.add(new GroupMarker(IContextMenuConstants.GROUP_GOTO));
menu.add(new Separator(IContextMenuConstants.GROUP_OPEN));
menu.add(new GroupMarker(IContextMenuConstants.GROUP_SHOW));
menu.add(new Separator(ICommonMenuConstants.GROUP_EDIT));
menu.add(new Separator(IContextMenuConstants.GROUP_REORGANIZE));
menu.add(new Separator(IContextMenuConstants.GROUP_GENERATE));
menu.add(new Separator(IContextMenuConstants.GROUP_SEARCH));
menu.add(new Separator(IContextMenuConstants.GROUP_BUILD));
menu.add(new Separator(IContextMenuConstants.GROUP_ADDITIONS));
menu.add(new Separator(IContextMenuConstants.GROUP_VIEWER_SETUP));
menu.add(new Separator(IContextMenuConstants.GROUP_PROPERTIES));
}
好的。我们随便放一个位置吧。放在此占位符下newSeparator(IContextMenuConstants.GROUP_OPEN)。
需要看一下GROUP_OPEN的id值是多少(为“group.open”)。
那么就在menubarPath上填充"group.open"。
运行。我们的菜单"Hello,Package Explorer View!" 已填充至Package Explore View上了。