首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Eclipse/RCP中定位工具栏

在Eclipse/RCP中定位工具栏
EN

Stack Overflow用户
提问于 2011-01-21 21:57:38
回答 2查看 6.5K关注 0票数 5

我正在开发我的小RCP应用程序,它需要一个自定义的透视图切换器来控制用户可以访问哪些视图。因此,我在这里尝试添加一个工具栏,其中包含几个用于切换透视图的按钮。

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

假设我在fillCoolBar方法中创建了第二个ToolBarContributionItem,如下所示:

代码语言:javascript
复制
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);        
}

您知道如何对齐工具栏,使其位于窗口的右侧吗?我希望这个位置是硬编码的。

问候你,迈克尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-04 16:17:24

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

代码语言:javascript
复制
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);
}
票数 4
EN

Stack Overflow用户

发布于 2011-03-03 14:06:00

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4759600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档