Eclipse plugin Eclipse插件/产品-强制顶级coolbar布局?

Eclipse plugin Eclipse插件/产品-强制顶级coolbar布局?,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我在一个插件中定义了一个Eclipse产品——它没有定义自己的应用程序类(即没有IApplication的自定义实现)。我正在使用plugin.xml中定义的主工具栏中的一些动态下拉项。我正在使用Eclipse4.3(开普勒)平台构建产品 在运行时,我希望工具栏项显示当前选中的下拉项。对于一般项目,我使用图标,但对于非一般项目,我希望显示一些识别文本。标识文本的长度并不总是相同的 我正在使用IElementUpdater更新下拉项和工具栏项。除了coolbar/toolbar/trimbar没有

我在一个插件中定义了一个Eclipse产品——它没有定义自己的应用程序类(即没有IApplication的自定义实现)。我正在使用plugin.xml中定义的主工具栏中的一些动态下拉项。我正在使用Eclipse4.3(开普勒)平台构建产品

在运行时,我希望工具栏项显示当前选中的下拉项。对于一般项目,我使用图标,但对于非一般项目,我希望显示一些识别文本。标识文本的长度并不总是相同的

我正在使用IElementUpdater更新下拉项和工具栏项。除了coolbar/toolbar/trimbar没有重新布局之外,一切正常。如果新文本比要替换的文本长,或者如果我从图标切换到文本,或者从图标切换到文本,工具栏将显示为空,甚至下拉箭头也不会显示。我的测试团队报告说,下拉工具项“消失”,这是对体验的一个很好的描述

有没有办法强制主工具栏/coolbar/trimbar复杂的重新布局


我做了一些研究,似乎我可以通过定义自己的IApplication实现并使用ActionBarAdvisor子类捕获Coolbar/工具栏管理器来实现这一点,以便以后调用layout()。这是一个非常重要的解决方案-还有其他解决方案吗?

您始终可以从
PartSite
检索工具栏管理器。还有子类
EditorSite
ViewSite

IWorkbenchPartSite site = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart().getSite();
        ToolBarManager mgr = null;
        if (site instanceof IEditorSite) {
            IEditorSite editorSite = (IEditorSite) site;
            mgr = (ToolBarManager) editorSite.getActionBars().getToolBarManager();
        } else if (site instanceof IViewSite) {
            IViewSite viewSite = (IViewSite) site;
            mgr = (ToolBarManager) viewSite.getActionBars().getToolBarManager();

        }
或者,如果您知道有可用的活动编辑器:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorSite().getActionBars().getToolBarManager();
或视图内部:

ToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
然后,您将有可能对其进行布局:

mgr.getControl().layout(true);

谢谢-我的问题是我需要布局主工具栏,而不是特定的编辑器工具栏。我正在使用的操作已添加到主工具栏,因为我希望它们始终可用。哦,抱歉,无法检索主工具栏,除非可能是您提到的主工具栏。