上次的透视图说漏了一个扩展点org.eclipse.ui.perspectiveExtensions,这次补起来。
正好上篇菜单中上下文菜单因为没有视图(透视图里面说的那些系统自带的暂时不用)所以还没讲,这次也一并开个头。
还是老样子,在之前的RCP基础上增加视图的扩展点org.eclipse.ui.views,添加一个视图。
package myrcp.views;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
public class ViewPart1 extends ViewPart {
public ViewPart1() {
}
//主要方法,用来描绘这个视图该长成什么样
@Override
public void createPartControl(Composite parent) {
Text text = new Text(parent, SWT.BORDER);
text.setText("这里是用户界面");
}
@Override
public void setFocus() {
}
}
第二步,把这个视图加入到我们的透视图中去。
添加org.eclipse.ui.perspectiveExtensions拓展点,按图中所示添加刚才的视图
从这张图可以看出,这个拓展点可以对透视图里的action 菜单 工具条 新建想到 透视图 视图等快捷方式进行显示控制。
透视图类中修改代码:
package myrcp.perspective;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
public class PerspectiveFactory implements IPerspectiveFactory {
@Override
public void createInitialLayout(IPageLayout layout) {
//MyRCP.view1为我们的视图ID
layout.addView("MyRCP.view1", IPageLayout.TOP,
IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);
}
}
运行,界面如图:
如何显示透视图工具条
再添加一个透视图,代码如下:
package myrcp.perspective;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
public class PerspectiveFactory4 implements IPerspectiveFactory {
@Override
public void createInitialLayout(IPageLayout layout) {
//MyRCP.view1为我们的视图ID
String editorArea = layout.getEditorArea();
layout.setEditorAreaVisible(false);
//设置视图为不可动
layout.setFixed(true);
layout.addStandaloneView("MyRCP.view1", false, IPageLayout.LEFT, 1.0f, editorArea);
}
}
在ApplicationWorkbenchWindowAdvisor类中的preWindowOpen方法中添加一句:
//是否显示透视图工具条
configurer.setShowPerspectiveBar(true);
再次运行,可以显示透视图工具条和添加的透视图了。
参考文章: