We at Soph-Ware Associates would like to announce the first release of the Flex UndoRedo Framework. The Flex UndoRedo Framework builds on Cairngorm to provide a lightweight but extensible framework for handling undo and redo.
The Flex UndoRedo Framework was built with the following goals in mind:
- Integrate cleanly and transparently with Cairngorm
- Provide a robust, extensible framework that would work without modification for basic needs
- Support for different groups of undo events (one group per flexMdi window for example)
- Allow undo and redo of an unlimited number of events
The Flex UndoRedo Framework is an OpenSource project available for all to use, for more information see the following links:
As we have now been through a few iterations with the undo framework, we believe that it provides a solid 1.0 release. If you have thoughts or suggestions, we would love to hear about them.
I’m still fairly new to Flex, so I’m especially interested in language features that I could have leveraged and better ways that I could have handled certain things.
Finally, I like to thank the Soph-Ware Associates, Inc. for letting me open source this, the Adobe Flex team, the great Flex community and my co-worker Aaron Leavitt for the help in making this possible.
Wow, nice work Kaleb!
I tried the CairnCalc on this site and performed a “1+2-3*4/5″ calculation and it seems that there is a little problem at the “-3″ command. Maybe it is the calculator, maybe the framework?
Anyways, thanks for opening this up to the community!
= Dirk
Thanks Dirk!
As far as I can tell, it works correctly, although if there were an error, it would be in the calculator’s command classes rather than the undo framework. The calculator is built with support for operator precedence, so it’s calculated as follows:
(1+2)-((3*4)/5) = 3 – (12/5) = 3 – 2.4 = 0.6
Aaron and I actually discussed whether the precedence support was expected or not, and all we could come up with was “it depends.”
If you try out the UndoRedo Framework, please let us know how it goes!
Thanks.
–Kaleb
We were considering using this library in our project but is there a reason you chose to release under the GPL which is not very friendly for a commercial project? Would you consider changing the license to a more commercial friendly license such as MIT or Apache as described in this article: http://www.gskinner.com/blog/archives/2008/07/source_code_lic_1.html
Thanks,
Todd
Thanks for the asking Todd. I’ve forwarded your request asking for consideration of BSD, MIT, and Apache licenses. I hope to have other news soon as well.
Thanks.
–Kaleb
Hi Kaleb, any news on that License change? We need that exact functionality but we cant use it because of the GPL licence. Thanks
Hi Kaleb, we are still waiting for the answer on the licenses change. Since we are getting close to a first internal release, we would like to know if we need to change API or cerate one ourself, which frankly, we do not have the time to do.
BTW, your API woks great, we had it up and running in no time. Grate coding and a good implementation to a common functionality. Good work.
Again, sorry for pushing the licensing issue. Thanks.
For those who asked, we have re-licensed the project under the Apache License. The project home page has been updated and Subversion contains the latest re-licensed source. We’ll make a more formal announcement which will include an updated binary (swc).
Thank you for your interest.
–Kaleb
Thanks a lot for the license change Kaleb.
Hi, thanks for interesting article and framework. Is there any document which describe a little bit more how to work with this Undo/redo framework?
I know there is API but does it exist also more general “How to work with” documentation?
Thanks a lot,
//pyso
Hi,
I want to add undo/redo support for my app and i before I found your framework would be really suitable for this task.
I think it would be really helpful to provide the source code of the example application, or as pyso said, a tutorial of how to use it.
Thanks.
I would like to clearly know how to use this undo-redo framework. By the way this framework works nice so far i saw.
Incoming Links
Trackback this post | Subscribe to the comments via RSS Feed