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: