Share

ItsNat, Natural AJAX Java Web Framework

File Release Notes and Changelog

Release Name: 0.6

Notes:


Changes: * Preliminary support of full remote control. This feature is already included but disabled in this version (an internal flag can be used to enable it, contact if you need this feature). * Final support of modal layers (ItsNatModalLayer component), this feature works in ALL supported browsers including Opera Mini and Pocket IE. Pure SVG is supported too. Added "clean below" mode to ensure elements below the modal layer cannot be accessed in no way. * Improved default renderers, for instance the default implementation of ElementRenderer, now replace the first text node containing "some" text, ignoring spaces, tabs and line feeds. * Event capturing simulation on Internet Explorer 6+ (desktop). With this feature events in MSIE 6+ are almost W3C DOM Level 2 Events compliant from a server point of view (MSIE already does bubbling). * Event capturing and bubbling simulation in Pocket IE 6 (WM 6 and 6.1). Now setJoystickMode(true) is not mandatory (links are necessary but now events traverse the DOM tree then listeners registered in parent nodes will be executed). * Improved default in place edition: editor control is automatically removed when clicking outside the editor control. This fixes edition in place when blur event is not fired in some browsers. Default in place edition works inOpera Mini and Pocket IE too. * New feature: "Event listener chain control". A global listener (or a listener registered in a component) can control the flow of listener dispatching. This feature is useful to catch exceptions and transaction management. For more info see ItsNatEventListenerChain. * This release adds more developer control for errors, the developer has more opportunities to avoid the default ugly exceptions thrown to the end user. Now ItsNatEvent.getItsNatDocument() and ItsNatServletRequest.getItsNatDocument() in servlet level listeners return null when the document is lost or the page does not exist. Cases: - Detection of session expired or server page lost (for instance timeout). - Detection of not found template specified in itsnat_doc_name (cannot load). - Detection of requested page for remote view/control does not exist. - Detection of session expired or server page lost in remote view/control. * CometNotifier is now event based: added addEventListener and removeEventListener methods to register user defined event listeners. These event listeners are dispatched when the client is being to be notified and an opportunity to update the document accordingly. * CometNotifier now inherits from ItsNatUserData (is synchronized) to share data between background threads and web request threads. * ClientDocument now ever holds a strong reference of the ItsNatDocument including in remote view/control clients. * Reduced the amount of JavaScript code sent to the client and increased speed of this code (more use of innerHTML when appropriated). * Removed ItsNatRemoteCtrlEvent.OBSERVED_INVALID phase and global property, user code can ever ask to ItsNatDocument.isInvalid() because ItsNatDocument associated to the observer is ever accessible. * Improved support of server-sent events in NetFront, the weird native method dispatchEvent is no longer used. Now the Feature Showcase example "Func. Testing Using Browser" works in NetFront. * Internal node path resolution is more robust in browsers filtering text nodes with blanks (for instance BlackBerry). * New browsers and versions supported or tested: - Google Chrome since 1.0 (previous versions deprecated). - NetFront v3.4 is officially supported (tested with Access Linux Simulator). This browser is included in many SonyEricsson mobile phones. - S60WebKit since S60 3rd Feature Pack 1 (previously FP 2 was the minimum version). This is the first release of S60WebKit. S60 5th v0.9 (touchscreen) is tested too with success, any S60WebKit version should work. - S40WebKit since S40 6th v0.9 (Nokia 6600 and similar). ItsNat adds some workarounds to avoid some bugs in this browser (change event not fired and scroll is not updated in select elements). - Internet Explorer Mobile 6 of Windows Mobile 6.1.4 is supported. This browser, named "IE 6 on 6", is a full port of IE 6 desktop and some parts of IE 8 (JavaScript engine). This browser is more powerful and very different to the IE included in WM 6 and 6.1. To avoid confusion IE Mobile of WM 6 and 6.1 is named Pocket IE. - Android v1.0 Release 2, deprecated previous versions. ItsNat adds workarounds to avoid some Android bugs for instance the serious bug "first option ever selected in select multiple". - SkyFire v0.9, deprecated previous versions. - Internet Explorer v8 RC 1 is officially supported. Fixed problems with item selection in select elements. By default IE 8 runs in default mode (IE 8 mode). This mode can be changed with a response header or a <meta> tag. - iPhone 2.2 new minimum version. - Safari 4 beta and Opera 10 Alpha seem to work fine with no special adjust. - Iris Browser 1.1 (1.1.3) is tested with success, this version is highly recommended because it fixes a serious bug in multiple selection (only single selection, with no workaround was provided by ItsNat). * Changed name of JavaScript file itsnat_msie_mobile.js as itsnat_msie_pocket.js. * New interfaces/classes: ItsNatEventListenerChain, ItsNatCometEvent, ItsNatAsyncTaskEvent * New methods: NameValue.toString() ItsNatEvent.getItsNatEventListenerChain() ItsNatEvent.getClientDocument() CometNotifier.addEventListener(EventListener) CometNotifier.removeEventListener(EventListener) ItsNatServlet.createServletRequest(ServletRequest,Map) ClientDocument.dispatchEvent(EventTarget,Event,int,long) ItsNatTimerHandle.isCancelled() ItsNatDOMUtil.isNodeInside(Node,Node) * Moved methods (preparing ItsNat to full remote control support): ItsNatDocument.addContinueEventListener(*) => ClientDocument.addContinueEventListener(*) ItsNatDocument.removeContinueEventListener(*) => ClientDocument.removeContinueEventListener(*) ItsNatDocument.createItsNatTimer() => ClientDocument.createItsNatTimer() ItsNatDocument.addAsynchronousTask(*) => ClientDocument.addAsynchronousTask(*) * Changed methods: ClientDocument.addAsynchronousTask(Runnable,boolean) => ClientDocument.addAsynchronousTask(Runnable,EventListener) ClientDocument.addAsynchronousTask(Runnable,boolean,int,long) => ClientDocument.addAsynchronousTask(Runnable,boolean,int,EventTarget,EventListener,int,ParamTransport[],String,long) ItsNatRemoteCtrlEventListener.handleRequest(*) => ItsNatRemoteCtrlEventListener.handleEvent(*) ItsNatComponentManager.createItsNatModalLayer(Element,int,float,String,NameValue[]) => ItsNatComponentManager.createItsNatModalLayer(Element,boolean,int,float,String,NameValue[]) ItsNatComponentManager.createItsNatModalLayer(Element,float,String,NameValue[]) => ItsNatComponentManager.createItsNatModalLayer(Element,boolean,float,String,NameValue[]) * JavaScript code generated by the framework when registering event listeners has changed and two new public JavaScript methods have been published: getNativeEvent() and setMustBeSent(boolean). See "6.2.3 Custom pre-send JavaScript code" in Manual for details. * Fixed a bug in table components in joystick mode. * Fixed bug: ItsNatDocumentTemplate.isMarkupDrivenComponents() returns the joystick mode. * Fixed bug: text inside option is not updated in NetFront. * Fixed bugs in form controls in browsers with bad support of change event (including iPhone). * Fixed many bugs in Pocket IE and big performance improvements avoiding annoying blinks. For instance the Feature Showcase example "Func. Testing Using Browser" now works in Pocket IE. * Fixed <input type=file> elements in BlackBerry: no longer is necessary to hide these elements (attribute "value" is fully avoided including with empty value and automatically removed to avoid unexpected Java exceptions). * Fixed some bugs in remote view/ctrl using timers and avoiding user changes when loading the page and form auto-complete in some browsers. * Workaround to avoid a BlackBerry bug: removeAttribute() does not remove the style attribute. * Workaround to avoid a NetFront bug when adding a <select> element with multiple and/or size attribute using appendChild/insertBefore. * Reduced the stability problems of Opera Mobile 8.6. Added a workaround to avoid a browser bug: <button> elements are extracted if inside a <p>, these buttons are reinserted in the original position. * Other bug fixes * Manual: - Updated accordingly with API changes. Comet example updated with event listeners. - Added "6.2.8 Chain control of event listeners". - Added "6.2.9 Detection of session or page lost with global event listeners". - Added "6.22.1 More about the request phase and how to ask permission to user". - Added "6.22.4 Document not found detection" (in "6.22 REMOTE VIEW/CONTROL"). - Added "6.22.5 Session expired or web application reload detection" (in "6.22 REMOTE VIEW/CONTROL"). - Added "6.27.1 Detection of no template found with the specified document name". - Added "6.36 ADVICES TO CODE ITSNAT APPLICATIONS FOR POCKET IE". - Added "7.14 MODAL LAYERS". - Changed the JavaScript code generated to manage user defined code in event listeners, see "6.2.3 Custom pre send JavaScript code" for details. - "7.21.3 The case of Pocket IE" is no longer a subchapter of "7.21.2 Joystick mode" because joystick mode is no longer necessary in Pocket IE. Changed accordingly. * Feature Showcase: - Updated project to NetBeans 6.5 (may work with previous versions). - New example: Core/Listeners/Event Listener Chain Control. - Updated "Core/Asynchronous Task" and "Core/Comet Notifier" now event based (using EventListener). - Detection of page lost in GlobalEventListener (registered on servlet level), end user is notified and the page is automatically reloaded. - Detection in GlobalItsNatServletRequestListener of template not found specified in itsnat_doc_name An exception is thrown. - Detection of document not found when requesting remote monitoring a document in GlobalRemoteControlSupervision (registered on servlet level). Output is redirected to a specific error page. - Detection of session expired or app. reloaded when remote monitoring a document in GlobalRemoteControlSupervision (registered on servlet level). A JavaScript alert notifies to the end user about this situation. - In Remote View/Control the user can be optionally asked before monitoring. - Renamed "IE Mobile" examples as "Pocket IE". Now the feature tree works in Pocket IE (see PocketIEUtil) using AJAX, in spite of this most of examples are painfully slow and some of them do not work (they are not customized for PIE). Edition in place is enabled in Pocket IE Free List, Table and Tree examples. Because ItsNat adds bubbling (and capturing) to Pocket IE, setJoystickMode(true) is not needed anymore, this implies PocketIEFreeListStructure and PocketIETableStructure are no longer necessary, PocketIEFreeComboBoxSelectionDecorator and PocketIETableRowSelectionDecorator have been updated accordingly. - The "Func. Testing Using Browser" example is now deterministic and can run as quick as possible. See FuncTestUsingBrowserUtil.dispatchEvent method. This example works in ALL supported browsers. - Added "Components/Modal Layers" examples.