org.eclipse.ui.actionSets

Moduł dodatkowy może wnosić menu, opcje menu i przyciski paska narzędzi do menu i paska narzędzi środowiska roboczego, używając punktu rozszerzenia org.eclipse.ui.actionSets. Aby uniknąć szumu informacyjnego spowodowanego jednoczesnym wyświetleniem elementów wnoszonych menu ze wszystkich modułów dodatkowych, elementy wnoszone zostały pogrupowane w zbiory akcji, które użytkownik może wyświetlać zgodnie z preferencjami.

Wybierając opcje Okna->Dostosuj perspektywę z menu środowiska roboczego, można zobaczyć, które zbiory akcji zostały wniesione do środowiska. Wybór tej opcji spowoduje wyświetlenie okna dialogowego z listą zbiorów akcji jako grup komend. Znacznik wyboru obok grupy komend oznacza, że akcje paska menu i paska narzędzi są widoczne w środowisku roboczym. Po wybraniu grupy komend z prawej strony zostanie wyświetlona lista dostępnych akcji menu i paska narzędzi. Rysunek poniżej przedstawia listę grup komend dostępnych w środowisku.  Dane środowisko robocze może wyglądać inaczej, zależnie od tego, które moduły dodatkowe zostały zainstalowane i jaka perspektywa jest aktywna.

Okno dialogowe Dostosuj perspektywę z listą zbiorów akcji

Narzędzie readme korzysta ze zbioru akcji w celu wniesienia kilku różnych akcji "Otwórz przeglądarkę plików Readme" do menu środowiska roboczego.  Podobna akcja została wniesiona do menu podręcznego nawigatora zasobów.  Kod znaczników jest następujący:

<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>

Jak widać, wiele się w tym fragmencie dzieje.  Zostanie on przeanalizowany krok po kroku, na początek omówiona zostanie tylko pierwsza akcja.  

Na początku deklarowany jest zbiór akcji oraz nadawana jest mu etykieta (atrybut label).  Etykieta "ReadMe Actions" (zdefiniowana dla klucza %ActionSet.name w pliku właściwości modułu dodatkowego) służy do wyświetlania zbioru akcji w oknie dialogowym przedstawionym powyżej.  Ponieważ atrybut visible ma wartość true, ten zbiór akcji będzie początkowo zaznaczony na liście zbiorów akcji i akcje będą widoczne w środowisku roboczym.

Pozostała część deklaracji zestawu akcji dotyczy definicji menu, w którym akcje będą wyświetlane, i samych akcji.

Definiowane jest menu, którego etykieta label będzie wyświetlana wśród menu środowiska roboczego.  Ścieżka (path) menu informuje środowisko robocze, że nowe menu ma zostać umieszczone w sekcji additions menu window.   Omówienie ścieżek i sekcji menu zawiera temat Ścieżki menu i pasków narzędzi.  Definiowane są także pewne sekcje w nowym menu, dzięki którym można wstawić akcje w określonych miejscach tego menu.

Ten kod znaczników wystarczy, aby menu było wyświetlane w menu Okna środowiska roboczego.

Menu Okna środowiska roboczego i pozycja Edytor plików Readme

Następnie definiowane są same akcje.  

Definicja akcji (id, label, icon, class) jest podobna do innych akcji, które można zobaczyć w widokach, edytorach i menu podręcznych.  Tutaj jednak należy skoncentrować się na różnicach:  gdzie akcja zostanie umieszczona?  Aby wskazać położenie akcji, użyto atrybutów   menubarPath i toolbarPath.  Najpierw definiuje się atrybut menubarPath, aby dodać akcję do sekcji w dopiero co zdefiniowanym menu ( "window/org_eclipse_ui_examples_readmetool/slot1").

Edytor plików Readme z pozycjami menu

Następnie definiuje się nowy atrybut toolbarPath, aby wstawić akcje na pasku narzędzi środowiska roboczego.  Ponieważ zdefiniowano nową ścieżkę narzędzia - "readme" - środowisko robocze zdecyduje, gdzie umieścić akcję względem elementów paska narzędzi wnoszonych przez inne moduły dodatkowe.

Pasek narzędzi środowiska roboczego z akcją narzędzia Readme

Co się dzieje, gdy użytkownik wybierze akcję?  Akcja jest implementowana przez klasę określoną atrybutem class.  Klasa akcji (class) musi implementować interfejs IWorkbenchWindowActionDelegate lub IWorkbenchWindowPulldownDelegate, gdy akcja ma być wyświetlana jako opcja menu rozwijanego narzędzia z paska narzędzi.  Ponieważ jednak nie chodzi o utworzenie opcji menu rozwijanego narzędzia, zostanie udostępniona klasa WindowActionDelegate.  Klasa ta jest podobna do klasy ObjectActionDelegate.  Uruchamia ona okno dialogowe sekcji plików readme, gdy użytkownik wybierze akcję.  Okno dialogowe sekcji zostanie omówione w temacie Okna dialogowe aplikacji.

Akcja dostarcza także warunki włączania swojej opcji menu i opcji paska narzędzi.  Opcje menu i paska narzędzi będą włączone tylko wtedy, gdy zostanie wybrany pojedynczy (enablesFor="1") plik readme (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme"). Opcja w menu i na pasku narzędzi odpowiadająca tej akcji jest wyświetlana jako włączona za sprawą kodu znaczników w pliku plugin.xml.   Żaden kod modułu dodatkowego nie zostanie wykonany, dopóki użytkownik nie wybierze akcji i środowisko robocze nie uruchomi klasy (class) akcji.

Pozostałe dwie akcje zostaną omówione później w kontekście akcji o zmiennych celach.