Для того, чтобы собрать все действия, связанные с коллективной работой, в одном месте, в модуле 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 . В коде есть несколько интересных моментов, связанных с коллективной работой:
Реализация действия сильно зависит от конкретного типа хранилища.