:: Overview ::
First off, JDiskReport 1.2.x is not an ideal example application.
It's quite large and uses patterns that I've discontinued to use.
Also, JDiskReport shares a common code layer with JPathReport,
the com.jgoodies.treesize.* packages. This extra layer
makes it harder to read and understand the code.
I plan to overhaul JDiskReport, so it'll use the
Presentation Model pattern and architecture used
in Skeleton Pro and other JGoodies example applications.
Integrated Libraries
This distribution includes two embedded libraries that provide
charting and animation. You can find the charting classes
under src/charts and the animation code under
src/animation.
The charting code is neat but weak. It has been optimized
for a small library size and an elegant appearance.
Since it lacks many functions of full-featured charting
libraries, I recommend to only use this charting if
you want to render pie charts and bar charts as in this
application - and nothing more.
The embedded animation code has been replaced by an overhauled
and more powerful library that is now open source:
the JGoodies Animation, a framework for time-based real-time
animations in Java that ships with the JGoodies Swing Suite.
Domain Layer (Models)
This layer consists of domain objects that describe
the data the application works with.
In this case, directories and files.
Since File exists in the Java core, there was no need
to create a separate domain class for files.
The statistics are good candidates for this layer too.
However, currently they include presentation data
and so are located in the tool layer.
Presentation Layer (Views)
This layer consists all views, and more generally,
classes that present models: panels, dialogs, renderers, etc.
Views shall listen to updates in the domain and
underlying tool layer. JDiskReport doesn't quite follow
the clean Observer pattern; almost all updates
are driven by the presentation layer itself.
Tool Layer (Data Binding)
This layer connects the views with the underlying domain model.
Find here UI specific models and controllers, e.g. event handlers.
|