org.eclipse.ui.actionSets

Модули могут добавлять меню, пункты меню и элементы панели инструментов к меню рабочей среды и к панели инструментов с помощью точки расширения org.eclipse.ui.actionSets. Для того чтобы не загромождать интерфейс при отображении всех добавленных модулями пунктов меню одновременно, дополнения группируются в наборы действий, которые можно сделать видимыми с помощью параметров пользователя.

Можно просмотреть действия, добавленные в рабочую среду с помощью пункта меню рабочей среды Окно->Настроить проекцию.... Будет показано окно со списком наборов действий, представленных в виде групп команд. Отметка рядом с группой команд означает, что действия меню и панели инструментов видны в рабочей среде. Можно выбрать имя группы команд, чтобы увидеть список доступных действий меню и панели инструментов. На приведенном ниже рисунке показан список групп команд, доступных в рабочей среде.   (Ваша рабочая среда может выглядеть иначе в зависимости от установленных модулей и активных проекций).

Окно диалога Настроить проекцию со списком наборов действий

Утилита readme использует набор действий для дополнения нескольких различных действий "Открыть браузер Readme" в меню рабочей среды.  (Мы добавляли подобное действие к всплывающему меню навигатора ресурсов).  Вот пример кода:

<extension point = "org.eclipse.ui.actionSets">
	   <actionSet id="org_eclipse_ui_examples_readmetool_actionSet"
		   label="%ActionSet.name"
		   visible="true">
		   <menu id="org_eclipse_ui_examples_readmetool"
			   label="%ActionSet.menu"
			   path="window/additions"> 
			   <separator name="slot1"/>
			   <separator name="slot2"/>
			   <separator name="slot3"/>
		   </menu>
		   <action id="org_eclipse_ui_examples_readmetool_readmeAction"
			   menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
			   toolbarPath="readme"
			   label="%ReadmeAction.label"
			   tooltip="%ReadmeAction.tooltip"
			   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
			   icon="icons/ctool16/openbrwsr.png"
			   class="org.eclipse.ui.examples.readmetool.WindowActionDelegate"
			   enablesFor="1">
			   <selection class="org.eclipse.core.resources.IFile"
					name="*.readme">
			   </selection>
		   </action>
		   ...
	   </actionSet>
   </extension>

Да, довольно запутанный код!  Сначала обратим внимание только на первое действие.  

Вначале объявляется набор действий, и ему назначается метка.  В приведенном выше диалоге для отображения набора действий используется метка "ReadMe Actions" (заданная для ключа %ActionSet.name в файле параметров модуля).  Так как мы присвоили visible значение "истина", рабочая среда пометит набор действий в списке и сделает его видимым.

Остальная часть объявления набора действий касается определения меню, в котором отображаются действия и самих действий.

Мы задаем меню, метка которого отображается в меню рабочей среды.  Путь меню указывает рабочей среде поместить новое меню в группу Дополнения меню Окно.  (Сведения о путях меню и группах содержатся в разделе Пути меню и панели инструментов).  Мы также зададим заготовки в новом меню, чтобы действия можно было вставить в определенные места меню.

С помощью этого кода наше меню отобразится в меню Окно рабочей среды.

Меню окна рабочей среды с записью редактора файлов Readme

Затем мы определяем сами действия  

Определение действия (ИД, метка, значок, класс) похоже на другие действия, которые мы встречали в панелях, редакторах и всплывающих меню.  Обратим внимание на отличия:  куда же попадают действия?  Мы используем   menubarPath и toolbarPath для указания их расположения.  Вначале задается menubarPath, чтобы добавить действие в заготовку только что определенного меню ( "window/org_eclipse_ui_examples_readmetool/slot1").

Меню редактора файлов Readme

Затем мы определим новый toolbarPath для вставки наших действий в панель инструментов рабочей среды.  После того как задан новый путь к инструментам, "readme", рабочая среда решит, куда поместить другие дополнения панели инструментов модулей.

Панель инструментов рабочей среды с действием readme

Что происходит, когда пользователь выбирает действие?  Действие реализуется классом, указанным в атрибуте классКласс действия должен применить IWorkbenchWindowActionDelegate или IWorkbenchWindowPulldownDelegate, если действие будет отображаться как пункт выпадающего меню в панели инструментов.  Так как мы не создаем элемент выпадающего меню, используется WindowActionDelegate.  Этот класс схож с ObjectActionDelegate.  Он запускается с диалогом разделов readme, когда пользователь выбирает действие.   (Мы обсудим окно Sections в разделе Окна диалога приложений).

Действие также предоставляет условия активации пунктов его меню и элементов панели инструментов.   Пункты меню и панели инструментов будут активированы только тогда, когда выбран один файл (enablesFor="1") readme (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme").   Этот элемент действия меню или панели инструментов отображается и активируется посредством кода в файле plugin.xml.  Код модуля не выполняется до тех пор, пока пользователь не выбирает действие или рабочая среда не запустит класс действия.

Позднее мы рассмотрим два других действия в контексте действий с изменяемыми целями.