我已经制作了Hello World RCP应用程序并获得了以下类结构:
ApplicationActionBarAdvisor.java
ApplicationWorkbenchAdvisor.java
ApplicationWorkbenchWindowAdvisor.java
Application.java
Perspective.java
此外,我尝试在视角中添加一些视图。
将扩展点添加到我的plugin.xml:
<extension point="org.eclipse.ui.views">
<view
class="first.rcp.application.MainView"
id="first.rcp.application.MainView"
name="name"
restorable="true">
</view>
</extension>
并创建了MainView.java类。
向Perspective.createInitialLayout()添加其他代码:
layout.addStandaloneView(MainView.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());
IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
try {
activePage.showView(MainView.ID);
} catch (PartInitException e) {
e.printStackTrace();
}
但是视图没有显示。
我将断点设置为Perspective.createInitialLayout()并发现它没有被执行。
我尝试将showPerspective()方法添加到ApplicationWorkbenchWindowAdvisor()并将ApplicationWorkbenchAdvisor中的PERSPECTIVE_ID设置为我的透视图的id。
但是仍未执行Perspective.createInitialLayout()中的代码。
应从哪个角度调用?
Eclipse IDE具有Java透视图,默认情况下打开了多个视图。即在启动eclipse IDE期间调用Java透视图的createInitialLayout()。它是如何实现的?可能有一些配置文件?
我的观点宣言是:
<extension point="org.eclipse.ui.perspectives">
<perspective
name="RCP Perspective"
class="first.rcp.application.Perspective"
id="first.rcp.application.Perspective">
</perspective>
</extension>
ApplicationWorkbenchAdvisor.getInitialWindowPerspectiveId()中的代码是:
public String getInitialWindowPerspectiveId() {
return PERSPECTIVE_ID;
}
private static final String PERSPECTIVE_ID = "first.rcp.application.Perspective";
答案 0 :(得分:0)
解决方案№1。
通过New Plug-in项目向导,确保'您是否要创建富客户端应用程序'设置为是,确保'生成激活器,一个控制插件生命周期'被解雇并在可用模板页面上选择“Hello RCP”。
转到MANIFEST.MF,Extensions。添加新的扩展名'org.eclipse.ui.views',添加一个合适的类。
在视图中添加新的扩展名“org.eclipse.ui.perspectiveExtensions”。将视图ID指定为先前创建的视图的id。
解决方案№2。
通过New Plug-in项目向导,确保'您是否要创建富客户端应用程序'设置为Yes,确保'生成激活器,控制插件生命周期的Java类'是cheked并在可用模板页面上选择'带有视图的RCP应用程序'。