【问题标题】:Removing a view from Eclipse Window -> Show views从 Eclipse 窗口中删除视图 -> 显示视图
【发布时间】:2010-04-29 10:34:25
【问题描述】:

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

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

我已尝试使用<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>

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

【问题讨论】:

标签: eclipse views rcp perspectives


【解决方案1】:

应将其视为menu contribution,使用&lt;visibleWhen/&gt; 仅在满足特定条件时显示该选项。

请参阅wiki article "Menu Contribution" 了解更多信息。

【讨论】:

    【解决方案2】:

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

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

    在这种情况下,必须在显示对话框之前禁用 Activity,因此也必须修改 Show Views 菜单组件以执行此操作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多