JDLG 1.4 Release Notes - 2009-02-11 (version 1.4.7) --------------------------------------------------------------------------- JDLG 1.4.0 was released in April 2008 and has evolved from the JDLG 1.3.2 beta releases. Version 1.4.0 is equivalent to the final 1.3.2 080226 1417 release. However, the 1.4.0 JAR file size differs from this 1.3.2 version because JDLG 1.4 is built in optimized mode, while JDLG 1.3.x was built in debug mode. JDLG 1.4.1 was released in July 2008. It was an intermediate version which was not publicly available because it did not contain any changes of common interest. JDLG 1.4.2, 1.4.3, 1.4.4, 1.4.5 and 1.4.6 were maintenance releases issued in September, October, November and December 2008. They contained new functionality and bug fixes. The current release is JDLG 1.4.7, released in February 2009. This is a maintenance release which contains bug fixes. Problems fixed in JDLG version 1.4.7: - JDLG could in some cases abort with a stack overflow exception if a dialog contains a huge number of objects. - The focus traversal speed was enhanced. This may be noticable if a dialog contains a huge number of objects. - As a performance optimization, the cursor shape of EditText objects is no longer changed to the busy cursor outside a DLG DO. This may have a noticable effect if a dialog contains a huge number of objects. Problems fixed in JDLG version 1.4.6: - A DLG NEW issued on an unknown object class or model could abort the current session with a NullPointerException. - If the focus is set to an object located in a scrollable GroupBox and the object is not visible at the current scroll position, the scroll position is adjusted so that the object becomes visible. Problems fixed in JDLG version 1.4.5: - JDLG could issue the Java exceptions below in different situations: java.lang.RuntimeException: Failed to resolve ... at com.eloquence.services.jdlg.ControlsManager.handleNew() java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.ArrayList.get() at com.eloquence.services.jdlg.controls.EListBox$TooltipHeader .getToolTipText() at javax.swing.ToolTipManager.initiateToolTip() - Adding a ListBoxHeader into a GroupBox now correctly results in an error #658. A ListBoxHeader may only be added to a ListBox. Previously, adding a ListBoxHeader into a GroupBox did not result in an error but later caused a Java exception like below: java.lang.ClassCastException: com.eloquence.services.jdlg.controls.EGroupBox cannot be cast to com.eloquence.services.jdlg.controls.EListBox at com.eloquence.services.jdlg.controls.ETableHeader.recalcWidth() New functionality added with JDLG version 1.4.4: - The ListBox.activecolumn attribute was added to return the zero-based index of the ListBox column which was clicked when a rule was issued or -1 if the rule was issued by a keyboard event (#3653). Problems fixed in JDLG version 1.4.4: - Putting an empty string into a ListBox column with ListBoxHeader.coltype set to 1 caused unexpected results when sorting this column. Problems fixed in JDLG version 1.4.3: - Maximizing a dialog could affect other dialogs even if they are not resizable (#3651). Windows platform note: A dialog which is initially opened in maximized state loses its original size on Windows. This means that when this dialog is restored afterwards its size will derive from the maximized size, not from the dialog's original size. It is currently investigated whether or not this behavior can be fixed so that the original size is not lost. - The ListBoxHeader.toolhelp functionality introduced with JDLG 1.4.2 did not work as expected. If a column was moved or hidden, the order of the displayed tooltips was wrong (#3652). New functionality added with JDLG version 1.4.2: - The ComboBox.boxheight attribute was added to specify the height (number of lines) of an opened ComboBox list (#3571). For example, DLG SET "ComboBox.boxheight",20 specifies that a maximum number of 20 lines should be visible in a ComboBox list. - The JDLG configuration has been enhanced so that Java properties and/or environment variables are resolved in any configuration variable (#2940). Windows example to configure an error log file in the current user's home directory: eloquence.config.errorlog = $(USERPROFILE)\jdlg_error.log Equivalent on Linux: eloquence.config.errorlog = $(HOME)/jdlg_error.log Please note that Java versions below 1.5 do not recognize environment variables. To use an environment variable with Java 1.4 a property must be set with the value of the environment variable to overcome this limitation. Windows example: java -DUSERPROFILE=%USERPROFILE% -jar jdlgS.jar Linux example: java -DHOME=$HOME -jar jdlgS.jar This passes the USERPROFILE (Windows) or HOME (Linux) environment variable to Java so that it can be used with JDLG on Java 1.4 as shown in the example above. Problems fixed in JDLG version 1.4.2: - Negative numerical values in a ListBox were not correctly sorted (#3615). This affected ListBox columns with ListBoxHeader.coltype set to 1. - The "folded" sorting of ListBox colum values (with ListBoxHeader.coltype set to 5) did not work as expected. - In a ListBox, the HOME, END, PAGE UP and PAGE DOWN keys modify the active line. However, these keys did not trigger a rule if the ListBox.singleclick attribute is set to 2 or 3 (#3071). - The ListBoxHeader.toolhelp attribute is now functional. If not set, the column title is displayed in a tool tip, which is useful in case the ListBox column is too narrow to display the full title text (#3652). - The eloquence.config.exitonlastsession configuration did not always work as expected (#3589). New functionality added with JDLG version 1.4.1: - The session configuration has been enhanced so that Java properties and/or environment variables are resolved in any session configuration value (#2940). For example: SESSIONNAME.login = $(USERNAME) This would set a session's "login" configuration to the value of the USERNAME environment variable. On Linux the LOGNAME environment variable would be used instead. Please note that Java versions below 1.5 do not recognize environment variables. To use an environment variable with Java 1.4 a property must be set with the value of the environment variable to overcome this limitation. Windows example: java -DUSERNAME=%USERNAME% -jar jdlgS.jar Linux example: java -DLOGNAME=$LOGNAME -jar jdlgS.jar This passes the USERNAME (Windows) or LOGNAME (Linux) environment variable to Java so that it can be used with JDLG on Java 1.4 as shown in the example above.