Добавление поля со списком на панель инструментов Eclipse с помощью API разработки плагинов Eclipse - PullRequest
2 голосов
/ 23 января 2012

Я хочу добавить поле со списком на панель инструментов (Coolbar) Eclipse, используя API разработки Eclipse Plug-in (не RCP-приложение).Элементы этого поля со списком должны динамически добавляться / удаляться.

Я знаю, что в приложениях RCP это возможно, перейдя по ссылке: http://www.thedeveloperspoint.com/?p=140

, но я смотрю на API плагинов Eclipse.

Любая помощь будет принята с благодарностью.

СпасибоSyam

Ответы [ 3 ]

5 голосов
/ 26 апреля 2012

Это можно сделать, используя 2 шага.

ШАГ 1: С помощью механизма точки расширения создайте / добавьте панель инструментов на глобальную панель инструментов (используя locationURI как «панель инструментов: org.eclipse.ui.main.toolbar»)

  <extension
     point="org.eclipse.ui.menus">
    <menuContribution
        allPopups="false"
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
     <toolbar
           id="com.company.module.toolbar"
           label="Sample">
        <control
              class="com.company.module.ui.ComboToolbarContribution"
              id="ratata">
        </control>
    </toolbar>
   </menuContribution>
 </extension>

ШАГ 2. Реализуйте ComboToolbarContribution следующим образом.

package com.company.module.ui;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;

public class ComboToolbarContribution extends
    WorkbenchWindowControlContribution {
private Combo mReader;

public ComboToolbarContribution() {

}

@Override
protected Control createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    GridLayout glContainer = new GridLayout(1, false);
    glContainer.marginTop = -1;
    glContainer.marginHeight = 0;
    glContainer.marginWidth = 0;
    container.setLayout(glContainer);
    GridData glReader = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1);
    glReader.widthHint = 280;
    mReader = new Combo(container, SWT.BORDER | SWT.READ_ONLY
            | SWT.DROP_DOWN);
    mReader.setLayoutData(glReader);

    return container;
}

@Override
protected int computeWidth(Control control) {
    return 300;
} }

С помощью указанных выше двух шагов на глобальную панель инструментов будет добавлено поле со списком, и пользователю необходимо предоставить глобальный доступ к полю со списком.

0 голосов
/ 24 мая 2018

Как уже упоминалось выше, @Jonny может потребоваться зарезервировать место.

<menuContribution
        allPopups="false"
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
  <toolbar id="new">
    <control
          class="org.xy.composite.NewComposite"
          id="org.xy.composite.newcomposite.id">
    </control>
    <command
          commandId="newcomposite"
          icon="resources/nothing.png"
          label="nix"/>
  </toolbar>
</menuContribution>

А с command это возможно

0 голосов
/ 25 октября 2016

Чтобы избежать головной боли .. если кто-то сталкивается с проблемой, которая затмение рисует только 7px высоту элемента управления, я хочу указать на обходной путь:

https://www.eclipse.org/forums/index.php/t/1076367/

Добавить еще один вклад сзначок на той же панели инструментов (например, com.company.module.toolbar), чтобы зарезервировать достаточно места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...