Działanie to logiczna grupa funkcji koncentrujących się wokół pewnego rodzaju czynności. Na przykład tworzenie oprogramowania w języku Java to działanie często wykonywane przez użytkowników platformy, a pakiet JDT definiuje wiele elementów wnoszonych interfejsu użytkownika (widoki, perspektywy, preferencje itp.), które są użyteczne wyłącznie podczas wykonywania tego działania. Przed omówieniem mechanizmów służących do definiowania działań warto poznać sposoby ich użycia do "odśmiecenia" interfejsu użytkownika.
Pojęcie działania dotyczy użytkownika, chociaż dla nowego użytkownika nie musi
być ono oczywiste. Gdy dane działanie w platformie jest włączone, wyświetlane
są wnoszone elementy interfejsu użytkownika powiązane z tym działaniem. Gdy
działanie jest wyłączone, elementy wnoszone interfejsu użytkownika dla tego
działania nie są wyświetlane. Użytkownicy mogą włączać i wyłączać działania w zależności od potrzeb za pomocą strony preferencji
Ogólne > Możliwości. W interfejsie użytkownika
działania są określane terminem "możliwości", chociaż w interfejsie API używa
się terminu "działanie".
Niektóre operacje użytkowników są punktami wyzwalania włączającymi działanie. Na przykład utworzenie projektu Java może wyzwalać włączanie działania obejmującego programowanie w języku Java. W ten sposób użytkownicy uzyskują dostęp do nowych funkcji, gdy ich potrzebują, i stopniowo poznają dostępne działania oraz ich wpływ na interfejs użytkownika. Gdy użytkownik po raz pierwszy uruchamia platformę, wskazane jest, aby możliwie wiele działań było wyłączonych, dzięki czemu aplikacja będzie maksymalnie uproszczona. Wybór opcji na stronie powitalnej może pomóc w określeniu, jakie działania powinny zostać włączone.
Wiadomo już (z opisu w sekcji Perspektywy), w jaki sposób używa się perspektyw do organizowania różnych układów widoków i zbiorów akcji w czynności. Po co potrzebne są działania? Chociaż perspektywy i działania definiują podobne rodzaje czynności, główna różnica polega na sposobie powiązania z nimi elementów wnoszonych interfejsu użytkownika dla wtyczki. Elementy wnoszone interfejsu użytkownika są powiązane z perspektywami w definicji rozszerzenia elementu wnoszonego. To znaczy, że wtyczka określa, do jakich perspektyw należą jego widoki i zbiory akcji. Wtyczki mogą także swobodnie definiować swoje własne perspektywy. Nawet gdy perspektywa nie jest aktywna, użytkownik ma dostęp do powiązanych z nią widoków i akcji za pośrednictwem komend, na przykład komendy Pokaż widok.
Działania znajdują się na wyższym poziomie organizacji. Poszczególne elementy wnoszone interfejsu użytkownika nie są informowane o działaniach i nie odnoszą się do nich w swoich definicjach rozszerzeń. Działania są zwykle konfigurowane na wyższym poziomie, takim jak konfiguracja/integracja platformy lub instalacja produktu. Poszczególne wtyczki nie definiują zazwyczaj nowych działań, o ile nie są to wtyczki systemowe definiowane przez integratorów systemów. W typowym scenariuszu integrator systemów określa, w jaki sposób funkcje mają być pogrupowane w działania, i które z tych działań są włączone domyślnie. Do powiązania działań z elementami wnoszonymi interfejsu użytkownika służą powiązania wzorców działań. Wzorce te są dopasowywane do identyfikatorów elementów interfejsu użytkownika wnoszonych przez wtyczki. W przybliżeniu tych pojęć pomoże poniższy przykład.
Działania definiuje się przy użyciu punktu rozszerzenia org.eclipse.ui.activities. Poniżej przedstawiono uproszczony sposób definiowania przez wtyczkę Eclipse SDK dwóch działań - jednego dla tworzenia oprogramowania w języku Java i drugiego dla tworzenia wtyczek:
<extension point="org.eclipse.ui.activities"> <activity name="Działanie Java" description="Tworzenie oprogramowania Java" id="org.eclipse.javaDevelopment"> </activity> <activity name="Działanie wtyczek" description="Tworzenie wtyczek Eclipse" id="org.eclipse.plugInDevelopment"> </activity> ...
Działaniom przypisuje się nazwę i opis, które mogą być wyświetlane, gdy użytkownik włącza lub wyłącza działania, lub informacje o działaniach wyświetlaną w innych sytuacjach. Identyfikator działania jest używany podczas definiowania powiązań wzorców lub innych relacji między działaniami. Można na przykład zdecydować, że jedno działanie wymaga innego działania.
<activityRequirementBinding activityId="org.eclipse.plugInDevelopment" requiredActivityId="org.eclipse.javaDevelopment"> </activityRequirementBinding>
Powiązanie wymagania stanowi, że działanie tworzenia wtyczki może być włączone tylko wtedy, gdy włączone jest działanie programowania w języku Java. Pokrewne działania można także wiązać w kategorie, które są wyświetlane, gdy użytkownik pracuje z działaniami.
<category name="Programowanie" description="Tworzenie oprogramowania" id="org.eclipse.categories.developmentCategory"> </category> <categoryActivityBinding activityId="org.eclipse.javaDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding> <categoryActivityBinding activityId="org.eclipse.plugInDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding>
Ta kategoria grupuje pokrewne działania programistyczne. Jest ona wyświetlana, gdy użytkownik ręcznie konfiguruje działania.
Działania są powiązane z elementami wnoszonymi interfejsu użytkownika na podstawie dopasowywania wzorca. Dopasowywanie wzorca używane w powiązaniach wzorców działań jest zgodne z regułami opisanymi w pakiecie java.util.regex dla wyrażeń regularnych. Powiązania używane przez środowisko robocze składają się z dwóch części. Pierwsza część używa identyfikatora wtyczki, która wnosi rozszerzenie interfejsu użytkownika. Druga część to identyfikator używany przez samą wtyczkę podczas definiowania elementu wnoszonego (który może, ale nie musi, zawierać identyfikator wtyczki jako część identyfikatora). Stosowany jest następujący format:
identyfikator_wtyczki + "/" + identyfikator_lokalnyNa przykład poniższe powiązanie wzorca działania stanowi, że element wnoszony interfejsu użytkownika przez wtyczkę JDT o dowolnym identyfikatorze (org.eclipse.jdt.*) jest powiązany z działaniem programowania Java niezależnie od jego identyfikatora lokalnego (.*).
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Kolejne powiązanie jest konkretniejsze. Określa ono, że element wnoszony o nazwie javanature, definiowany we wtyczce podstawowej JDT (org.eclipse.jdt.core), jest powiązany z działaniem programowania Java.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\.core/javanature"> </activityPatternBinding>Jak widać, powiązania wzorców działań mogą służyć do wiązania dużych grup elementów wnoszonych z określonym działaniem lub do powiązania z działaniem bardzo konkretnych elementów wnoszonych. Działania mają wpływ na następujące elementy wnoszone:
Konwencja używana w środowisku roboczym (identyfikator wtyczki + identyfikator lokalny) umożliwia łatwe tworzenie powiązań z wtyczkami, które nie muszą być zgodne z praktyką nadawania nazw polegającą na poprzedzaniu identyfikatora elementu wnoszonego interfejsu użytkownika identyfikatorem wtyczki. Wtyczki bezpośrednio współdziałające z interfejsem API działań mogą bez ograniczeń korzystać z własnego formatu identyfikowania elementów wnoszonych i dopasowywania wzorca do tych nazw.
Do powiązywania działań z elementami wnoszonymi pomocy używa się tego samego schematu dopasowywania wzorca, którego używa się dla elementów wnoszonych interfejsu użytkownika. Druga część identyfikatora (identyfikator lokalny) wskazuje nazwę pliku ze spisem treści (TOC). Na przykład poniższe powiązanie wzorca działania wiąże wszystkie pliki TOC wnoszone przez wtyczki JDT (org.eclipse.jdt.*) z działaniem programowania Java:
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Gdy działanie programowania w języku Java jest wyłączone, podręczniki pomocy wnoszone przez wtyczki JDT oraz wszelkie podręczniki podrzędne (pliki TOC podłączone do podręczników JDT lub przez podręczniki JDT), nawet wnoszone przez inną wtyczkę, nie są wyświetlane w interfejsie użytkownika pomocy. Tematy zdefiniowane w tych podręcznikach nie będą także wyświetlane w wynikach wyszukiwania. W sytuacji, gdy spisy treści wtyczek JDT nie były wyświetlane jako główne spisy treści, ale były podłączone z innego spisu treści i wyświetlane jako poddrzewa w podręczniku, wyłączenie działania JDT spowoduje ukrycie tych poddrzew. W interfejsie użytkownika podręcznik, który je zawiera, będzie wyglądał, jak gdyby obejmował mniejszą liczbę tematów.
Używając bardziej konkretnych powiązań, można wiązać działania z wybranymi spisami treści z wtyczek, które wnoszą wiele spisów treści do systemu pomocy. Na przykład poniższe powiązanie wzorca działania wiąże spis treści sekcji "Przykłady" z działaniem przykładów programowania Java.
<activityPatternBinding activityId="org.eclipse.javaDevelopmentExamples" pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml"> </activityPatternBinding>Dzięki takiemu powiązaniu wzorca wyłączenie działania przykładów programowania w języku Java spowoduje, że sekcja "Przykłady" w "Podręczniku programisty wtyczek JDT" zostanie ukryta.
Obsługa działań w środowisku roboczym obejmuje interfejs API przeznaczony do definiowania działań oraz zmieniania ich stanu włączenia. Interfejs ten nie dotyczy większości wtyczek, ale przydaje się podczas implementowania funkcji umożliwiających użytkownikowi pracę z działaniami lub podczas implementowania punktów wyzwalania, które włączają konkretne działania. Zakłada się, że dowolna wtyczka, która manipuluje działaniami za pośrednictwem interfejsu API, ma znaczną liczbę informacji o konfiguracji działań na potrzeby danego produktu. Na przykład samo środowisko robocze używa tego interfejsu API do wyzwalania włączenia działań, takich jak programowanie w języku Java. Poniżej przedstawiono sposób użycia ogólnego interfejsu API działań do zaimplementowania wyzwalaczy w środowisku roboczym.
Koncentratorem wszelkich działań w środowisku roboczym jest interfejs IWorkbenchActivitySupport. Obsługa działań pracuje w parze z interfejsem IActivityManager. Wtyczki mogą uzyskiwać dostęp do instancji obsługi działań ze środowiska roboczego, a stamtąd z menedżera działań.
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); IActivityManager activityManager = workbenchActivitySupport.getActivityManager();Poniższy fragment kodu włącza działanie programowania w języku Java (o ile nie zostało ono włączone wcześniej). Stanowi on uproszczoną wersję wyzwalacza.
... //użytkownik wykonał dowolną czynność dotyczącą programowania w języku Java. Należy włączyć działanie programowania w języku Java. Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); if (enabledIds.add("org.eclipse.javaDevelopment")) workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
Interfejs IActivityManager definiuje także protokół uzyskiwania identyfikatorów wszystkich zdefiniowanych działań i kategorii oraz interfejsu IActivity lub ICategory dla danego identyfikatora. Obiektów tych można użyć do przechodzenia definicji działania lub kategorii w interfejsie API, na przykład uzyskania powiązań wzorca lub powiązań wymagań. W menedżerze działań lub w działaniach i kategoriach można zarejestrować funkcje nasłuchiwania, które będą wykrywać zmiany w definicji danego działania lub w samym menedżerze działań. Więcej informacji na ten temat zawiera opis pakietu org.eclipse.ui.activities.