Today, in part 2 of the modular architecture course at Fontys University of Applied Sciences in Venlo, the Netherlands, we focused on components for data display in the NetBeans Platform, together with the related techniques for modularity and loose coupling.
The chosen domain was network satellite management. We ended up with a GUI editor for modifying data managed in a tree and in a table. Each Satellite, named "Awesome" and "Amazing" below, has one or more Antennas, e.g., "Main" and "Secondary", consisting of Parts, e.g., "Big" and "Small".
In the middle, you see "hello venlo", which is the start of a Visual Library scene, i.e., the label that you see can be moved around, etc, and ultimately can be extended to create a graph-like visualization of underlying data.
The most interesting and unique part of the architecture of the above application is that the tree and the table (actually, a treetable, thanks to the OutlineView component from the NetBeans Platform) are in different modules. What they share is an ExplorerManager, which we refactored into a separate module, together with the node hierarchy and related factories:
The "SatellitData Controler" that you see above returns an ExplorerManager, which is shared between the two TopComponents that you see highlighted above. In both TopComponents, an explorer view looks up the component hierarchy, finds the shared ExplorerManager, and renders its data.
Altogether, with all its clever techniques and strategies, the NetBeans Platform enables component-based development with shared and decoupled data managers.