Any ideas for a "scene builder" control?
John_Smith at symantec.com
Fri Apr 5 13:56:45 PDT 2013
One solution is to create a separate layer pane placed over the top of the container containing the controls to be positioned and laid out.
The Selection overlay would handle the rendering of the selection area bounds, resizing widgets etc.
Listeners on the various bounds types of nodes would co-ordinate changes between each of the panes.
For example, when the selection containing a node is dragged, the underlying node's layout is modified so that it moves as well.
A simplistic sample implementation is here:
https://gist.github.com/jewelsea/1441960 "Demo for understanding JavaFX Layout Bounds"
From: openjfx-dev-bounces at openjdk.java.net [mailto:openjfx-dev-bounces at openjdk.java.net] On Behalf Of Werner Lehmann
Sent: Friday, April 05, 2013 6:40 AM
To: openjfx-dev at openjdk.java.net
Subject: Any ideas for a "scene builder" control?
I am looking for options to create a custom container control or pane with absolute-position layouting which allows users at runtime to select, resize, drag, or drag-select children - similar to SceneBuilder.
Absolute layouting would probably be achieved by j.s.layout.Pane. The hard part is how to display interactive selections with...
- selection border on selected controls,
- resizing-handles in the border corners,
- a drag-selection rectangle,
while still keeping this a private implementation detail...
- cannot change parent hierarchy of contained child nodes,
- cannot add private nodes like a selection rectangle to the public children property.
So far I am stuck on the prototyping phase because nothing satisfied the
1. Using CSS to draw selection borders: does not work because I could not display those 8 resizing-handles (on top yes, on bottom no), plus it may override existing control styles, plus it does not help with a drag-selection rectangle.
2. Extending Region and implement Skinnable, and the Skin has a stackpane for the private nodes: skins are intended for Control, not Region, need to use/copy some com.sun.* and impl and private code, and the layouting seems off (leaving out details here).
3. Extending Region with a nested substructure of StackPane and Panes, and returning only part of that substructure as public children. Does not work well either (not surprisingly because I have different public and private children lists then), and it violates the "cannot change parent hierarchy" requirement.
Am I missing something obvious? How is this done in SceneBuilder? Maybe it extends Control and lays out the children in a Skin?
More information about the openjfx-dev