Пользовательский интерфейс JFace

Ранее было показано, что рабочая среда задает точки расширения, позволяющие модулям добавлять в платформу новые функции пользовательского интерфейса. Большинство этих точек расширения, в частности расширения мастеров, реализованы с помощью классов, входящих в состав пакетов org.eclipse.jface.*. В чем же заключается различие?

Среда JFace - это набор инструментов пользовательского интерфейса, содержащий вспомогательные классы пользовательского интерфейса, предназначенные для разработки сложных функций. JFace работает над уровнем простых управляющих элементов. Она предоставляет классы, описывающие общие задачи программирования пользовательского интерфейса:

JFace позволяет вместо системы управляющих элементов и неполадок, свойственных практически каждому приложению пользовательского интерфейса, уделить основное внимание реализации конкретной функции модуля.

JFace и рабочая среда

Как определить границу между JFace и рабочей средой? В некоторых случаях ответ не очевиден. В общем API JFace (входящие в состав пакета org.eclipse.jface.*) не зависят от точек расширения и API рабочей среды. В принципе, программа JFace может не содержать исходный код рабочей среды.

Рабочая среда применяет JFace, но по возможности пытается уменьшить зависимости. Например, модель компонента рабочей среды IWorkbenchPart) не зависит от JFace. Ранее было показано, что панели и редакторы можно реализовать непосредственно с помощью управляющих элементов SWT без применения классов JFace. Рабочая среда пытается сохранить "независимость от JFace" там, где это возможно. Программисты при необходимости могут использовать JFace. Фактически JFace применяется во многих реализациях рабочей среды. Кроме того, ссылки на типы JFace указаны в определениях ее API. (Например, интерфейс JFace IMenuManager, IToolBarManager и IStatusLineManager указаны в качестве типов в методах IActionBar).

При использовании API JFace желательно следовать правилам применения фоновых нитей. Дополнительная информация приведена в разделе Рабочая среда и нити

JFace и SWT

Границу между SWT и JFace определить гораздо проще. SWT полностью независим от исходного кода JFace или платформы. Многие примеры SWT представляют собой автономные приложения.

Среда JFace расширяет SWT и обеспечивает общий пользовательский интерфейс приложений. JFace не пытается "скрыть" SWT или заменить его. Она предоставляет классы и интерфейсы, обрабатывающие множество общих задач, связанных с разработкой динамического пользовательского интерфейса с помощью SWT.

Отношение между JFace и SWT можно наглядно представить, рассмотрев отношения программ просмотра с управляющими элементами SWT.