org.eclipse.ui.viewActions

Typowe zadanie modułów dodatkowych to wnoszenie zachowań do widoków, które już istnieją w środowisku roboczym. Zadanie to jest realizowane za pośrednictwem punktu rozszerzenia org.eclipse.ui.viewActions. Ten punkt rozszerzenia pozwala modułom dodatkowym wnosić opcje menu, podmenu i pozycje paska narzędzi do lokalnego menu rozwijanego i lokalnego paska narzędzi istniejącego widoku.

Na lokalnym pasku narzędzi nawigatora można zauważyć element, który staje się aktywny po zaznaczeniu pliku readme. Element ten jest także wyświetlany w lokalnym menu rozwijanym nawigatora. Akcje te są widoczne, ponieważ wnosi je moduł dodatkowy narzędzia readme, używając rozszerzenia viewActions.

Odpowiedni fragment pliku plugin.xml elementu wnoszonego przedstawiono poniżej.

   <extension
    point = "org.eclipse.ui.viewActions">
      <viewContribution 
         id="org.eclipse.ui.examples.readmetool.vc1" 
         targetID="org.eclipse.ui.views.ResourceNavigator">        
	   <action id="org.eclipse.ui.examples.readmetool.va1" 
              label="%PopupMenu.ResourceNav.label" 
	      menubarPath="additions"
              toolbarPath="additions" 
              icon="icons/obj16/editor.png"
              tooltip="%PopupMenu.ResourceNav.tooltip" 
   	      helpContextId="org.eclipse.ui.examples.readmetool.view_action_context"
              class="org.eclipse.ui.examples.readmetool.ViewActionDelegate" 
              enablesFor="1"> 
		<selection class="org.eclipse.core.resources.IFile" name="*.readme"/> 
	   </action>
      </viewContribution>
    </extension>

W powyższym fragmencie określono element wnoszony dla widoku o unikalnym identyfikatorze. Widok, do którego akcja jest dodawana, jest określony atrybutem targetID. W tym przypadku akcja jest wnoszona do menu nawigatora zasobów.  Dla nowej akcji określono etykietę oraz położenia na pasku menu i na pasku narzędzi.  Pełne omówienie położeń w menu i na pasku narzędzi zawiera temat Ścieżki menu i pasków narzędzi.

Określono także warunki, po spełnieniu których akcja powinna zostać włączona. Stanie się to po wybraniu jednego (enablesFor="1") pliku typu IFile (class="org.eclipse.core.resources.IFile"), którego nazwa ma rozszerzenie ".readme" (name="*.readme"). Tak będzie to działać podczas klikania plików w nawigatorze zasobów.  

Informacje w pliku plugin.xml to wszystko, co jest potrzebne do dodawania opcji do menu i pasków narzędzi, ponieważ kod modułu dodatkowego będzie uruchamiany dopiero po wybraniu akcji z menu lub paska narzędzi. W celu udostępnienia zachowania akcji klasa implementacji określona w pliku plugin.xml musi implementować interfejs IViewActionDelegate.

W tym przykładzie moduł dodatkowy narzędzia readme dostarcza klasę ViewActionDelegate w celu zaimplementowania tej akcji. Podczas przeglądania tej klasy można zauważyć, że zawiera ona metody zapamiętywania swojego widoku, obsługi zmiany zaznaczenia oraz wywoływania swojej akcji.  Po wywołaniu akcja otwiera okno dialogowe z informacją, że została wykonana.

public void run(org.eclipse.jface.action.IAction action) {
	MessageDialog.openInformation(view.getSite().getShell(),
		MessageUtil.getString("Readme_Editor"),  
		MessageUtil.getString("View_Action_executed")); 
}

Chociaż ta akcja jest bardzo prosta, można sobie wyobrazić, o ile bardziej interesujące rzeczy mogłaby ona wykonywać, gdyby użyte zostały wybory i bardziej rozbudowane okna dialogowe.