Document revision: 2017-11-30
Refers to JDLG version: 1.7.7
- JDLG 1.7 was released in July 2015.
- JDLG 1.6 was released in January 2013.
- JDLG 1.5 was released in July 2009.
Note: New JDLG versions are first released to the
beta download directory to encourage
public testing of new functionality.
Changes in JDLG beta version
1.7.7 171128 1644:
- Changed the reference
point behavior if the first Dialog a program displays
Previously, if the first Dialog a program displays is centered, the
reference point was set to this Dialog's x/y position. As a consequence,
following Dialogs which are not centered were displayed relative to
the first Dialog's position. For example, a Dialog opened afterwards
at position 0/0 was displayed at the 0/0 position of the centered
However, if a program wants to use the reference point to affect the
first Dialog's centered position, this did not work.
For this reason, the behavior was changed. If the first Dialog is
centered, the reference point is no longer modified, but the reference
point adjusts the Dialog's x/y position. As a consequence, following
Dialogs which are not centered are displayed at their x/y position.
For example, a Dialog opened afterwards at position 0/0 is now displayed
at the 0/0 screen position adjusted by the reference point.
Please send your feedback to the
if this change does not work with your application.
Thank you very much.
- Using the
attribute with values using HTML content did not work.
- Setting the
attribute could cause an unexpected column width if HTML content is used.
Changes in JDLG beta version 1.7.7 171023 1553 (superseded):
- Fixed setting GroupBox.vx
and vy attributes did not
work as expected under certain conditions.
Changes in JDLG beta version 1.7.7 171012 1221 (superseded):
- Fixed a regression introduced with the previous JDLG beta version
1.7.7 171011 1527 where attributes of GroupBox child objects were
no longer updated as expected.
Changes in JDLG beta version 1.7.7 171011 1527 (superseded):
- New GroupBox attributes:
vy to get/set the scroll bar
position of scrollable GroupBox objects.
- Tree: If no background color is set, a Tree
could initially display a white background which disappeared when the
Tree gets focued for the first time. This was a side effect of fix #4237
in JDLG version 1.7.6.
- ComboBox: Fixed a Java 9 compatibility
issue where ComboBox objects were not displayed as expected.
Changes in JDLG beta version 1.7.7 170922 1400 (superseded):
- Fixed a Java 9 compatibility issue.
On Java 9, JDLG versions 1.7.5 and 1.7.6 fail to start or expose
unexpected behavior. An error message like below was logged:
class com.eloquence.services.jdlg.controls.ESystem$TypeAheadManager ...
cannot access class sun.java2d.SunGraphicsEnvironment (in module java.desktop)
because module java.desktop does not export sun.java2d to unnamed module ...
If you encounter further Java 9 compatibility issues, please
send your feedback to the
Thank you very much.
- Note: To use the JDLG drag &
drop functionality with Java 9, access to the javax.swing and
javax.swing.plaf.basic Java packages must be allowed.
If you start JDLG using Java Webstart (JNLP),
add the java-vm-args attribute to the <j2se ...>
tag, as shown below:
java-vm-args="--add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED" />
If you start JDLG using a Java command line,
the --add-opens options above must be specified at the beginning
of your command line. As a shortcut, you could specify the
--permit-illegal-access option instead, as shown below:
java --permit-illegal-access -jar jdlgS.jar
Changes in JDLG version
Changes in JDLG version 1.7.5 (superseded):
- New functionality: Drag & drop
- Fixed a problem which could cause a Dialog
to stop responding for 10 seconds when holding down the TAB or ENTER
key to quickly move forward the focus.
This was caused by an internal race condition in the
- Fixed a problem where under certain conditions previous
Dialog contents were visible although
new contents were set (#4236).
This could happen if the Dialog is
updated while invisible, and after that is made visible.
- Fixed a problem where in some cases Dialogs
were only partially displayed when JDLG is used in a Windows Remote
Desktop session where the user disconnects and then reconnects the
An error message like below was logged:
Exception in thread "AWT-EventQueue-2"
java.lang.NullPointerException at com.sun.java.swing.plaf.windows.WindowsTableHeaderUI$XPDefaultRenderer.paint
Disconnecting and reconnecting a Windows Remote Desktop session may under
certain conditions invalidate current renderer objects which JDLG wrongly
continued to use.
EditText: Under certain conditions it
could happen that the content was not left aligned.
- ListBox: In some cases setting the
cy attribute was ignored if the
focus attribute is set
- ListBox: DLG GET
vline could return wrong
results if invoked after the ListBox
content is modified but before the next DLG DO or DLG DRAW
PopText: Fixed a problem where the
was not derived from a model (#4227).
Tree: When selected
ListBox or Tree
entries are copied to the clipboard (Ctrl-C) any HTML tags are now
trimmed so that just the plain text is copied.
- New Tree attribute:
- Tree: Setting the
sensitive attribute to zero
had no effect.
This problem was introduced with JDLG version 1.7.4.
- Tree: The display of entries using HTML
content was sometimes truncated or otherwise incorrect (#4237).
- Tree: DLG SET
useicons no longer has the
side effect that all nodes in the Tree are collapsed (closed).
- Function keys: If the focused object has the
help rule (-1) and a function
key is pressed, the help system was unexpectedly invoked.
- New configuration property:
Changes in JDLG version 1.7.4 (superseded):
Changes in JDLG version 1.7.3 (superseded):
- Fixed an internal race condition causing the focus not being
set as expected in some cases.
- Fixed a regression where the Java system look-and-feel could
not be installed.
Changes in JDLG version 1.7.2 (superseded):
Changes in JDLG version 1.7.1 (superseded):
- EditText: Fixed a problem where the new autotab, linewrap and wrapmode
attributes were not derived from a model.
- The Java code signing certificate has been renewed.
Previous JDLG versions were code-signed with a certificate which
expired on October 22, 2015.
The certificate validity, i.e., whether or not a certificate has
expired or has been revoked by a certification authority, should
be irrelevant because each JDLG version includes a trusted RFC 3161
time stamp, indicating when the particlar JDLG version was created.
As observed, this might not work as expected under all circumstances.
It appears that since the certificate has expired Java Webstart might
under certain conditions refuse to execute a previous JDLG version,
despite that JDLG is correctly time stamped.
JDLG version 1.7.1 should solve any issues observed in this context.
The new certificate expires on October 22, 2020.
- Please note if you use the JDLG example plugins:
The updated jdlg-plugin-examples-151029.zip has been released
where all included JAR files are code-signed with the renewed
Any previous versions of the JDLG example plugin JAR files might
no longer work after updating to JDLG 1.7.1.
Changes in JDLG version 1.7.0 (superseded):
- A new layout implementation improves display performance and
solves Dialog appearance problems observed with previous JDLG
- The object position and size may be specified in
- The Dialog scaling functionality now covers Image objects, Dialog
and GroupBox background images, PushButton icons as well as the
POPUP BOX as expected.
- The EditText class provides a new
auto-tab mode and supports
line wrapping in various
modes for multi-line EditText objects.
- The Dialog.do Cancel Dialog
functionality has been enhanced.
- The Dialog and GroupBox
margins may be selectively enabled.
- The Java Webstart JNLP configuration has been simplified.
All URLs in JNLP files and JDLG configuration files may now be
specified relative to the
JNLP code base.
- The typeahead functionality
has been enhanced. The TAB/ENTER forward navigation keys are now
additionally buffered so that the typeahead function now works
across multiple objects.
- The visual display quality
of scaled images has been improved.
- ListBox: DLG SET
columnorder now recognizes the v character to make
a column visible.
- ListBox: The ListBox border now visually indicates whether a
ListBox is focused.
- ListBox: The first line is no longer implicitly selected if
no line is selected when a ListBox gets the focus.
- The Dialog layout
behavior can be configured to reproduce the Dialog window area
calculation of JDLG versions before 1.7.0.
Changes in JDLG version 1.6.7 (superseded):
- Fixed a problem where in some cases
DLG SET sensitive
was not correctly propagated to child objects.
- ListBox: Fixed a potential IllegalArgumentException when setting the
- ListBox: Fixed a potential ClassCastException on
DLG GET rowdata
if a line is inserted and rowdata is not set on this line.
- Plugin: Introduced Plugin API
version 1.2 which allows a plugin class to implement the
standard mouse handling.
- Plugin: Fixed uninitialized parent during onClone() invocation.
- Plugin: Added the
attribute to query whether a plugin class is present.
Changes in JDLG version 1.6.6 (superseded):
- Added the Dialog.dohide
and doshow attributes
to enhance the Dialog.do
Cancel Dialog functionality.
- Fixed potential NullPointerException when the keyboard focus
is moved away from a deleted object.
Changes in JDLG version 1.6.5 (superseded):
- CheckBox / PushButton / RadioButton: Fixed a problem where button objects
were not focused when clicked if
tabstop=0 is set.
This also caused unexpected behavior if
ruleoverride=0 is set.
- Splitter / GroupBox: Fixed a problem where Splitter child objects were
not displayed if they are located in a nested GroupBox having
- Plugin: Fixed a problem where the
attribute was not derived from a model. See also:
Changes in JDLG version 1.6.4 (superseded):
- ListBox: Fixed a regression where making trailing invisible columns
visible could cause a session to abort with ERROR 684 due to an internal
Changes in JDLG version 1.6.3 (superseded):
- Added the
to reduce memory usage if an image is scaled to a smaller size.
The default behavior for all images may be specified using the new
- ListBox: Fixed a problem where in certain cases dynamically added columns were
not displayed correctly if invisible columns were already present.
- ComboBox: Fixed a regression where setting
ComboBox.boxheight had no effect.
- Added the Show Log Messages menu option to instantly view JDLG runtime errors
and warnings, regardless whether an error
log file is configured or not.
- Java Webstart: Accept "jnlp." prefixed property
names, for example "jnlp.eloquence.config.url", to overcome a JNLP behavior
change introduced with Oracle(TM) Java version 7u45.
- Oracle(TM) Java version 7u45 and newer: Fixed jdlgS.jar signature
and manifest issues so that a Java Web Start security warning message is
no longer displayed.
Changes in JDLG version 1.6.2 (superseded):
- Fixed a problem where printing could fail on Windows 8 (#4120).
Changes in JDLG version 1.6.1 (superseded):
- Added the
to specify the Dialog and GroupBox background image fill mode.
- Fixed a problem introduced with JDLG version 1.6.0 where a Dialog background
image was unexpectedly refreshed on each DLG DO and DLG DRAW.
Changes in JDLG version 1.6.0 (superseded):
- Added the
which allows to specify a GroupBox background image (#4084).
- Added the
System.start attribute which allows
to programmatically start a configured application.
- Added the
visible attribute in the
application configuration for applications that should only be started
programmatically using the System.start
- The caching of the
login credentials has been
improved. If a new session is started where the login credentials are not
yet cached, the credentials of another session are used if the other session
has the same
- PRINTER 10 integration:
DLG SET Application.printername
specifies the printer to be used with subsequent PRINTER 10
DLG SET Application.printers
queries the list of installed printers.
Windows: The 64-bit Java platform is now supported.
- Fixed a problem where a Dialog background image did not change if the
same URL was used to load a different image (#4074).
- Fixed a problem where the PopText.cy
attribute was not derived from a model (#4082). This also affected the
activeitem, activeline and topitem attributes.
- If the DLG protocol buffer size is exceeded on DLG GET, for example
when obtaining the EditText or ListBox content, ERROR 685 was returned
(Internal error detected by DLG driver). This has been changed to ERROR
683 (DLG driver protocol memory overflow) (#4025).
- The tray icon display has been
improved to support different image resolutions.
Changes in JDLG beta version 1.5.7-120514-1914 (superseded):
- Fixed a problem where an image did not change if the same URL was
used to load a different image (#4074).
Changes in JDLG beta version 1.5.7-110705-1228 (superseded):
Changes in JDLG beta version 1.5.7-110526-1229 (superseded):
- Fixed an incompatibility with Java versions before 1.6, potentially
causing a java.lang.NoSuchMethodError: java/lang/String.isEmpty()Z
Changes in JDLG beta version 1.5.7-110518-1310 (superseded):
Changes in JDLG beta version 1.5.7-110429-1914 (superseded):
- Added the
property specifies the keepalive interval in seconds. If nonzero,
JDLG sends keepalive messages in the specified interval during a
DLG DO or POPUP BOX invocation.
This allows eloqcore to detect whether a JDLG connection is
still active or was interrupted. The latter case is assumed
if eloqcore does not receive any message from JDLG for five
times the specified interval during a DLG DO or POPUP BOX
invocation. If an interrupted JDLG connection is detected,
the connection is closed and ERROR 684 is returned to the
This function may also be useful to solve idle timeout problems
caused by network router/firewall configuration. A network
router might be configured to close a connection if it has been
inactive for some time. To prevent this from affecting JDLG
connections, a JDLG keepalive interval could be configured.
For example, assumed the router idle timeout is 30 minutes,
an eloquence.config.keepalive=900 configuration would cause
JDLG to send a keepalive message every 15 minutes so that the router
idle timeout would not expire.
- The eloquence.config.keepalive
configuration requires an eloqcore version which supports the
keepalive functionality, otherwise it has no effect.
For Eloquence 8.0 this requires eloqcore patch PE80-1104280
or newer. For Eloquence 8.10 this requires eloqcore patch
PE81-1104280 or newer.
- Instead of configuring the
property, a program may invoke
DLG SET ".keepalive",Seconds to specify the
keepalive interval, for example:
DLG SET ".keepalive",900
Changes in JDLG beta version 1.5.7-110128-1437 (superseded):
- Added the System.activate
If multiple sessions are active, DLG SET System.activate
brings the Dialog of a concurrent
session into foreground where the
Dialog title matches the
specified string argument, similar to clicking an entry in the
- On the Linux platform, the space used by the Desktop task bar or the
Desktop menu bar may not be properly accounted for. This is caused by
a Java Swing limitation, where the necessary information is not
available. This should have little consequences besides that JDLG
cannot ensure that a Dialog window
is not obscured by Desktop elements.
- On platforms where JDLG runs on top of an X11 window manager, such
as Linux, the content of the X11 clipboard may change when the
content of an EditText or
ComboBox object is selected.
This is Java behavior which cannot be affected by JDLG.