hcOPF is Released!
Thursday, June 25th, 2009I have been working towards this for a long time now. Initially I was undecided what license to use, then it was a matter of wanting to complete some code improvements. Finally I just decided it was never going to be perfect, especially since I don’t have that much time to work on it at present, so I finally kicked it out of the door.
The framework certainly works. I have numerous applications and success stories that testify to that. It does however have some holes. The biggest of which is Unit Test coverage. I started writing the framework long before Agile methodology became the rage, and although I see the value of writing tests first, it’s a little harder to write them afterwards. It’s also very challenging to write tests for GUI elements.
I am also in the process of changing the way the framework deals with Object IDs aka primary keys. Initially I used an Attribute property to specify if a column was involved in the primary key (apPrimaryKey). I later introduced the concept of a ThcOID class to encapsulate primary key handling in order to better facilitate keys consisting of multiple attributes, natural keys, and keys made up of non-integer data types. Currently you have to use both methods for the framework to function correctly since the conversion to ThcOID is not complete.
The design-time aspects of the framework have also undergone an evolution and are no longer complete. I used to only support Attribute/UI Control Name/UI Control Property Name elements in the UIObjectBinder and used RTTI to set and get the values from the UI Control. Then I introduced the MGM pattern, providing a much more flexible framework capable of supporting almost any non data-aware control. If you use a ThcMediator descendant with the ObjectBinder, you must establish the bindings in code. The same applies to design-time functionality for the DevXGrid. All column bindings for a view must be created in code. I typically use a previously written method as a template for a new one. At some point I would like to have design-time support implemented, or at the very least have some sort of wizard to generate the code.
The project is hosted on SourceForge at http://sourceforge.net/projects/larryhengensopf/. If you have any issues with the framework, pop me an email.