- Andrew Kos
- Bill Burlein
- Bryan Williams
- Christian Vozar
- Jeff Brown
- John Kraus
- Joseph Mak
- Mark Daugherty
- Matt Van Bergen
- Melissa Geoffrion
- Michael Kang
- Michael Chan
- Michael Hodgdon
- Mike Motherway
- Molly McDaniel
- Nadia Maciulis
- Pat McLoughlin
- Paul Michelotti
- Puru Hemnani
- Rohit Srinath
- Ryan Lunka
- Tom Kelly
All Blogs
CITYTECH Blogroll:
JavaFX Family Tree Visualizer Source Code
Tuesday, March 16, 2010
A couple people have requested the source code for this Family Tree Visualizer that I contributed to JFXStudio a while back. You can get the source code here (updated for JavaFX 1.2). Thanks to those who had interest in it.
This visualization foregoes the typical tree structure by displaying a family tree in concentric rings with the younger generations rippling out from the middle (much like a real tree). There’s also some animation to flip back and forth between the two examples (the Baggins line and the House of Durin from Lord of the Rings).
Here’s the web start link again for convenience:
![]()
One of the great things about JavaFX Script is its declarative syntax, which lends itself to feeling like a DSL for constructing objects. To illustrate this idea, here’s an excerpt of the DSL-like syntax for creating the family tree from the above screen shot:
FamilyTree {
person: Person {
name:"Durin"
children: [
Person {
name:"Dain I"
children: [
Person {
name: "Tror"
children: [
Person {
name: "Thrain II"
children: [
Person { name: "Thorin II" }
Person { name: "Frerin" }
...
While it would be pretty generous to say that this is a full-blown DSL, its conciseness and structure certainly feels a lot like one. In my weaker moments I might even mistake it for a Groovy Builder.
I’ve heard it said many times over that JavaFX is a DSL for creating user interfaces. I may push that a bit farther and say that it’s a DSL for creating just about anything visual.
Next up, in keeping with recycling my old ideas, I’m going to update and release the source code for these tag cloud visualizers for those interested.
Sten Anderson
Recent Posts
- Invisible requirements within Business requirements
- Building a better Options Predicate
- Javascript, This, and You.
- Extensionless URLs with Adobe Experience Manager
- The Life of a Tester in Adobe CQ World!
- Limitations of the CQ Parsys Model and the Implementation of a Nested Paragraph System
- Google Analytics and AEM: No JavaScript? No Problem.
- Using Apache FOP to generate a PDF document based on a form submission data
- Configuring SAML in AEM 5.6
- Why You Should Get the WCM Experts Involved Early