Addendum to my last comment: deleting the owning object does close the figure; closing the figure window clears (don't know if that's the right word) the object, but the variable it was assigned to still exists. That's OK, but it could be confusing.
This is a wonderful idea! I will be using this approach for a database browser. However, the linking between figure and object doesn't work. Closing the figure does NOT delete the object, and deleting the object does NOT delete the figure. I tried some variations of your ideas - and the basic approach seems sensible - but something is preventing this to work. Is it the Matlab event handling?
I had high hopes after reading the reviews, but... "There should be a single field in the main structure" - why? But worse: for an array of struct the call "isstruct(s.(curfield)" crashes because the return value ia an array!