我们有一个应用程序,其中某些视图仅在附加到某些视角时才起作用。 我们想从 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一起使用?
答案 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中添加一个扩展点,以便开发人员以声明方式从对话框中删除视图。