如何在Eclipse插件中弃用视图
我有一个Eclipse插件,用于提供一个视图。但是,在我的插件的下一个版本中,我不想再提供这个视图,因为功能是以不同的方式完成的。那么,如何删除视图呢 如果我只是从plugin.xml中删除视图声明,那么在他们升级为“无法创建视图com.foobar.view.id”后,它将显示为一个错误,这是因为视图仍然列在他们的workspace.xml中,因此Eclipse会在重新启动时尝试创建它 如果我根据我创建的虚拟视图注册了视图ID,那么我必须在plugin.xml中注册它,这样它就会出现在Windows、Show view、Other list中如何在Eclipse插件中弃用视图,eclipse,plugins,rcp,Eclipse,Plugins,Rcp,我有一个Eclipse插件,用于提供一个视图。但是,在我的插件的下一个版本中,我不想再提供这个视图,因为功能是以不同的方式完成的。那么,如何删除视图呢 如果我只是从plugin.xml中删除视图声明,那么在他们升级为“无法创建视图com.foobar.view.id”后,它将显示为一个错误,这是因为视图仍然列在他们的workspace.xml中,因此Eclipse会在重新启动时尝试创建它 如果我根据我创建的虚拟视图注册了视图ID,那么我必须在plugin.xml中注册它,这样它就会出现在Wind
当我不想在另一个视图中重复使用该ID时,你知道如何以一种好的方式摆脱这个旧视图吗?我认为在Eclipse中不推荐视图并不容易。正如你在问题中所说,你可以删除它,也可以不删除 也许在下一个版本中,您可以包含一个虚拟视图,其中包含一些文档,以便下次在其中查找功能,请将plugin.xml中的restorable属性设置为false,以防止Eclipse下次重新打开此虚拟视图
然后在以后的版本中,您可以完全删除该视图。如果使用相同的ID注册新视图,会发生什么情况?而且,错误只会第一次出现,在随后的重新启动中不会出现。最后,我把旧的活动技巧从袋子里拿出来,找到了一个可以接受的解决方案。在这里为子孙后代记录,但我很想听听是否有人提出了更好的方法 首先,创建一个空白视图页面,该页面只显示“此视图故意留空”或其他一些有用的信息,以便用户知道升级成功,只是可以关闭视图。在我们的例子中,我们解释了现在在哪里可以找到等效的功能,并提供了一个链接,他们可以点击该链接将他们带到应用程序的该部分 其次,将该视图类注册为旧视图ID的实现,并将其标记为不可恢复,即
<view
allowMultiple="false"
category="com.foobar.category"
class="com.foobar.ui.views.DeprecatedView"
id="com.foobar.ui.views.OldView"
name="My Old View"
restorable="false"/>
最后,我们需要拿出活动技巧。创建一个新活动并将您的视图放入其中。这将从“显示”视图中筛选旧视图,其他。。。对话框,以便新用户不会再次看到它。例如:
<extension
point="org.eclipse.ui.activities">
<activity
name="Deprecated"
description="Supress old views that are no longer used."
id="com.foobar.hidden">
</activity>
<activityPatternBinding
activityId="com.foobar.hidden"
pattern="com.foorbar.plugin/com.foobar.ui.views.OldView"
isEqualityPattern="true">
</activityPatternBinding>
</extension>
然后看一看——这是我在浏览ViewRegistry和ShowViewDialog代码时能够找到的过滤注册视图的唯一方法。是的,这是现在的选项之一,但我真的不喜欢在窗口中留下视图,Show view,其他基本上是“此视图故意留空”的列表观点:-)我会继续玩,但很高兴我不仅仅是个哑巴。是的,我知道这不是一个真正的解决办法。你可以完全移除它,或者假装移除它,但是中间没有任何东西。这在朱诺中是行不通的。看起来这是因为视图和视图类别不是IPluginContribution的:-(我认为在Juno的当前版本中,无论如何都没有从Show view对话框中过滤视图的功能。