classafReflux::ResourceTree
sys::Obj afReflux::ResourceTree
(Widget) - A tree widget that displays Resource
hierarchies. ResourceTree
is a wrapper around the FWT Tree widget with the following enhancements:
- A
Resource
specific tree model. - Hassle free
refreshResource()
andshowResource()
methods that just work. - Event data return the
Resource
that's been actioned.
Because ResourceTree
does not extend fwt:Widget
it can not be added directly. Instead, add the tree
field which returns the wrapped FWT Tree instance.
tree := ResourceTree(reflux) ContentPane() { it.content = tree.tree }
- isExpanded
Bool isExpanded(Resource resource)
Return the expanded state for this
Resource
.- make
new make(Reflux reflux, |This? in := null)
Creates a
ResourceTree
. Use the ctor to pass in a tree:ResourceTree(reflux) { it.tree = Tree { it.border = false } it.roots = myRoots it.model = MyModel() }
Note that, as shown above, the
tree
must be set before the model and / or roots.- model
ResourceTreeModel model := ResourceTreeModelImpl.<ctor>()
The model that customises the look of the tree. Leave as is for default behaviour.
You should call
refreshAll
after setting a new model.- onAction
EventListeners onAction()
Callback when a node is double clicked or Return/Enter key is pressed.
Event id fired:
EventId.modified
Event fields:
Event.data
: theResource
actioned
- onPopup
EventListeners onPopup()
Callback when user invokes a right click popup action. If the callback wishes to display a popup, then set the
Event.popup
field with menu to open. If multiple callbacks are installed, the first one to return a nonnull popup consumes the event.To show a menu created from the
Resource
, add the following:tree.onPopup.add |Event event| { event.popup = (event.data as Resource)?.populatePopup(Menu()) }
Event id fired:
EventId.popup
Event fields:
Event.data
: theResource
selected, ornull
if this is a background popup.Event.pos
: the mouse position of the popup.
- onSelect
EventListeners onSelect()
Callback when selected nodes change.
Event id fired:
EventId.select
Event fields:
Event.data
: theResource
selected
- refreshAll
Void refreshAll()
Update the entire tree's contents from the model.
- refreshResource
Void refreshResource(Resource resource)
Updates the specified resource in the model before showing it.
- refreshResourceUri
Void refreshResourceUri(Uri resourceUri)
Updates the specified resource in the model before showing it.
- resourceAt
Resource? resourceAt(Point pos)
Return the
Resource
at the specified coordinate relative to this widget. Returnnull
if there is noResource
at given coordinate.- roots
Resource[] roots := Resource#.emptyList
The root resources of the tree.
You should call
refreshAll
after setting new roots.- selected
Resource[] selected
Get and set the selected nodes.
Convenience for
tree.selected()
- setExpanded
Void setExpanded(Resource resource, Bool expanded)
Set the expanded state for this
Resource
.- showResource
Void showResource(Resource resource)
Scrolls and expands the tree until the
Resource
is visible. This also selects the resource in the tree.- showResourceUri
Void showResourceUri(Uri resourceUri)
Scrolls and expands the tree until the
Resource
is visible. This also selects the resource in the tree.- tree
Tree tree
The underlying FWT Tree widget.