:: JDiskReport

:: 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.
(c) 2008 JGoodies