As described in #64, the TreeView was initialized on launched, but never updated after that so it quickly became stale. This change makes the TreeView update dynamically so that it is always up to date (within a few seconds). This also addresses adds lazy-loading of children elements when the user expands tree view items, this allows for arbitrary tree depth with low initial performance cost (it performs well for elements with a small number of children, for a large number of children it does become noticeable to the user, but is still a better option in my opinion).
As described in #64, the TreeView was initialized on launched, but never updated after that so it quickly became stale. This change makes the TreeView update dynamically so that it is always up to date (within a few seconds). This also addresses adds lazy-loading of children elements when the user expands tree view items, this allows for arbitrary tree depth with low initial performance cost (it performs well for elements with a small number of children, for a large number of children it does become noticeable to the user, but is still a better option in my opinion).