rcp(插件开发)如何在一个透视图中显示多个视图

本文介绍了如何在Eclipse RCP应用中通过扩展`org.eclipse.ui.views`创建视图,并在透视图中显示多个视图实例。通过设置`allowMultiple`属性为`true`,并在`addView()`方法中使用带有次级ID的格式,如`primary-id:secondary-id`,可以在同一透视图中显示不同实例。示例代码展示了如何将ContactsView添加到透视图的不同位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

扩展 org.eclipse.ui.views 来创建 view

向导创建的ContactsView继承ViewPart抽象类,代码如下:

public ContactsView() {
}

@Override
public void createPartControl(Composite parent) {
//接口方法,用于创建View内容。
}

@Override
public void setFocus() {
//接口方法,View获得焦点时,由workbench调用。
}

将view添加到perspective

RCP程序都至少包含一个Perspective,IWorkbenchWindow包含一个Page,Page使用当前激活的Perspective来布局Views和Editors:
修改org.eclipsercp.hyperbola/Perspective.java

public void createInitialLayout(IPageLayout layout) {
layout.setEditorAreaVisible(false);
//将ContactsView放在默认Editor区域的左侧,所占区域比例为100%
//比例的范围是0.0f(只显示title bar)到1.0f(占用整个窗口)
layout.addView(ContactsView.ID, IPageLayout.LEFT,
1.0f, layout.getEditorArea());
}
其中ContactsView.ID是在ContactsView自定义的静态常量,定义了plugin.xml中ContactsView的id:
public static final String ID = "org.eclipsercp.hyperbola.views.contacts";
IPageLayout .addView方法添加的View显示一个标题栏,可以进行移动、关闭、最大化、最小化等操作。运行效果如下:


如果不想显示标题栏,可以使用IPageLayout .addStandaloneView。

layout.addStandaloneView(ContactsView.ID, false, IPageLayout.LEFT, 1.0f, layout.getEditorArea());

关于 perspective 的更多描述可参考:
http://hi.baidu.com/monkeyhoop/blog/item/e20273e6d2b4c828b8382038.html

打开同一个 view 的多个实例

设置 view 的 enableMultiple 属性为 true

<extension
point="org.eclipse.ui.views">
<view
allowMultiple="true"
class="org.eclipsercp.hyperbola.ContactsView"
icon="icons/groups.gif"
id="org.eclipsercp.hyperbola.views.contacts"
name="Contacts"/>
</extension>
修改 addView() 的 ID 属性为如下格式 primary-id:secondary-id ,并保证 secondary-id 在 perspective 中是唯一的:

org.eclipsercp.hyperbola/Perspective
public void createInitialLayout(IPageLayout layout) {
layout.addStandaloneView(ContactsView.ID + ":1", false,
IPageLayout.LEFT, 0.33f, layout.getEditorArea());
layout.addView(ContactsView.ID + ":2",
IPageLayout.BOTTOM, 0.70f, layout.getEditorArea());
layout.addView(ContactsView.ID + ":3",
IPageLayout.BOTTOM, 0.70f, layout.getEditorArea());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值