如何在Eclipse插件中弃用视图

如何在Eclipse插件中弃用视图,eclipse,plugins,rcp,Eclipse,Plugins,Rcp,我有一个Eclipse插件,用于提供一个视图。但是,在我的插件的下一个版本中,我不想再提供这个视图,因为功能是以不同的方式完成的。那么,如何删除视图呢 如果我只是从plugin.xml中删除视图声明,那么在他们升级为“无法创建视图com.foobar.view.id”后,它将显示为一个错误,这是因为视图仍然列在他们的workspace.xml中,因此Eclipse会在重新启动时尝试创建它 如果我根据我创建的虚拟视图注册了视图ID,那么我必须在plugin.xml中注册它,这样它就会出现在Wind

我有一个Eclipse插件,用于提供一个视图。但是,在我的插件的下一个版本中,我不想再提供这个视图,因为功能是以不同的方式完成的。那么,如何删除视图呢

如果我只是从plugin.xml中删除视图声明,那么在他们升级为“无法创建视图com.foobar.view.id”后,它将显示为一个错误,这是因为视图仍然列在他们的workspace.xml中,因此Eclipse会在重新启动时尝试创建它

如果我根据我创建的虚拟视图注册了视图ID,那么我必须在plugin.xml中注册它,这样它就会出现在Windows、Show view、Other list中


当我不想在另一个视图中重复使用该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对话框中过滤视图的功能。