-
De-coupling core modules
Problems with tight coupling have been ironed-out using modules as interfaces. The decorator modules have been de-coupled. Database, player and resolver modules too.
All of those modules could have alternative implementations and some will. For example, an audio player in Java supporting Ogg and MP3 is included now, but there’s enough reason to consider additional players. The UI decorator modules would try to get the best from Swing across all and on some specific platforms such as Mac OS X where it could look and feel native.
The database de-coupling removes dependency on annotation classes. However, there might be good reason to develop a smaller faster database at some stage too.
The following diagram provides an overview of the project modules and their dependencies.
The orange module is the main GUI module. The modules shown in green are the interface modules which are used to de-couple the core modules.
The de-coupled modules are loaded at runtime with class names provided in the configuration properties file. The interfaces for these are explicit, reasonably clean but likely unfinished.
Work continues on a nice cross-platform Swing UI. The CrossPlatformDecorator class is part working, and will be using the Swing Metal Ocean look and feel.

