I was just surfing around trying to identify some phantom property sheets that seem to have attached themselves to my Visual Studio projects, when I ran across this post from Peter Huene. It’s the best description of this property sheet inheritance functionality that I’ve seen so far.
I’m gratified to see that they had some trouble figuring out how to graphically represent this:
This is where the view can get slightly confusing (we toyed with several different representations early on in Whidbey). Where as the configuration nodes are “contained” by their parent project nodes, the configuration nodes inherit from their child nodes (likewise for each property sheet node). Projects have no relation, property-wise, to configurations in our build system, so the project nodes simply act as a method of grouping configurations together.
At Positive Newtorks, we have a remarkably flexible configuration system called the Policy Manager (catch naame, eh?) that has been dealing with this exact problem since 2001. After a lot of early gnashing of teeth over the GUI, we settled out on something similar to this. I remember thinking at the time that there had to be a better way to organize the information, but nothing any better came up during design discussions, so we went with the tree.
Now, I’d hesitate to hold out the VS 2005 UI as the paragon of interface design, but I know they spend a lot of time on this sort of thing at Microsoft, so I’m intrigued to see that they came up with the same solution. And, on the flip side, I know how hard this design problem can be – the level of flexibility they’re trying to provide here is very difficult to represent visually.