Подтвердить что ты не робот

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

В разработке плагина eclipse я хочу добавить в контекстное меню один элемент (например: Mystyle).

Для экземпляра

Проводник проекта → Щелкните правой кнопкой мыши → Создать → MyStyle

Как я могу достичь этого в разработке плагина eclipse?

Отношения Mathan

4b9b3361

Ответ 1

Что-то вроде этого должно это сделать (после этот поток):

   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
         locationURI=
         "popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
         <command
               commandId="myplugin.command.mycommand"
               icon="icons/etool16/mycommand.png"
               label="Run mycommand"
               mnemonic="M1+P"
               tooltip="Do something with this project">
         </command>
      </menuContribution>
   </extension>

См. Содержание меню

Определяет упорядоченный набор дополнений к структуре пользовательского интерфейса команды. Определенные элементы будут добавлены в структуру пользовательского интерфейса команды в месте, указанном элементом locationURI.

Это должно быть отправной точкой для всех вкладов в меню, панели инструментов или обрезки, где бы они ни находились в пользовательском интерфейсе.

  • locationURI. Спецификация URI, определяющая точку вставки, в которую будут добавлены добавленные дополнения.
    Формат URI состоит из трех основных частей:
    • Схема: одно из "меню", "всплывающее окно" или "панель инструментов".
      Указывает тип менеджера, используемого для обработки вкладов.
    • Id: Это либо идентификатор существующего меню, либо идентификатор вида, либо идентификатор типа "
    • Запрос: формат запроса <placement>=<id> где: <placement> - либо" до ", либо" после" и <id> - это идентификатор существующего пункта меню

Show Readme Action

См. также org.eclipse.ui.popupMenus, org.eclipse.ui.menus - точка расширения с menuContribution, которая имеет свой locationURI -трибут, указывающий на popup:org.eclipse.ui.popup.any?after=additions.
Предупреждение, поскольку Prashant Bhate упоминает в комментарии, что пакет org.eclipse.ui.popupMenus устарел.
Подробнее см. Вопрос Отсутствует ссылка между objectContribution и командой.

Ответ 2

Мне потребовалось некоторое время, чтобы решить эту точную проблему только сейчас, поэтому я отвечу на вопрос OP (добавьте в меню "Файл- > Новое" ).

Где внести вклад (common.new.menu)

благодаря этому сообщению я обнаружил, что вы хотите внести свой вклад в popup: common.new.menu? after = new. почему ты спрашиваешь? если я знаю; но он работает.

Результат

(Когда C/С++ активна)

enter image description here

(Когда "не" C/С++ как активная перспектива)

enter image description here

Вот мой примерный плагин:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.commands">
      <command
            defaultHandler="com.justin.debug.SampleHandler"
            id="com.justin.debug.commands.sampleCommand"
            name="Sample Command">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="popup:common.new.menu?after=new">
         <command
               commandId="com.justin.debug.commands.sampleCommand"
               icon="icons/sample.gif"
               label="New Root Command From Justin"
               style="push">
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeWorkbenchWindow.activePerspective">
                  <equals
                        value="org.eclipse.cdt.ui.CPerspective">
                  </equals>
               </with>
            </visibleWhen>
         </command>
      </menuContribution>
      <menuContribution
            locationURI="popup:common.new.menu?after=new">
         <menu
               id="org.ecilpse.ui.navigator.ProjectExplorer.helloJustin"
               label="Hello Justin">
            <command
                  commandId="com.justin.debug.commands.sampleCommand"
                  icon="icons/sample.gif"
                  label="New Submenu Command From Justin"
                  style="push">
            </command>
         </menu>
      </menuContribution>
   </extension>
</plugin>

Я добавил здесь важную роль - параметр "visibleWhen". Это показывает только команду New Root от Justin, когда в C/С++ перспективе. Оказывается, сложно понять это, поэтому мое включение в пример. Вот полезные ресурсы, которые я выкопал, исследуя это:

Я выкопал имя C Perspective org.eclipse.cdt.ui.CPerspective, болезненно перекопав через plugin.xml плагина org.eclipse.cdt.ui.

теперь, если бы кто-нибудь мог сказать мне, как легко просмотреть эти uri/ресурсы/свойства в будущем... omg.