Home | SourceForge.net | OpenSwing | More documentation

Overall features

JallInOne is a rich internet application that provides ERP functionalities for SMEs (Small and Midsize Enterprises). This solution includes robust functionalities allowing for the management of inventory (including up to 5 variants/subvariants, barcode support, prices at variants level), sales and financials, POS, procurement, warehouse, orders tracking, cal- outs and activities, manufacturing, documents management, reports.

Basic CRM (Customer Relationship Management) is built in as well.



The correct management of the master data (companies, languages, currencies, measure units, products and components, bills of materials, customers, vendors, etc.) is a fundamental aspect for guaranteeing the coherence and tracking of the organization processes.

Primary objectives targeted by JAllInOne are: (i) avoiding duplications by maintaining exclusive coding, (ii) sharing the relevant information among all areas of the organization, (iii) facilitating the rapid and easy flow of information between all areas implicated in the different company processes. This is achivied also by means of an accurate database design and strong code reusage in several application areas.

JAllInOne may be easily configured to meet the needs of business: e.g. companies and companies visibilities, supported languages, currencies and conversion factors, measure units and conversion factors, users and roles and features visibility, data access and visibility, forms and reports customization.

To enhance flexibility to adapt to the specific organization particularities, a rule engine is available to customize business logic and application behaviour: this allows to extend JAllInOne functionalities by adding custom code, that will be independent (does not conflict) from future releases of JAllInOne.

Moreover, JAllInOne is released on LGPL licence: since it is open source, you get it without the need to pay for licenses; you are free to decide how much are you going to invest for its adaptation without the hassle of exclusivity contracts or licenses and you can benefit of any future releases and improvements to the product.


UI usage

JAllInOne front-end is built above OpenSwing GUI layer: this one provides a powerful layer including support for MDI (Multi document interface), grids, detail forms, events management, data extraction, authentication and authorizations management, internationalization settings (language, data format, etc).

The rest of this chapter will describe these topics in detail.


MDI environment

Graphical computer applications with a Multiple Document Interface (MDI) are those whose windows reside under a single parent window, as opposed to all windows being separate from each other (single document interface). This involves the availability of a unique environment that contains all application features.

JAllInOne MDI environment provides a menu bar and a tree menu that contain the same set of functionalities: they are organized in a hierarchical way and can be accessed through the mouse onto the tree menu or by using ALT+some key combination by using the keyboard. Also a functionality search field is provided above the tree menu: this feature simplify functionality search.



On the bottom of the frame there are two bars: one bar lists the last opened windows and allows to swith from one opened window to another by simply click with the mouse on the related button onto the bar; user can also drag ‘n' drop data from a window to another by moving the mouse over a button onto this bar to swith between two windows.

The last bar shows some UI widgets:

  • a progress bar that alerts when data is transmitted between client and server
  • username currently logged on the application.
  • a clock



Grids include support for pagination, data filtering and sorting. User can quickly apply a sorting condition to a column by clicking on the column header: it is a three-state button (no sort, sort with ascending versus, sort with descending versus).

User can quickly apply a filtering condition on a column by right clicking with the mouse on a grid cell: it can apply a filtering condition for each column; filtering criteria are: “equals”, “contains”, “starts with” and “ends with”.



User can directly insert/edit/delete rows on grid. Many data format are supported for grid columns: text, number, date, currency, check-box, combo-box, images, lookups (see below). All these formats are fully supported both when rendering data and when editing data on grid.


Detail forms

Detail forms are panels that include advanced graphics input controls: text control, multi-line text control, number control (both for decimal and non decimal numbers), date control, image control, check-box control, combo-box control, lookup control (see below), buttons. All these input controls are globally managed in the same way: a detail form supports an insert mode, an edit mode and a read only mode, as for a grid.

Both a grid and a detail form can be linked to a set of buttons (aka a toolbar) to easily manage their behaviour: insert button, edit button, save button, undo/reload button, delete button; there exist also shortcuts for each of these buttons: CTRL+I to switch to insert mode, CTRL+E to switch to edit mode, CTRL+Z to undo/reload data, CTRL+S to save data, CTRL+D to delete data.


Data extraction

OpenSwing framework provides a feature to automatically export grid content; JAllInOne provides an “export” botton linked to grids to export grid content; supported export formats are: XLS, CSV, HTML, XML, RTF, PDF.



Both grids and detail forms support the lookup component: it is composed of an input text field and a lookup button. The text field content is validated when losting focus on it; it can be useful to quickly validate codes (e.g. item codes, customer codes, etc). The lookup button is used to show a lookup window that can contain a grid or a tree or a tree+grid. This is useful when a code must be selected by a list of codes, organized as a rows in grid or as tree nodes or as rows in grid, filtered by the selected tree node (e.g. item code selection in a tree+grid window, where tree shows item hierarchy and grid show items filtered by hierarchy level currently selected on the tree). Usually a lookup provides two buttons: the last one allows to open a managent window that allows to define new codes: this is useful when the desired code is not yet available and must be created before referring it.



Authentication and authorizations management

Authentication is required to access JAllInOne: username and password must be provided by the user.

JAllInOne allows to define a list of users. A user can be optionally mapped with an employee of the organization.

Toolbar buttons linked to grid or detail form are under the control of authorization management component of JAlInOne. That component is able to enable/disable toolbar buttons according to grants assigned to the user. Each user has a list of associated roles. A role represents a list of functionalities and for each combination role – functionality, a set of grants are linked: can show, can insert, can edit, can delete.

Moreover, JAllInOne supports data storage per company; it is possible to define many companies; there are functionalities that are independent from the company (e.g. vat, measure units, colors) and functionalities that requires company selection. So authorizations can be defined per company – role – functionalities or per role – functionalities.




Internationalization settings

JAllInOne has internationalization and localization support at several levels:

  • labels/titles/messages translation (currently english and italian languages are provided)
  • data format (dates, numbers, currencies)
  • data stored in the database, that can be saved according to the user language.

JAllInOne is written in java, so it supports Unicode standard (an industry standard designed to allow text and symbols from all of the writing systems of the world to be consistently represented and manipulated by computers), that can be used both on front-end translations and on data stored in the database (if the adopted database supports that character encoding).

User can change current used language by the specific menu item in the menu bar.

Each user has a default language associated to him.



JAllInOne provides more than 30 reports; those reports are generated by means of Jasper Report open source library. Jasper Report library is able to generate documents in PDF format (and in many other formats too). Those documents are showed inside JallInOne front-end as a preview and from that preview a user can save or print the document.

JAllInOne allows to customize reports provided with the application, through a customization functionality that prompts the user to upload a new .jasper file to use instead of the standard report template. In this way an organization can easily customize standard report templates, e.g. by adding an own logo.



There are several customizations offered by JAllInOne:

  • customization of existing report templates

    By means of this functionality it is possible to replace the standard report template (interpreted by Jasper Report) with a custom report template. An organization can create its own report template through iReport free designer, e.g. by creating a logo image at the top of the template. The only requirement is to mantains the same input arguments of the default report template. After creating a report template customization, it can be uploaded in JAllInOne through this functionality.

  • Rule engine, whose rules are defined in an XML file. Each time a business object of JAllInOne server-side layer is executed, this rule engine is invoked: if one or more rules match, then the related actions are executed; a programmer can extend JAllInOne business logic by including rules that invoke as action a custom java class.
    A rule is defined as <conditions, actions> where “conditions” can refer input arguments provided to the business object and its return value and “actions” can change the internal state of the return value; in this way it is possible to modify the business logic for each server-side functionality

  • dynamic definition of new functionality, showed in an editable grid; it is possible to define a new functionality by providing a SQL query from which define grid columns. For each column it is possible to define several info: visibility, type, default value.

    One or more table defined in the from clause can be used when saving data.

    In this way it is possible to create simple new functionalities, managed as any other functionality (i.e. it can be linked to roles) without developing any line of code.

  • dynamic definition of new fields in database tables, through a JAllInOne functionality

    These fields can be then mapped to columns in grid or with input controls in a detail form. This feature allows to extend grids and forms with data specific of the organization; the feature shows all application functionalities and allows to select one of them; after that there is an editable grid where an administrator can define a new database field, is field typeand other properties related to the selected type and finally the name of the field to show in the grid/Form. All these new fields are automatically showed in grid or detail the next time the client application is reloaded




OpenSwing graphics components include some shortcut that simplify data definition and manipulation.

These are some shortcuts a user can use to speed up his work:

  • Current date definition in a date control – press F1
  • Saving data – press CTRL+S
  • Cancel operation/Reload data – press CTRL+Z
  • Insert data – press CTRL+I
  • Edit data – press CTRL+E
  • Delete data – press CTRL+D
  • Open a lookup window – press F1
  • Close window – presso CTRL+F4
  • Select a row in grid – press ENTER button
  • Move cursor to the search field above the tree menu - press F3
  • Select a menu item in the tree menu – press CTRL+ENTER



Other information

To obtain detailed information about OpenSwing and generic features available in JAllInOne too, you can see OpenSwing official site:






<< Previous Chapter | Next Chapter >>