Release Notes

September 12, 2005

About ULC 6.0.2

ULC 6.0.2 is a maintenance release for ULC release 6.0. It includes the following changes:

Version Notes

ULC 6.0.2 requires the Java Runtime Environment (JRE) 1.3.1 or later. It should run on any platform that supports JRE 1.3.1 or later.

The ULC client has been tested on Windows 2000/XP with the following deployment options:

The ULC server has been tested on Windows 2000/XP, Red Hat Linux 9.0, and Sun Solaris 8 with the following deployment options:

Note: Support for the Servlet API 2.2 has been deprecated in this release and will be removed in the next release.

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


What's in this Release

Fixed Bugs

PR Description Comments
364ULCHtmlPane linkError callback never called  
510Whenever a ULCTable/ULCTableTree/ULCTree looses the focus it should stop the current cell editor.  
895 the default button in a dialog gets lost if dialog shown twice or more times (setDefaultButton)  
906javaDoc error in ULCDateDataType regarding default values. Behaviour adapted to JavaDoc
936Stopping the application does not stop any client side ULCPollingTimers.  
963 FileChooser displays wrong approve button text in case of ClientContext.storeFile()  
969 ULCSlider with range smaller than 10 does not work  
982RoundtripListener doesn't work in ULC release 6.0.  
983 Empty tool tip is shown for a ULCTable without a tool tip  
986 Hide on table tree does hide the table, but not the header  
987ULCDialogs with a parent frame may lead to NullPointerExceptions.  
991DefaultTableTreeCellRenderer has no selection background and no focus border  
996NullPointerException in empty ULCTree when double clicking  
1002DefaultListModel.addAll() might cause a client-side IndexOutOfBoundsException  
1003 ULCInternalFrame does not report window size and position to the server side  
1008ULCList.getSelectedValue() fails after clear() on model  
1020 NullPointerException when removing table from container  
1021Setting the size of a window in second server round trip is not respected  
1023 Removing all items from a non editable ULCComboBox does not unset the selected item  
1036Moving a tab to the end triggers a IndexOutOfBoundsException  
1038Client side memory leak when terminating a ULC application  
1045 ULCTreeSelectionModel.getAddedSelectionPaths throws NullPointerException  
1047 ULCComponent.scrollToVisible() does not work right after adding a component to a container  
1048 setBorder(null) throws NullPointerException  
1051 ULCFiller.changeShape() works only after upload and leads to inconsistent state  
1053 Memory leak for ULCDialogs that have an owner (i.e. a parent window)  
1058 Pause/Resume API: IllegalStateException - no callable with this oid registered error  
1061 com.ulcjava.base.application.util.LazyLoadingUtilities$1 is not serializable  
1064 Add() / remove() APIs on ULCTabbedPane and ULCCardPane not symmetrical  
1073 ULCFlowLayoutPane.setHGap/setVGap(0) does not work  

Implemented Feature Requests

PR Description Comments
586 Allow formatting pattern with ULCNumberDataType ULCNumberDataType now allows customized pattern, grouping and decimal separator. The pattern can have the following format:
  • pattern := integer{.fraction}
  • integer := {#}* {0}* 0
  • fraction := {0}* {#}*

Description of symbols used in the pattern syntax:
  • 0    a digit
  • #    a digit, zero shows as absent
  • .    placeholder for decimal separator
  • ,    placeholder for grouping separator
646 Security issue regarding ClientContext.loadFile The application developer can set the maximum file size which is allowed to upload on the server.

New API:
  • ClientContext.loadFile(IFileLoadHandler handler, FileChooserConfig config, long maximumFileSize)
  • ClientContext.loadFile(IFileLoadHandler handler, String clientFilePath, long maximumFileSize) {
649 Provide a way to configure popup handling for components (prevent / inherit parent popup menu) 
672 Communication should be configurable (compressed or uncompressed) The communication mode between client and server can be configured (compressed or uncompressed). Default is compressed. The configuration has to be done on both the client and the server side. Client Side configuration:

New API:
  • DataStreamFactory.setCompress(false)
To disable compression on the communication on the client side, the above API must be the first call in a custom launcher:
  • for the applet launcher: first call in the init() method
  • for the jnlp and standalone launcher: first call in the main() method
Server Side configuration:
To disable the communication mode on the server side, you have to set the following init parameter in the web.xml.
    <servlet>
            <servlet-name>TeamMembersApplet</servlet-name>
            <servlet-class>
            com.ulcjava.container.servlet.server.ServletContainerAdapter
            </servlet-class>
            ...
            <init-param>
            <param-name>compress</param-name>
            <param-value>false</param-value>
            </init-param>
            </servlet>
        
896 Event delivery mode should be customizable for ULCComponent.registerKeyboardAction() New API:
  • ClientContext.setKeyboardActionDeliveryMode()
  • ClientContext.getKeyboardActionDeliveryMode()
904FileChooserConfig can't remove the all files option New API:
  • FileChooserConfig.getDialogType()
  • FileChooserConfig.isAcceptAllFileFilterUsed()
  • FileChooserConfig.setAcceptAllFileFilterUsed(boolean acceptAllFileFilterUsed)
971 Improve error messages when working with proxies from another ULC session  
995ULCTable / ULCTree / ULCTableTree / ULCList should not trigger an action event when disabled 
997ULCTree / ULCTable / ULCTableTree / ULCList: Double click should only trigger an action event when triggering a selection 
998ULCTree / ULCTable / ULCTableTree / ULCList: Enter should only trigger an action event when there is a selection 
1001 DevelopmentRunner should provide an API to set the ISessionStateListener to use New API:
  • DevelopmentRunner.setSessionStateListener()
  • DevelopmentRunner.getSessionStateListener()
Default is an instance of the DefaultSessionStateListener class.
1004 ULCHtmlPane should support links for malformed URLs New HyperlinkEvent.getDescription() API
1005 isDragEnabled() is missing on all components which support Drag and Drop New API:
  • isDragEnabled() added to all relevant components, e.g. ULCLabel, ULCList etc.
1019Add ULCTree.setToggleClickCount() API as in Swing New API:
  • ULCTree.setToggleClickCount(int count)
  • ULCTree.getToggleClickCount(int count)
1035Removing tabs from / adding tabs to a ULCTabbedPane should trigger corresponding events 
1039DevelopmentRunner should provide getters for the client and server side sessions New API:
  • DevelopmentRunner.getServerSession()
  • DevelopmentRunner.getClientSession()
1043 ULCTableTree should provide API for ListSelectionListener New API:
  • ULCTableTree.addListSelectionListener(IListSelectionListener listener)
  • ULCTableTree.removeListSelectionListener(IListSelectionListener listener)
1044 No error feedback when starting the sample application without the JAVA_HOME environment variable  
1052 Add a getXXXListeners() method to all components New API:
  • getXXXListeners() method to all components which have addXXXListeners methods.

Known Problems and Limitations

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

Copyright (c) 2000-2015 Canoo Engineering AG