Для того, чтобы собрать все действия, связанные с коллективной работой, в одном месте, в модуле UI коллективной работы определено расширение всплывающего меню. Меню Коллективная работа включает множество слотов подгрупп. Это сделано для того, чтобы модули поддержки коллективной работы могли добавлять действия и отчасти управлять пунктами меню. Следующий текст взят из манифеста модуля UI коллективной работы:
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="org.eclipse.team.ui.ResourceContributions" objectClass="org.eclipse.core.resources.IResource" adaptable="true"> <menu id="team.main" path="additions" label="%TeamGroupMenu.label"> <separator name="group1"/> <separator name="group2"/> <separator name="group3"/> <separator name="group4"/> <separator name="group5"/> <separator name="group6"/> <separator name="group7"/> <separator name="group8"/> <separator name="group9"/> <separator name="group10"/> <separator name="targetGroup"/> <separator name="projectGroup"/> </menu> ... </extension>
Меню Коллективная работа добавляется во всплывающее меню всех панелей, отображающих ресурсы (или объекты, применяющие ресурсы.) Для добавления в меню своих пунктов в модуле можно использовать ИД этого меню и группы разделителей. Также ничего не мешает вам определить свои собственные всплывающие меню, наборы действий или панель и действия редактора. Однако добавление в готовое меню Коллективная работа своих действий упрощает его для конечных пользователей.
Рассмотрим действие CVS, в котором есть несколько интересных моментов:
<extension point="org.eclipse.ui.popupMenus"> <objectContribution objectClass="org.eclipse.core.resources.IFile" adaptable="true" id="org.eclipse.team.ccvs.ui.IFileContributions"> <filter name="projectPersistentProperty" value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> </filter> <action label="%IgnoreAction.label" tooltip="%IgnoreAction.tooltip" class="org.eclipse.team.internal.ccvs.ui.actions.IgnoreAction" menubarPath="team.main/group3" helpContextId="org.eclipse.team.cvs.ui.team_ignore_action_context" id="org.eclipse.team.ccvs.ui.ignore"> </action> ...
Обратите внимание, что действие добавляется с помощью точки расширения рабочей среды org.eclipse.ui.popupMenus . В коде есть несколько интересных моментов, связанных с коллективной работой:
Реализация действия сильно зависит от конкретного типа хранилища.