Как добавить выпадающую кнопку на панели инструментов представления? - PullRequest
6 голосов
/ 05 мая 2010

Мне нужно добавить кнопку на панель инструментов представления в плагине 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>

1 Ответ

9 голосов
/ 07 мая 2010

Я понял это. Два способа: один с использованием 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
  • Добавить команды в это меню.

Подробнее

...