启动和停止主机插件

Starting and Stopping Host Plug-ins

我们有一个带有常用 GUI 元素的标准 Eclipse 插件,由于我们的应用程序没有相同的结构,所以这些元素的注册是在一个片段中完成的,例如:

<fragment>
    <extension point="org.eclipse.ui.menus">
        <menuContribution allPopups="false" locationURI="popup:org.acme.menu>
            <command commandId="org.acme.command" style="push" />
        </menuContribution>
    </extension>
</fragment>

现在一切正常。停止主机插件时会出现问题,因为显然片段也没有停止,有问题的菜单保持填充状态,首选项页面保持在对话框中,等等。

如果我可以直接启动和停止片段,但确认你不应该(事实上,不能)对片段做那样的事情。

然后我开始安装/卸载片段,这导致了一些bug in the PackageAdmin

据我所知,将 GUI 元素的注册放在一个片段中是公平的游戏,据我所知,片段的生命周期应该绑定到主机,所以它不应该贡献主机停止时的 GUI 元素。

有人可以指出我在这里做错了什么吗?

扩展点声明可从任何已安装 插件或片段中获得,无论它们是否已启动。停止主机插件不会使该菜单声明不可用。

为此,您可能需要在捆绑包启动时以编程方式注册菜单贡献,并在捆绑包停止时将其删除。这可能意味着使用单独的插件而不是片段,因为片段没有激活器。