Genero 2.20 – Cool features for hot apps

Irving, Texas – April 16, 2009 — Four J’s Development Tools Inc. announced today Genero 2.20 – an innovative development and deployment infrastructure for mission critical business applications. This much anticipated release unleashes many new features designed to make ‘best-of-breed’ domain-specific applications.

By enhancing the end-user experience as well as greatly improving the scalability, security and interoperability for ‘Web 2.0‘ developments, Genero 2.20 is a ‘must have’ for developers’ 2009 development schedules. A brand new Java Interface provides tighter integration with other applications especially within a Service Oriented Architecture (SOA) framework.

The User Interface

The TreeView container

TreeView is a Business Development Language (BDL) container enabling tree widget structures for the desktop (GDC) and web (GWC) clients. Tree views are implemented using the DISPLAY ARRAY instruction in combination with a form specification filethat is bound to a TREE container with specific attributes. Tree view containers are very similar to TABLE containers, except that the first columns are used to display a tree of nodes on the right of the widget:

PHANTOM fields

The PHANTOM keyword is a new type of form field. Phantom fields are used to define screen-records or screen-arrays, but are not used in the LAYOUT section of the form. Phantom fields are especially useful when implementing TREE containers.

An embedded browser

In the past, TextEdits were used to display html data, but they were unable to perform the function of a real bowser. With the styleAttribute

imageContainerType

‘image’ set to "browser", your image container becomes a browser. Instead of setting an image name, set a URL and embed a browser in the heart of the application.

Figure 8. Embedded access to Google® MapsN.B.
This feature uses the WebKit Open Source project and as such, is not under Four J’s direct control. This kit displays rich text and HTML extremely well, but may exhibit problems with ‘complex’ sites. Important limitations to note are a lack of browser ‘plug-in’ support for Flash, Java and Active X. Future versions will support these features.

New look ‘n’ feel styles

These new

"lookAndFeel"

style attributes allow you to set the style of any Genero Desktop Client application to ‘Vista’, ‘XP’, ‘.netOffice’, ‘Motif’ and many others at the drop of a hat. The default setting is that of the underlying platform being used.

Qualified Local Actions

The Genero Desktop Client may now create “qualified local actions” enabling developers to create ActionViews bound to a specific screen record.

What is a .Local Action.?

A “Local Action” is a mechanism within the Genero Desktop Client that enables or disables tasks that are bound to ActionViews such as toolbars, context menus, buttons etc. that are executed on the user.s workstation. They are .actions. that are .local. to the end-user, hence their name. These tasks can be for example: .copy., .cut., .paste. and so on. A simple action could be “go to the next row for current array” bound to a button labelled .next row..

Qualified Local Actions

In this release, Genero takes this concept one step further and introduces the notion of .qualified. local actions. That is, the ability to perform an action with a .qualifier.. Now the action bound to the button can more specific to a given context: “go to the next row for array Customers” or “go to the next row for arrayOrders“. The associated button may now be labelled .next customer” or .next order. and the action performed without the need to write a single line of BDL code, unlike prior releases.

INFIELD clause in ON ACTION interactive block

The ON ACTION interactive block has been extended with a new INFIELD field-name clause – useful in qualified local actions (see above) – to automatically enable/disable an action when entering/leaving a specified field.

Spell checking in TEXTEDITs

A spelling checker is now included in the TextEdit widget. Using the LGPL Hunspell spell checker found in Microsoft® Office and Mozilla; dictionaries may be downloaded for many different languages. Genero Desktop Client will underline unknown words, and a right click will provoke a ‘pop-up’ with a list of suggestions.

Figure 12. A ‘right click’ within the TEXTEDIT pops up the spell checker

The traditional (‘compatibility’) mode

There is still a requirement to use character based user interfaces within Genero – either because the end-user client device does not support graphics (as in the case of a cash till or airline reservation application) or because there is a need to quickly migrate a legacy application from Informix 4GL or Business Development Suite. Genero supports two mechanisms for these cases: a ‘console’ mode for use with ‘dumb’ terminals or ANSI 3.64 emulations and a traditional sometimes called ‘compatibility’ mode to get the same rendering as with the BDS/WTK front-end.

Console mode

Console mode is set on a per user basis with the environment variable FGLGUI=0. This mechanism is more familiarly known as the Text User Interface or TUI and was designed for “dumb” terminals.

Traditional mode

Traditional mode exhibits the same behaviour as the ‘WTK’ interface and is set with the FGLPROFILE entry:gui.uiMode = “traditional”

Other presentation style enhancements
Beyond the Picture Flow styles, other presentation styles have been extended:

BUTTON form items get a new “buttonType” attribute to define the rendering of the button.

MENUs created with the popup option can be placed with the “position” attribute.

TABLEs can use the new “tableType” attribute to render data in different ways (picture flow).

Front-End Call enhancements
Frond-End Functions have been extended:

New “getwindowid” function in the standard module to get the system window manager id of a window.

The “feinfo” function in the standard module has been extended to query the workstation system version, number of screens, and screen resolution.

New “launchurl” function in the standard module to open a given url (http, mailto…) with the default installed url handler (e.g. your default browser for http, default mailer for mailto…).

New contextMenu action default attribute
A new Action Defaults attribute named “contextMenu” has been added to allow you to specify whether the menu option is visible in the default context menu. The default value is “yes” – the option is visible whenever the action is visible.

New IMAGE attribute in form LAYOUT element
The LAYOUT element of a form definition can now use the IMAGE attribute to define the icon to be used for the parent Window. This is especially useful in a container-based application to distinguish child programs inside the container.

Programmatic Interface

The Java Interface

Import Java classes for instantiation from within Genero programs.

Purpose

The Java Interface opens access to an extensive catalog of free and commercial Java programs as well as providing a seamless mechanism to integrate within corporate networks and SOAs. Java methods can be called in line from Java objects referenced within BDL along side native BDL typed values such as INTEGER, DECIMAL, CHAR.

Private functions

One of the idiosyncrasies of the Informix® 4GL language is the global scope afforded to symbol and report names within functions. This results in developers using unique names and the creation of conventions such as pre-fixing a function name by a module name. The introduction of thePRIVATE keyword in this release removes this limitation by granting local scope to symbol names within the function containing the declaration.

Other enhancements

Automatic source documentation generator

The fglcomp compiler has been extended with a new --build-doc option for generating BDL source documentation.

MAN pages for BDL (FGL) commands

On UNIX platforms, you can now use man pages for BDL (FGL) tools like fglcomp and fglform:

$ man fglcomp

Note that on some platforms, you must set the MANPATH environment variable to $FGLDIR/man.

Adding a timestamp to 42m modules

fglcomp has a new option (fglcomp --timestamp) to write the compilation timestamp to the generated 42m p-code module. If present, fglrun -b returns the timestamp. Use compilation timestamps only if really needed; every new compiled .42m module will be different, even if the source code has not changed.

Disabling Front-End protocol compression

Front-End protocol compression can now be disabled with a new FGLPROFILE entry. This is especially useful in fast networks to save processor time.

gui.protocol.format = "block"

New environment variable for program resource files

To work around conflicts with the Informix database path specification in DBPATH, you can now use the FGLRESOURCEPATH environment variable to specify search paths for program resource files like forms.

New built-in functions to handle text selection

New built-in functions are now available to control the part of the text that is selected in the current field:

fgl_dialog_getselectionend()

fgl_dialog_setselection()

Database user authentication callback function

When using the DATABASE instruction, it is now possible to define an FGLPROFILE entry specifying a callback function, which returns a username and password to be used for the database connection.

Getting the current active dialog

A new class method is now available to get the current active dialog: ui.Dialog.getCurrent().

SAX Document Handler specification in START REPORT

The START REPORT instruction now supports a new clause to specify the XML SAX Document Handler to process XML output with the TO XML HANDLER syntax.

If you have vim 7 installed, you can now use .per and .4gl code completion within your preferred editor.

Report definition file generation

Use the --build-rdd option to generate a report definition file (.rdd)

Improved FGLSQLDEBUG output

When setting the FGLSQLDEBUG environment variable with this release, the SQL command header, the command name and the current BDL source line executed BEFORE entering the ODI driver are all displayed. If the driver code crashes or stops the process with an assertion, it is now easy to identify the last executed SQL instruction. Prior to this release, SQL debug output would only be displayed if the ODI driver code was executable without a fatal crash. Additionally, ODI driver specific debug messages are now displayed AFTER the SQL command header to make the debug output more readable.

This architecture is based on a core reusable component, the GAS Engine, that is encapsulated to fit the different targeted servers - IIS or CGI-based Web servers. The GAS Connector is a pluggable component, available for each targeted application server. Interaction between the core GAS Engine and the different GAS Connectors is centralized in two interfaces:

the GAS Container Interface - informs the GAS Connector of a computed response for a given pending HTTP request

The connector adapts the 'external world's' model to the 'GAS model', so respecting the current GAS events-driven architecture. Genero Application Server is instantiated depending upon the receiving environment

Genero Desktop Client HTTP connection management

Web application management

Treeview support and other UI improvements described in the section on User Interface

A new XUL Snippet Set

The new XUL snippet set offers a desktop-like rendering. This snippet activates when used with a Prism user agent. You can also activate XUL snippets in any Firefox browser using the DUA_XUL output map.

Figure 15. The XUL snippet offers a desktop rendering within a browser

A new frontcall framework allowing to support all BDL frontcalls or implement your own set.

SVG and SWF (flash) support for image widget

PDA and PAGE Snippet sets are merge in a new single BASIC snippet sets

Four J's License Manager 5.10.3u

License Manager provides a network management solution for all types and versions of Genero licenses. By centralizing license management across a network in this way, updates are simplified, usage is mutualised ensuring that every available license is accessible to all users.

With this release, License Manager requires an additional maintenance key, which controls whether the license is under maintenance or not. In order to run Genero 2.20, License Manager 5.10.3j or greater must be installed. Learn more.

® iTunes is a registered trademark of Apple Inc.
Google is a registered trademark of Google Inc.
Informix is a registered trademark of International Business Machines Corp.
Java is a trademark of Sun Microsystems Inc