The next release of Metawidget will be significant enough to justify a major version number bump (to 3.0). I'm excited to announce it will introduce a whole new platform to the product!
Metawidget already supports desktop (Swing, SWT), mobile (Android) and server-side Web technologies (GWT, JSF, JSP, Spring, Struts, Vaadin). But for the first time, version 3.0 will support fully client-side Web Metawidgets, with initial support for either pure JavaScript, JQuery UI and/or AngularJS.
Each JavaScript implementation will support the same five stage pipeline as the existing Metawidgets. This architecture is the result of years of developer interviews, case studies and adoption studies and has been well received. It has been adopted by companies such as Telefonica and Red Hat. It was also recently nominated for Australasian PhD of the Year.
Download The Example
For those interested in trying it out, your thoughts and feedback would be most appreciated! To get you started, I've packaged up a complete AngularJS Address Book, including end-to-end tests:
To download the example application, download the examples package for Metawidget 3.0 or above. The example is under examples/js/angular/addressbook. Run it the same way you ran the AngularJS tutorial (e.g. NodeJS, Tomcat, etc).
Welcome New Communities!
For those new to Metawidget, it's a smart User Interface widget that populates itself, either statically or at runtime, with UI components to match the properties of your business objects. Metawidget does this without introducing new technologies. It inspects your existing back-end architecture, and creates widgets native to your existing front-end framework.
For example, much of the application above is built automatically by the following HTML:
<metawidget ng-model="current" read-only="readOnly" config="metawidgetConfig.form">
...
<facet name="footer">
<metawidget ng-model="crudActions" config="metawidgetConfig.buttons"></metawidget>
</facet>
</metawidget>
Metawidget inspects the given ng-model for JSON properties and other metadata, and constructs the User Interface dynamically through a highly pluggable process.
For a complete step-by-step guide, see the tutorial here.
Look forward to hearing what you think!