CUF (Client Utilities & Framework) contains
- utility libraries (this is the "U" part) and an
- application-level framework (the "F" part)
It is build to provide
help for details (the libraries part) as
and structure (the framework part)
Using CUF, a developer can build a Java/Swing or a .NET/WinForms application more easily.
This is especially true if the application is build in a business environment with a focus on forms based data manipulation ("SCRUD": search, create, read, update, delete) .
All libraries of CUF are independent of each other, and most of them are available both for .NET/WinForms as well as for Java/Swing.
- callback handling
A handling of Swing Callbacks, that is much easier than the typical addABCListener() interface, and more like the delegate concept of C#/.NET
- sorting table (Java
A small but smart JTable extension.
- state management (Java+.NET CUF)
Using the state management it is easy to manage state and act upon state changes.
A typical use case for the state managment is for example "this textfield is visible, if the user has the role manager and it is friday" or "the save button is only activ, if the data was changed and if the date is valid".
Instead of hand-coding the rules, with the state mangment library, a declarative MVC based approach is taken.
- data binding
A binding of model data or data of transport objects to either Swing models or WinForms classes. It is based on the ValueModel concept of Smalltalk.
- server access
A technology agnostic library to access the core part of the application (perhaps on a server) in a synchronous or asynchronous way.
- non-visual builder
The static part of the UI as well as the callback handling, data binding and state management can be described in a XML file (like XAML/XUL)
Build around a logical definiton of what a dialog and an application is, the CUF framework structures an application so that a team of developers can build coherent code.
CUF was build on the ideas of a lot of people at sd&m and elsewhere.
Many thanks to: Hendrik Wördehoff, Michael Brade, Jörg Eichhorn, Joachim Wenzel, Burkhard Perkens-Golomb, Martin Haft, Thomas Wolf, Johannes Siedersleben, Johannes Weigend, Bernd Olleck and Karsten Letzsch.
Special thanks to Carsten Lucke for the web design.