Hierarchy Tree Customization

I wouldn't worry about depth just yet, and I'm not sure if expanded is needed. It could be handy if you want the window to remember and load the same way it was when it was closed. Parent could be needed by your button script, but probably won't need to be bound to anything, and position would probably only be needed if you want the ability to reorder things.

In any case, I have to break away and get some things done. Here's a guide to how I would go about this:
Step 1: Finish building the template, from your picture it looks like your missing the image that would be needed to match your example
Step 2: Throw a repeater in a window somewhere, and set the template path and template behavior properties
Step 3: Create mock template parameters dataset with several rows that causes templates to appear.
Step 4: Work on the template's custom parameters to get appropriate icons to appear and to get asset names to appear
Step 5: Develop a query to get the relevant asset information, and bind it to a custom dataset property
Step 6: Create an initialization script or query that pulls in all root level data into the template parameters and sets all the root level "+/-" buttons to start out with a "+" Symbol
Step 7: Create a script on the "+/-" button uses the asset name and parent properties from the template parameters to remove or add rows to the template parameter dataset (effectively expanding or collapsing hierarchies
Step 8: Figure out how to do the hierarchical spacing. A transform script that multiplies the zero indexed depth parameter by some arbitrary width would probably be simple enough. I remember from one of your previous questions that you are quite proficient with transforms, but there are other options as well.

Good luck, and I'll check back in on this at the other end of this day to see what you were able to accomplish.