'core framework' and the 'customizable implementation' which contains
all dependencies on the native UI toolkit of the Symbian UI platform.
The Java ME subsystem's LCDUI implementation can be decomposed
into three major parts: the LCDUI core framework, 4 a UI widgets module, 5
and a graphics-rendering module 6 (see Figure 11.4).
The LCDUI core framework contains Java and native code and is
responsible for loading and invoking methods in the two extension
modules using a set of adaptor interfaces. The widgets module and
the graphics module provide a concrete implementation for the set of
adaptor interfaces. All code that requires customization by Symbian OS
licensees is located in the extension modules, which allows licensees to
make highly localized changes. The LCDUI core framework refers to the
concrete components solely through the adaptor interfaces and knows
nothing about their implementation.
The UI widgets module contains native code only and comes as a
DLL providing a heavyweight widgets implementation over the native UI
toolkit, which is well-integrated with the native Application Framework.
Symbian OS licensees must provide a concrete implementation for several
interfaces each of which acts as an adaptor for a given LCDUI widget.
The licensee's DLL exports a single widgets factory class (called
MMIDComponentFactory ), which creates and returns concrete imple-
mentation instances for all the adaptor interfaces. Typically, these
concrete implementation objects delegate the operations to the UI plat-
form's APPARC extension classes, which makes the LCDUI widgets look
and behave exactly the same as the native UI widgets.
Each Java LCDUI object generally has an equivalent peer native object,
to which it holds a reference as a handle. The handle is created in native
code, by the Factory exported by the widgets DLL, and returned to the Java
Figure 11.4 LCDUI implementation of the Java ME subsystem
4 LCDUI core framework is under
\ src \ common \ generic \ j2me \ components \
lcduib in the Symbian OS source repository.
5 The widgets plugin is under
\ src \ common \ generic \ j2me \ plugins \ reflcdui
in the Symbian OS source repository.
6 The graphics-rendering plugin is under
\ src \ common \ generic \ j2me \ plugins
\ lcdgr in the Symbian OS source repository.