Struktura interfejsu użytkownika JFace

Widzieliśmy już, jak środowisko robocze definiuje punkty rozszerzenia dla modułów dodatkowych, umożliwiając dodawanie do platformy funkcji interfejsu użytkownika. Wiele z tych punktów rozszerzenia, szczególnie rozszerzenia kreatorów, są implementowane przy użyciu klas pakietów org.eclipse.jface.*. Jaka jest różnica?

JFace to pakiet narzędziowy interfejsu użytkownika udostępniający klasy pomocnicze służące do programowania funkcji interfejsu użytkownika, których implementacja jest zazwyczaj mało interesująca. Pakiet JFace działa powyżej poziomu systemu widgetów. Udostępnia klasy obsługujące najczęściej wykonywane czynności związane z programowaniem interfejsu użytkownika:

Pakiet JFace uwalnia programistę od konieczności zastanawiania się nad bazowym systemem widgetów oraz rozwiązywaniem problemów, które dotyczą interfejsu użytkownika niemal każdej aplikacji i pozwala skoncentrować się na implementowaniu konkretnej funkcji modułu dodatkowego.

Pakiet JFace i środowisko robocze

Gdzie kończy się pakiet JFace, a zaczyna środowisko robocze? Czasami granice nie są takie oczywiste. Generalnie interfejsy API pakietu JFace (z pakietów org.eclipse.jface.*) są niezależne od punktów rozszerzenia i interfejsów API środowiska roboczego. Program JFace może być nawet napisany bez żadnego kodu środowiska roboczego.

Środowisko robocze korzysta z pakietu JFace, jednak ogranicza zależności, gdzie tylko to możliwe. Na przykład model części środowiska roboczego (IWorkbenchPart) został zaprojektowany jako niezależny od pakietu JFace. Wcześniej pokazano, że widoki i edytory mogą być implementowane bezpośrednio przy użyciu widgetów SWT bez korzystania z klas pakietu JFace. Środowisko robocze jest, gdy tylko to możliwe, "niezależne od pakietu JFace", pozwalając programistom na używanie potrzebnych im fragmentów tego pakietu. W praktyce jednak środowisko robocze używa pakietu JFace w przypadku większości implementacji, a definicje interfejsu API odwołują się do typów pakietu JFace. Na przykład interfejsy pakietu JFace IMenuManager, IToolBarManager i IStatusLineManager są w środowisku roboczym typami w metodach interfejsu IActionBar.

Jeśli używany jest interfejs API JFace, dobrze jest pamiętać o regułach korzystania z wątków działających w tle. Więcej informacji na ten temat zawiera sekcja Środowisko robocze a wątki.

Pakiety JFace i SWT

Granice między pakietami SWT i JFace są dużo bardziej oczywiste. Pakiet SWT nie zależy od żadnego kodu pakietu JFace ani platformy. Wiele przykładów SWT pokazuje, w jaki sposób można zbudować autonomiczną aplikację.

Pakiet JFace został zaprojektowany, aby udostępniać wspólną funkcjonalność interfejsu użytkownika aplikacji powyżej biblioteki SWT. Pakiet JFace nie próbuje "ukryć" pakietu SWT ani zastąpić jego funkcji. Udostępnia klasy i interfejsy obsługujące wiele powszechnych czynności związanych z programowaniem dynamicznego interfejsu użytkownika przy użyciu pakietu SWT.

Zależność między pakietami JFace i SWT najlepiej widać na przykładzie przeglądarek i ich zależności od widgetów SWT.