Позиционирование панелей инструментов в Eclipse / RCP - PullRequest
5 голосов
/ 21 января 2011

Я работал над моим крошечным RCP-приложением, которому нужен настраиваемый переключатель перспективы, чтобы контролировать, к каким представлениям пользователь может получить доступ. Итак, я пытаюсь добавить панель инструментов с парой кнопок для переключения перспектив.

Я подумал, что лучший способ получить некоторый контроль над вещами - добавить в ApplicationActionBarAdvisor вторую панель инструментов, которая будет вызывать мои действия / команды для переключения перспектив.

Допустим, я создал второй ToolBarContributionItem в методе fillCoolBar, который будет выглядеть следующим образом:

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

Ответы [ 2 ]

4 голосов
/ 03 марта 2011

Почему вы, ребята, хотите написать код для этого?Вы можете использовать точку расширения menuContributions с locationURI панелей обрезки.LocationURI доступны в классе MenuUtil

4 голосов
/ 04 февраля 2011

У меня была похожая проблема: я хотел иметь стандартную панель инструментов слева и текст для поиска и кнопку слева.Я нашел не совсем решение.Я переопределил метод fill в ToolBarContributionItem, чтобы изменить макет 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);
}
...