在Eclipse / RCP中定位工具栏

我正在研究我的小型RCP应用程序,它需要一个自定义的透视切换器来控制用户可以访问的视图。 所以我在这里,尝试添加一个带有几个按钮的工具栏来切换视角。

我认为控制这些东西的最好方法是在ApplicationActionBarAdvisor中添加第二个工具栏,它会调用我的动作/命令来切换视角。

所以假设我在fillCoolBar方法中创建了第二个ToolBarContributionItem,它看起来像这样:

protected void fillCoolBar(ICoolBarManager coolBar) { IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); ToolBarContributionItem mainBar = new ToolBarContributionItem(toolbar, "main"); coolBar.add(mainBar); toolbar.add(openViewAction); toolbar.add(newConnectionAction); //Custom perspective switcher bar IToolBarManager perspectives = new ToolBarManager(SWT.FLAT | SWT.RIGHT); ToolBarContributionItem perspectiveBar = new ToolBarContributionItem(perspectives, "perspectives"); coolBar.add(perspectiveBar); } 

任何想法如何我可以对齐工具栏,使它在窗口的右侧? 我很想把这个职位硬编码。

问候,迈克尔

我遇到了类似的问题:我想在左侧有一个标准工具栏,在左边有一个搜索文本和按钮。 我发现不是真正的解决方案。 我所做的是我覆盖ToolBarContributionItem中的fill方法,以便更改CoolBarManager的布局。 这不是一个好的解决方案,它适用于Windows(在这种情况下已足够),但不适用于Linux,但它可能会有所帮助:

 protected void fillCoolBar(ICoolBarManager coolBar) { coolBar.setLockLayout(true); IToolBarManager mainToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); coolBar.add(new ToolBarContributionItem(mainToolBar, "main")); fillMainToolBar(mainToolBar); IToolBarManager searchToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); ToolBarContributionItem searchBarItem = new ToolBarContributionItem( searchToolBar, "search") { @Override public void fill(CoolBar coolBar, int index) { super.fill(coolBar, index); // change the layout of the cool-bar to have the search // controls on the right side GridLayout coolBarLayout = new GridLayout(2, false); coolBarLayout.marginHeight = 0; coolBarLayout.marginWidth = 0; coolBarLayout.horizontalSpacing = 20; coolBarLayout.verticalSpacing = 0; coolBarLayout.marginLeft = 10; coolBar.setLayout(coolBarLayout); GridData mainGridData = new GridData(SWT.LEFT, SWT.CENTER, true, false); GridData searchGridData = new GridData(SWT.RIGHT, SWT.CENTER, false, false); coolBar.getItem(0).getControl().setLayoutData(mainGridData); coolBar.getItem(1).getControl().setLayoutData(searchGridData); } }; coolBar.add(searchBarItem); searchToolBar.add(new SearchTextControl()); searchToolBar.add(searchAction); } 

为什么你们要为此编码? 您可以将menuContributions扩展点与修剪条的locationURI一起使用。 locationURI在MenuUtil类中可用