Release Notes

April 2, 2003

About ULC 5.1.1

ULC 5.1.1 is a minor update to ULC release 5.1.

Major Enhancements

Beside several bug fixes and implemented feature requests, this release includes the following enhancements:

Version Notes

This build is based on ULC 5.1. Please see the ULC 5.1 release notes for additional information.

Release Structure Changes

The following directories are added to the release structure of ULC 5.1:
    sample ULC sample applications
    tomcat Tomcat servlet container
    ROOT.war web application archive containing all samples

Please see the ULC 5.1 release notes for more information on the general release structure.

Fixed Bugs

PR Description Comments
34ULCAlert: Can't reset iconAll properties of ULCAlert can be changed after upload
175HTTP(S) transport does not run with UI in server mode 
183Problems with HTTP(S) transport when running two UI Engine in same HTTP session  
192ULCMandatoryAndEnabler does not reset color 
316it is possible to set the selected index in a ULCTabbedPane to an inexisting page 
327rarely the wait cursor does not disappear 
365setDefaultCloseOperation() is ignored if invoked in a synchronous event listener  
395wrong description for ULCWIndow.setDefaultCloseOperation 
397misleading doc for ULCWindow close operations 
423WaitCursor does not show up or only very late 
430UIEngine from time to time throws exception when terminating an application  
432Caret position changes in ULCTextComponents trigger ValueChangedEvents.  
444Objects stored as cell values in the ULCTableTree result in ClassNotFound exceptions when run through WebStart or an Applet.only basic types are allowed in the models -> all other types will throw an exception (also during development time)
448LEADING/TRAILING do not work in ULCLabel for setHorizontalAlignment() and setHorizontalTextPosition() 
449Selection handling in ULCTableTree is broken with JDK Version 1.2JDK1.2
450nodes can be expanded/collapsed even when the table tree is disabled  
451tooltips do not work on table tree 
453ULCList is slow for large listsAdded setFixedWidth() API to ULCList. For large list you should use this API to set the list to a fixed width.
454expanding/collapsing nodes in tree/table tree sometimes clears selection  
457requestFocus() is ignored if invoked in a synchronous event listener  
459ULCTextComponent initially sets caret at the end instead of start 
460FileChooserConfig ignores configuration 
462Changing selection in ULCListSelectionModel sometimes does not trigger a corresponding event 
465removeAll on ULCToolBar does not work properly 
466WindowEvents on ULCAlert do not block 
467ULCCardPane: removing selected card does not alter selection state  
468AppletBrowserService stops working for multiple applets in one virtual machine AppletDevelopmentRunner cannot be used with the -useGui option anymore
469show document doesnt work with development and standalone containers under windows XP 
471Logger prints out wrong logging source for some methods 
476Using mnemonics or accelerators stops delivery of ListSelectionEvents and TreeSelectionEvents 
477setCursor() is ignored if invoked in a synchronous event listener 
479Setting table auto resize mode to AUTO_RESIZE_OFF causes InvocationTargetException 
481Calling setVisible(true) on an iconified and hidden ULCInternalFrame does not show the internal frame's icon. 
483Popup Menus don't respect the Desktop Toolbar and Multi-Monitor Configurations Only fixed for JDK1.4. Pre 1.4 JDKs don't provide support for desktop toolbar and multi-monitor configurations.
484JDK1.2: poor visual feedback for selection in table/table tree when cell selection is enabled 
486Triggering a nodeStructureChanged event in ULCTable/ULCTableTree sometimes causes a NullPointerException 
490The use of some ULC classes in JBuilder results in a compiler error (ULCTable, ULCTree, UISession, ...) 
493Stack overflow when adding and removing enabler from other enabler  
497ULCInternalFrame.setTitle(String) is broken 
500ULCTabbedPane.setSelectedComponent(ULCComponent) is broken 
501Exception on altering the registered listeners of an abstract model  
502setting a "null" enabler throws a NullPointerException 
506ULCCardPane.getSelectedComponent() returns the ULCPage object instead of the corresponding component. 
507Firing a "TableDataChanged" event in a TableModel does not clear the selection on the server side (only client). 
509ClassCastException when using empty constructors of ULCTableTree and table-model based widgets. 
510Whenever a ULCTable/ULCTableTree/ULCTree looses the focus it should stop the current cell editor. 
512When quickly clicking on ULCTable cells, sometimes ListSelectionEvents seem to be lost. 
515Selecting and then deselecting same list row: yellow border remains  
517support basic authentication in ServletConnector 
518validators trigger beep when invalid values are set by server 
527ULCList does not trigger focus events 
529low-level exception occurrs in BasicTabbedPaneUI$FocusHandler.focusLost  
532ULCLists don't follow their containing components enabler 
538keylistener on ulclist does not work 
541KeepAliveTimer does not terminate after connection failure 
543Scrolling (horizontally) over a large table does not render last columns  
547Anythings do not support Float and Long 
550setting the margin to 0 on a not yet uploaded ULCBorderPane has no effect  
551Tooltips on ULCTree only work with custom renderers 
553column width changes are not propagated to server (JDK1.2.2 only) 
560replacing a custom editor in ULCTable does not work immediate, only after a table repaint 

Implemented Feature Requests

PR Description Comments
77Set the default button in Alerts.added setInitialValue() API
236Right-click in table/list/tree/table tree should update the selection before popup menu is displayed 
361ULCAlert: setMessage without effect after upload 
366IFileStoreHandler.prepareFile should have a throws clause 
414provide labelFor property on ULCLabel 
425add set2DigitYearStart/get2DigitYearStart to ULCDateDataType 
436Filler space in table and table tree should behave like regular cell space Table and table tree now always expands in height. Nevertheless there still might be some filler space at the right side when the auto expand mode is turned off.
438We need the possibility to set a specific locale on ULCNumberDataType  
441The size/location of an internal frame can not be set anymore once the internal frame has been added to the desktop. 
442Map ESC key to window close box Dialogs 
461Table / Tree / TableTree ActionEvent handling is conflicting with default Swing behaviorAction events are generated only if there is an action listener registered with a widget.
Action Events on tree are generated
  • when the user double clicks a leaf
  • when the user presses enter in a node which is not being edited
Action Events on table and table trees are generated
  • when the user double clicks a non-editable cell
  • when the user presses enter in a cell which is not being edited
463When pressing a modifier key (CTRL, SHIFT, ALT) during a synchronous event the UIEngine permanently beeps 
464missing remove in ULCMenuBar 
472Logger should also provide some low level logging methodsadded the following methods:
  • log(Level level, String msg)
  • log(Level level, String msg, Object param1)
  • log(Level level, String msg, Object[] params)
  • log(Level level, String msg, Throwable thrown)
473Output of SimpleLogManager should be enhanced (tab separated, more info) Added SimpleLogManager.setMessageFormat() API.
Default format is: "{0}\t{1, date, dd.MM.yyyy HH:mm:ss.SSS}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}" where
  • {0} is replaced by a sequence number
  • {1} is replaced by the current date as text
  • {2} is replaced by the level value
  • {3} is replaced by the level as text
  • {4} is replaced by the current thread as text
  • {5} is replaced by the class name
  • {6} is replaced by the method name
  • {7} is replaced by the msg
  • {8} is replaced by the parameters as text
474add more log message to the ULC frameworkAdded
  • log lifecycle log message with level INFO
  • server rount trip log messages wiht level FINER
  • request log messages with level FINEST
  • exception log messages with level SEVERE
  • warning log messages with level WARNING
Logging can be turned on
  • in ServletContainerAdapter with setting the init parameter 'log-level' to ALL
  • in DefaultAppletLauncher with setting the applet parameter 'log-level' to ALL
  • in DefaultJnlpLaunchner with passing ALL as third parameter to main
  • in DefaultStandaloneLauncher with passing ALL as third parameter to main
480Hard coded empty border of ULCHtmlPane should be removedTo have a ULCHtmlPane with the old empty border put it inside a ULCBoxPane with a margin of 10.
485Using "static" (=application wide valid) variables in ULC is cumbersome Introduced ApplicationLocal class.
487KeyEvent should also hold information about the modifier key 
488Add version check during startupWhen the server starts up all used ULC libraries are checked.
When the UIEngine starts up all used ULC libraries are checked.
When the UIEngine connects the server and client versions are compared.
489Client side exceptions. 
492null font name should result in default font as in swing 
498provide ULCLabel.setIconTextGap(int iconTextGap) 
499Context-help (F1) does not work for several components 
514ULCNumberDataType should support leading zeros (e.g. 00123). 
531default values for ULCNumberDataType that is an Integer field 
539Method to paint "borders" and "focus" in ULCButtons 
544FileChooserConfig should give the possibility to visualize and to select only directories 
545Buttons in ULCAlert do not support mnemonics 
546ULC should support SystemColors 
548add byte[] constructor for ULCIcon 
549Containers holding one cell should all provide same API: add(), remove() The following containers are one cell containers:
  • ULCFrame
  • ULCDialog
  • ULCBorderPane
  • ULCInternalFrame
Adding more than one component now throws an exception.
Removing a component from an empty one cell container now throws an exception.

Known Problems and Limitations

Product and company names herein may be trademarks of their respective owners.

Copyright (c) 2000-2015 Canoo Engineering AG