Current system is prone to slowdowns when switching to a tab with a lot of tree elements (like walls and objects/decorations) for the first time due to creating all the tree elements at once instead of lazily. It also mixes model and view (updaters need to hold reference to a view to figure out which element is currently active or if it changed, for example), and isn't very flexible as any feature like filtering/searching needs to be implemented in view.
Some implementation points:
Separate model and view for Unity lists and trees.
Possibly resign from concept of separate lists and trees altogether - list can be just a tree without any branches.
Allow view to accept different models (by attaching/detaching/reattaching them).
Make it possible for a view to dynamically change depending on model changes.
Introduce cache for views (so features like filtering or altering the data can be done without being too expensive).
Introduce (optional) lazy loading for tree leaves and branches.
Better generics support so values from trees don't need to be cast constantly across the codebase.
Current system is prone to slowdowns when switching to a tab with a lot of tree elements (like walls and objects/decorations) for the first time due to creating all the tree elements at once instead of lazily. It also mixes model and view (updaters need to hold reference to a view to figure out which element is currently active or if it changed, for example), and isn't very flexible as any feature like filtering/searching needs to be implemented in view.
Some implementation points: