Finally, the project reached a point where it becomes useful. I’m still not a JavaFX expert and some things seem still strange to me. However, moving to JavaFX was definitely the right decision. I have a lot of fun exploring the API!
Windows and icons are real controls now (rjahn, thanks for the hint!). Even though not part of the public API I created default skins for
WindowIcon which extend
SkinBase. I didn’t see another possibility.
That’s how the windows look like:
Each window can have a title, icons on the left and on the right side. For testing purposes I implemented icons for the following actions:
- close: closes the window
- minimize: minimizes the window
- rotate: rotates the window (currently totally useless, but I like the animation so much 🙂 )
The visual appearance can be styled via CSS which works really nice. Especially the SVG path feature is quite useful for importing paths from a vector drawing program such as Inkscape.
I’ve added a
ScalableContentPane which gives its content pane as much space as it wants but scales the content to match the size of the parent. If you combine this with scrollbar based parents you can create a really nice toolkit for visualizing workflows etc. Actually, that’s what I designed it for.
Unfortunately, CPU/GPU power is a limited resource. Thus, scenegraph optimization is necessary if displaying large amounts of nodes. Therefore, I implemented an
OptimizableContentPane that becomes invisible if it is too small. Custom optimization rules are also possible.
I’ve also made some experiments with zooming into window hierarchies:
See the video to get an impression on what’s currently possible.