编辑器和视图都能支持名为Show In的导航操作。这个操作在workbench菜单栏的Navitate菜单的show in子菜单下,UI上的展示可能如下图所示:
这一功能通常也会被添加至视图或编辑器的右键菜单中(如何添加在后面的博文中有描述),如下所示:
Show In请求,为WrokbenchPart间的交互提供了一种较为通用的方式。
本篇,描述的是下面一种需求:
将你自己的视图添加至show in目标列表并提供show in支持。
步骤:
1.首先,你的视图需要实现org.eclipse.ui.part.IShowInTarget接口,并实现show方法,show方法的响应方式是:选择被传递的上下文中的合适内容,并在可能的情况下显示这些内容。eg:
protected IShowInTarget getShowInTarget() {
return new IShowInTarget() {
public boolean show(ShowInContext context) {
ISelection sel= context.getSelection();
if (sel instanceof ITextSelection) {
ITextSelection tsel= (ITextSelection) sel;
int offset= tsel.getOffset();
IJavaElement element= fEditor.getElementAt(offset);
if (element != null) {
setSelection(new StructuredSelection(element));
return true;
}
} else if (sel instanceof IStructuredSelection) {
setSelection(sel);
return true;
}
return false;
}
};
}
2.只实现IShowInTarget接口是不够的,为了能在Navitate菜单的show in子菜单下包含该视图,还必须将该视图声明为一个目标,这通常是和透视图(Perspective)相关联的。可以通过"org.eclipse.ui.perspectiveExtendsions"扩展点的showInPart节点来定制。
eg:
如下为java透视图(其id为org.eclipse.jdt.ui.JavaPerspective)的show in目标列表中添加
id为“org.eclipse.jdt.ui.PackageExplorer”和“
net.chenxs.SampleView"的两个视图。
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">
<perspectiveShortcut id="org.eclipse.debug.ui.DebugPerspective"/>
<perspectiveShortcut id="org.eclipse.jdt.ui.JavaBrowsingPerspective"/>
<showInPart id="org.eclipse.jdt.ui.PackageExplorer"/>
<showInPart id="viewdemo.views.SampleView"/>
</perspectiveExtension>
</extension>
显示效果截图: