Posted by sean.mi.phillips
on November 20, 2013 at 9:23 AM PST
When At-a-Glance" (AoG) displays associated with complex data visualization aren't enough and you need something more interactive a combination of the NetBeans Platform and JavaFX again comes to the rescue. This post is Part 2 in the ongoing mini-series discussing this pattern from the perspective of a NASA MMS Ground System software operationally deployed at the Goddard Space Flight Center.
In the previous post in this mini-series regarding the work I do on NASA Ground Systems, I showed some screenshots demonstrating data visualization. The basic tech stack involves combining the NetBeans Platform with custom JavaFX views. This pattern provides some very useful "At-a-Glance" (AoG) displays associated with daily data product generation.
AoG is typically appropriate, especially when in operations where the daily procedures are mostly concerned with a confirmation type validation. However something more interactive is needed by analysts who's weekly job is to drill down into the data products to explain phenomenons and make forward predictions. Again a combination of the NetBeans Platform and JavaFX supports this nicely.
For example custom State Vector data arrives daily from upstream data servers to the Mission Operations Control Room. The below image demonstrates the NetBeans Platform providing an encapsulated daily product view (aka product file).
Positional State Vector
The JavaFX scene has a customized Checkbox ListView which updates the scene's scatterplot automatically when checked. Just check the box of the data item you want and it automagically adds the data series to the scatter plot.
Velocity State Vector
It's valuable for both operators and analysts to compare and contrast different data vectors together.
Complete State Vector Together
However this is problematic due to axis scale. So the analyst needs the ability to drill down. Sure no problem, JavaFX makes adding custom action handlers a breeze. Here JavaFX allows me to add various Mouse event handlers such as pressed, click, drag etc on ANYTHING including the chart or axes:
A simple combo of event handlers for OnPressed and OnDrag allow us to simulate a "brushing" of the chart. Simply tie some animation or visual, in this case a simple Rectangle object, to the event handler and your user will be happy.
Better but let's go deeper! Drill Baby Drill!
Which takes us down to the heart of the matter. So the analyst might see the intersection point in time and say:
Hey... what's that?
And then hover over one of the data points at the intersection, leveraging the JavaFX support for mouse hover events on everything, even Chart Nodes, and say:
Hey... Take me there!
At which the JavaFX Data Node click handler hands some info to the NetBeans Platform. Now the NetBeans Platform takes care of everything nicely switching the TopComponent view from the JavaFX scene to the raw data view. It even automatically jumps the cursor to the exact data row and highlights it for you!
NetBeans Platform ties it all together!