GUI ToolKits are libraries written to ease the task of writing
GUI applications by abstracting the drudgework away from the
programmer. As an added bonus, they offer a consistent look
between applications that use the same one. In a GUI application
written without a ToolKit the actual program is a long loop that
continuously calls a function to poll incoming events and then
feeds them into a huge switch construct that decides how to
react to each event. Every single facet of the application's
behaviour has to be reflected here. Needless to say, writing
non-trivial applications this way is tiresome at best. A GUI
ToolKit's main responsibility is to abstract away this event
loop in a way that it can be maintained and extended easily. To
this end, the different "widgets" (such as buttons, labels,
menus etc) of a GUI are treated as black boxes. An EventModel is
then specified, which defines how events "propagate" across
these blackboxes. The EventModel is a large factor in the design
of an application's architect