从Eclipse窗口中删除视图 - >显示视图

时间:2010-04-28 18:43:08

标签: eclipse views rcp perspectives

我们有一个应用程序,其中某些视图仅在附加到某些视角时才起作用。 我们想从 Window - >中删除这些视图显示视图对话框,以便用户无法将它们添加到不起作用的透视图中。

有关如何以编程方式或声明方式执行此操作的任何想法?

我尝试过使用<visibleWhen />,但视图仍显示在对话框中:

  <view class="com.mycompany.ViewClass" 
        id="com.mycompany.ViewId" 
        name="View Name" 
        restorable="true">

        <visibleWhen>
            <with variable="activeWorkbenchWindow.activePerspective">
                <equals value="com.mycompany.MyPerspective"/>
            </with>
        </visibleWhen>
  </view>

我认为<visibleWhen />子句没有任何问题,所以我想知道它是否可以与View一起使用?

2 个答案:

答案 0 :(得分:0)

应将其视为 menu contribution ,使用<visibleWhen/>仅在满足特定条件时才显示该选项。

有关详情,请参阅wiki article "Menu Contribution"

答案 1 :(得分:0)

不幸的是,似乎Eclipse已经通过在“显示视图”对话框的内容提供程序上调用私有ViewContentProvider.removeIntroView来为“简介”视图执行此操作。解决此限制的一种方法是通过添加到org.eclipse.ui.activities扩展点来定义活动(有关如何将活动映射到UI贡献,请参阅activityPatternBinding)。这样做不仅会从“显示视图”对话框中删除视图,还会阻止它们在透视图中显示。然后可以以编程方式显示视图。由于我们的应用程序存在限制,我还必须在ApplicationWorkbenchAdvisor.preStartup方法中启用活动:

    Set<String> activityIds = new HashSet<String>();
    activityIds.add("com.my.activity.id");
    IWorkbenchActivitySupport activitySupport = PlatformUI.getWorkbench().getActivitySupport();
    activitySupport.setEnabledActivityIds(activityIds);

在这种情况下,必须在显示对话框之前禁用活动,因此必须修改“显示视图”菜单贡献才能执行此操作。

希望在下一版本的Eclipse中添加一个扩展点,以便开发人员以声明方式从对话框中删除视图。