Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse/RCP中定位工具栏_Java_Eclipse_Eclipse Plugin_Swt_Eclipse Rcp - Fatal编程技术网

Java 在Eclipse/RCP中定位工具栏

Java 在Eclipse/RCP中定位工具栏,java,eclipse,eclipse-plugin,swt,eclipse-rcp,Java,Eclipse,Eclipse Plugin,Swt,Eclipse Rcp,我正在开发我的微型RCP应用程序,它需要一个自定义的透视切换器来控制用户可以访问哪些视图。因此,我在这里,试图添加一个工具栏,其中有几个按钮来切换透视图 我认为控制这些东西的最好方法是在ApplicationActionBarAdvisor中添加第二个工具栏,它将调用我的电子操作/命令来切换透视图 假设我在fillCoolBar方法中创建了第二个ToolBarContributionItem,如下所示: protected void fillCoolBar(ICoolBarManager coo

我正在开发我的微型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);        
}
你知道如何对齐工具栏使其位于窗口的右侧吗?我想把这个职位硬编码

问候,,
Michael我遇到了一个类似的问题:我想在左侧有一个标准工具栏,在左侧有一个搜索文本和按钮。我没有找到真正的解决办法。我所做的是重写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一起使用。位置URI在MenuUtil类中可用,您是对的。但是没有可能使用locationURI定义菜单贡献是右对齐的,对吗?您能解释一下为什么它在Linux上不工作吗?我没有看到任何依赖平台的魔法。(我不使用linux,我只是好奇而已。:)