视图不显示

时间:2017-05-21 16:16:49

标签: eclipse-rcp perspective

我已经制作了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";

1 个答案:

答案 0 :(得分:0)

解决方案№1。

  1. 通过New Plug-in项目向导,确保'您是否要创建富客户端应用程序'设置为是,确保'生成激活器,一个控制插件生命周期'被解雇并在可用模板页面上选择“Hello RCP”。

  2. 转到MANIFEST.MF,Extensions。添加新的扩展名'org.eclipse.ui.views',添加一个合适的类。

  3. 在视图中添加新的扩展名“org.eclipse.ui.perspectiveExtensions”。将视图ID指定为先前创建的视图的id。

                         

  4. 解决方案№2。

    通过New Plug-in项目向导,确保'您是否要创建富客户端应用程序'设置为Yes,确保'生成激活器,控制插件生命周期的Java类'是cheked并在可用模板页面上选择'带有视图的RCP应用程序'。