OpenSwing is an open-source suite of advanced graphics components based on Swing toolkit: these components are more sophisticated of those provided with Swing and can be manipulated directly inside the UI designer of the IDE.
It is also a framework that provides data binding mechanism between components and data model, based on the MVC paradigm. Data model is based on Java Beans (POJOs) and it is supported in all OpenSwing components, such as grid control, tree control or generic controls container.
OpenSwing provides a complete solution (a framework and advanced swing components with data binding capabilities) to quickly and easily develop rich-client applications.
It is possibile to apply this framework to develop java Desktop Applications or Rich Internet Applications (three tiered applications based on Swing front-end + HTTP + java servlet + database) or Distributed Applications (three tiered applications based on Swing front-end + RMI + java session bean stateless + database).
OpenSwing includes a collection of classes that can be used:
* to create the application front-end, through a collection of advanced graphics controls, comparable to those provided by traditional RAD development environments like Visual Basic or Delphi.
Graphics controls include more than 30 widgets: label control, multi-line label control, text field, text formatted field, multi-line text field, numeric field, currency field, calendar, grid, nested grids, grid with nested generic components, properties grid, pivot table, tree, check-box tree, tree combined with a grid, lookup, multi code lookup, lookups with auto-completition, gantt diagram, buttons with image, combo-box, combo-box multi-column, radio button, check-box, list, check-box list, list multi-column, wizard panel, image panel, splash screen, dialog windows, tip of the day frame, progress bar/panel/dialog, licence agreement panel, alert window, iconifable window, "outlook like" panes, link button.
Grid usage is especially sophisticated: it allows columns or rows locking, data pagination, columns filtering and sorting, persistent storage of grid "state" (sorting/filtering conditions, columns position/width/visibility), permissions at column level (editability/visibility/mandatory state defined at column level), data import/export and the grid model is based on a list of POJOs as for a tree component and as for a panel of graphics controls whose data model is based on a POJO. POJO support is extended to the entire set of graphical components that compose the GUI.
Graphics controls are compliance with Java Beans specifications, so they can be used in the UI designer of an IDE, such as JBuilder, JDeveloper, NetBeans, Eclipse in order to create windows by drawing components on them using UI designer, likewise with other non java RAD environment.
Building grids is expecially easy: a grid can be graphically composed by using the UI designer of the adopted IDE and by dropping on it the grid's columns and setting their properties by using the property manager of the IDE.
* The framework allows to create applications based on SDI (Single Document Interface) paradigm or based on MDI frame (Multiple Document Interface) and internal frames, including pull-down menu, tree menu and many front-end customization levels.
* to create business logic tier + data-access tier, through a set of utility classes that simplify development process; this utility layer may be omitted and replaced by other popular server-side frameworks/ORM tools, like Spring, Hibernate, iBatis, Apache Cayenne, JPA/TopLink Essentials or any other proprietary framework.
OpenSwing provides some utility classes that simplify Hibernate integration with OpenSwing, iBatis integration with OpenSwing, Apache Cayenne integration with OpenSwing and comunication between OpenSwing and Spring Framework, so that you can develop UI layer using OpenSwing and develop server-side layer using Spring and/or Hibernate or iBatis.
OpenSwing provides some utility classes that simplify JPA integration with OpenSwing, , so that you can develop UI layer using OpenSwing and develop server-side layer using Java Persistence API with J2SE or J2EE (for instance using TopLink Essentials ref. implementation or Hibernate Entity Manager).
* to create a comunication tier placed between presentation-tier (application front-end) and business-logic tier. This tier may be easly extended, by developing an own comunication layer above the standard layer offered by OpenSwing, to meet specific needs (such as RMI comunication with EJB, SOAP or other comunication mechanisms with server-side applications).
This layer supports Hessian serialization library too, so it is possible to combine a client side application running with a specific version of java with its server-side running with another version of java.
Moreover, this framework provides some basic features that cover many issues that usually arise in enterprise application development, such as data extraction from grids and data import to grids, document viewing on the most popular desktop applications (like reports on Excel, CSV, XML, HTML, PDF, RTF), activities logging, internationalization support (label translation, date format, decimal symbols, grouping, currency support, etc.), authorization management according to grants owned by connected user.
All these framework components are strongly decoupled each other, by means of an accurate objects design, based on interface adoption that facilitate the implementation of new behaviours for base framework components.
Changelog for this release:
Added "setColumnDynamicSettings" method to LookupController class, in order to format numeric values.
Improved QueryUtil class, by providing:
- other "insertTable" methods, where it is possible to specify fields to insert without extracting values from the value object.
- another "updateTable" method, where it is possible to specify fields to update and not compare.
Improved GridControl component, by adding some utility methods:
- "collapseAllRows", to collapse all expanded rows, in case of grid having nested components.
- "addRowSelectionInterval" to select additional rows
- "removeRowSelectionInterval" to deselect rows
- "clearSelection" to remove all rows selection
Changed attribute name selector in UI designer, in order to include Character type attribute too.
Fixed translation in PolishOnlyResourceFactory class.
Fixed problem in TextFormattedControl when using MaskFormatter.setValueContainsLiteralCharacters(false);
Fixed problem with expandable grids, when using a combobox column as expandable column.