Как добавить раскрывающуюся кнопку на панель инструментов представления?

Мне нужно добавить кнопку раскрывающегося списка на панель инструментов представления в Eclipse. плагин.

На самом деле кнопки на панели инструментов добавляются так:

<extension point="org.eclipse.ui.viewActions">
  <viewContribution id="..." targetId="$MyViewId$">
    <action id="..."
            toolbarPath="action1"
            class="Class extending Action and implementing IViewActionDelegate">
    </action>
  </viewContribution>
</extension>

person Julien Hoarau    schedule 05.05.2010    source источник


Ответы (1)


Я понял это. Два способа: один с расширением org.eclipse.ui.viewActions, другой с org.eclipse.ui.menus

Использование расширения org.eclipse.ui.viewActions (затмение >= 3.5)

  • стиль действия должен быть установлен на pulldown
    <extension point="org.eclipse.ui.viewActions">
      <viewContribution id="..." targetId="$MyViewId$">
        <action id="..."
                toolbarPath="action1"
                class="xxx.MyAction"
                style="pulldown">
        </action>
      </viewContribution>
    </extension>
  • класс действия должен реализовывать IViewActionDelegate (требуется для действия, вносящего вклад в панель инструментов представления) и IMenuCreator (определяет поведение меню).
    public class RetrieveViolationsViewActionDelegate implements IViewActionDelegate, IMenuCreator
    {
      private IAction action;
      private Menu menu;

      // IViewActionDelegate methods
      ...

      // IMenuCreator methods
      public void selectionChanged(IAction action, ISelection selection)
      {
        if (action != this.action)
        {
          action.setMenuCreator(this);
          this.action = action;
        }
      }

      public void dispose()
      {
        if (menu != null)
        {
          menu.dispose();
        }
      }

      public Menu getMenu(Control parent)
      {
        Menu menu = new Menu(parent);
        addActionToMenu(menu, new ClassImplemententingIAction());
        return menu;
      }

      public Menu getMenu(Menu parent)
      {
        // Not use
        return null;
      }



      private void addActionToMenu(Menu menu, IAction action)
      {
        ActionContributionItem item= new ActionContributionItem(action);
        item.fill(menu, -1);
      }
    }

Использование org.eclipse.ui.menus (eclipse >= 3.3)

  • Добавьте новый элемент меню в точку расширения org.eclipse.ui.menus.
  • Установите URI местоположения на toolbar:IdOfYourView
  • Добавьте панель инструментов к этому расширению и новую команду к этой новой панели инструментов.
  • Измените стиль команды на pulldown
  • Создайте новый вклад в меню и установите для locationURI значение menu:IdOfThePullDownCommand.
  • Добавьте команды в это меню.

Подробнее

person Julien Hoarau    schedule 07.05.2010
comment
Хороший ресурс: help.eclipse.org/indigo/ Это особенно улучшает этот ответ, указывая, что MyViewId должен быть идентификатором представления Eclipse, к которому вы хотите добавить кнопку. - person Vince; 06.05.2013