Hi!
First, I just wanted to say; thanks so much for releasing ATF open-source. I've been using it for about 6 months now, and it has been a huge benefit! It's become an important part of my project, so I wanted to drop a line.
Recently I've been integrating some existing code into the ATF framework. The existing code was a node diagram editor; so there is a little bit of overlap between the ATF circuit diagram editor. But I wanted to try to combine the best functionality from both ATF and our existing stuff.
And, actually, I've got to say I've been very happy with how easy it's been to selectively integrate parts of ATF and get it working with non-ATF controls and objects. I can see that there has been a lot of effort put into the design to make it flexible when working with different types, and to avoid pointing restrictions on client objects.
That's been great. I've been able to get our node editor working within an ATF application, and was able to seamlessly integrate ATF functionality for things like alignment controls, focus controls, hovering pop-ups and tree views -- all without changing the original code significantly.
There's a little bit of information about the project here:
You might be able to see from the screenshots that there's a lot of ATF functionality there, but also a lot of custom functionality. It all works very nicely together :).
But I hit a bit of snag with IColoringContext. At first it looks like it was going to be easy to integrate this with the default AnnotatingCommands object. However, I noticed that this object expects objects that the contents of ISelectionContext should implement IAnnotation. That seems to make sense, but actually IColoringContext doesn't use IAnnotation (it just uses plain "objects").
Our "node" objects are in a project that does not reference ATF, so can't implement IAnnotation. So I was wondering if this restriction in AnnotatingCommands was intended?
Cheers!