File Release Notes and Changelog
Release Name: 0.3
Notes:
Changes:
* ItsNat engine has been deeply refactored to fit the new features, quality and extensibility of the internal architecture is highly improved.
* Support of new desktop browsers:
o Safari 3+ support (tested 3.0 on Mac and 3.1 on Windows)
o Opera 9+ support (tested 9.26).
o QtWebKit (Qt 4.4)
* Some or complete support of mobile browsers including AJAX: Opera Mini 4, Opera Mobile 8.6, NetFront 3.5, Minimo 0.2, IE Mobile of Windows Mobile 6, iPhone/iPod Touch/iPhone SDK, Android (m5-rc15), S60WebKit (S60 3rd), Iris 1.0.8 and QtWebKit (Qt 4.4) based browsers.
* Remote control now is browser independent!! Now another page open with any supported browser can be monitored using any supported browser.
* Pure SVG documents now have AJAX events and server state (browsers with SVG support)!! Now SVG documents (served as image/svg+xml) are first class AJAX capable documents much like X/HTML documents are.
* Markup driven feature of forms: server forms can be automatically updated with client state (using components behind scenes configured as "markup driven"). Explicit use of ItsNat components is not necessary in this mode.
* Improved client/server synchronization on form controls. This ensures the client shows the state of the server after loading, and if components are used, form controls are ever in sync with the server.
o In spite of pages are requested from server, Opera (desktop) and Safari autofill forms with previous values (usually returning with back button). These changes are automatically reverted by ItsNat to the server state. This is not a problem in FireFox, MSIE and others (when the page is requested to the server autofill is disabled).
o Forms changed by the user while the page is loading (before the initial script is executed) are reverted to the server state.
* Configurable mobile modes in components:
o Keyboard is not needed for selection in "free" components (CTRL key "ever" pressed).
o Joystick mode: stylus/mouse is not needed to click in "free" components (useful for mobile devices without touchscreen).
* Method ItsNatDocument.toDOM(String) to convert a String to DOM (DocumentFragment) on the fly (use similar to innerHTML).
* "Reload" button or direct URL no longer lost the referrer in Internet Explorer.
* Dispatching order of DOM event listeners in MSIE is the same as W3C browsers (first registered/first dispatched).
* Updated CyberNeko HTML Parser to 1.9.7 (Apache 2.0 license).
* Bug fixes:
o ItsNatTreeUIImpl.removeAllChildTreeNodes only removes half of child nodes.
o Fixes problems related to Xerces version detection (ever supposed an old version).
o Behavior change: ItsNatDocument.addEventListener, addUserEventListener and addContinueEventListener methods do nothing if the same combination of target/type/listener instance/useCapture was previously registered. This behavior is more aligned with W3C DOM specification. This change does not apply to ItsNatTimer.schedule* methods.
o Unsync between selection models and UI in some circumstances.
* Interface org.itsnat.core.event.KeyEvent: changed "long" data types to "int".
* Added methods (see javadoc for more info):
o ItsNat.getVersion()
o ItsNatDocument.toDOM(String)
o ItsNatDocument.addContinueEventListener(EventTarget,EventListener)
o ItsNatServletContext.getMaxOpenDocumentsBySession()
o ItsNatServletContext.setMaxOpenDocumentsBySession(int)
o ClientDocument.getLastRequestTime()
o ClientDocument.getCreationTime()
o ItsNatDocument.getCreationTime()
o ItsNatDocument.getElementGroupManager()
o ItsNatServletConfig.isSelectionOnComponentsUsesKeyboard()
o ItsNatServletConfig.setSelectionOnComponentsUsesKeyboard(boolean)
o DocumentTemplate.isSelectionOnComponentsUsesKeyboard()
o DocumentTemplate.setSelectionOnComponentsUsesKeyboard(boolean)
o ItsNatComponentManager.isSelectionOnComponentsUsesKeyboard()
o ItsNatComponentManager.setSelectionOnComponentsUsesKeyboard(boolean)
o ItsNatFreeListMultSel.isSelectionUsesKeyboard()
o ItsNatFreeListMultSel.setSelectionUsesKeyboard(boolean)
o ItsNatTable.isSelectionUsesKeyboard()
o ItsNatTable.setSelectionUsesKeyboard(boolean)
o ItsNatTree.isSelectionUsesKeyboard()
o ItsNatTree.setSelectionUsesKeyboard(boolean)
o ItsNatServletConfig.isJoystickMode()
o ItsNatServletConfig.setJoystickMode(boolean)
o DocumentTemplate.isJoystickMode()
o DocumentTemplate.setJoystickMode(boolean)
o ItsNatDocument.isJoystickMode()
o ItsNatDocument.setJoystickMode(boolean)
o ItsNatFreeList.isJoystickMode()
o ItsNatFreeList.setJoystickMode(boolean)
o ItsNatTable.isJoystickMode()
o ItsNatTable.setJoystickMode(boolean)
o ItsNatTree.isJoystickMode()
o ItsNatTree.setJoystickMode(boolean)
o ItsNatServletConfig.isMarkupDrivenComponents()
o ItsNatServletConfig.setMarkupDrivenComponents(boolean)
o DocumentTemplate.isMarkupDrivenComponents()
o DocumentTemplate.setMarkupDrivenComponents(boolean)
o ItsNatComponentManager.isMarkupDrivenComponents()
o ItsNatComponentManager.setMarkupDrivenComponents(boolean)
o ItsNatHTMLInputTextBased.isMarkupDrivenComponent()
o ItsNatHTMLInputTextBased.setMarkupDrivenComponent(boolean)
o ItsNatHTMLTextArea.isMarkupDrivenComponent()
o ItsNatHTMLTextArea.setMarkupDrivenComponent(boolean)
o ItsNatHTMLSelect.isMarkupDrivenComponent()
o ItsNatHTMLSelect.setMarkupDrivenComponent(boolean)
o ElementTree.getRowCount()
o ElementTreeNode.getRowCount()
o ElementTreeNodeList.getRowCount()
o ItsNatTreeUI.getRow(TreePath)
o ItsNatTreeUI.getRow(int,TreePath)
o ItsNatTreeUI.getRowCount()
o ItsNatTreeUI.getRowCount(TreePath)
o ItsNatTreeUI.getRowCount(int,TreePath)
o ItsNatLabel.isEditingEnabled()
o ItsNatLabel.setEditingEnabled(boolean)
o ItsNatList.isEditingEnabled()
o ItsNatList.setEditingEnabled(boolean)
o ItsNatTable.isEditingEnabled()
o ItsNatTable.setEditingEnabled(boolean)
o ItsNatTree.isEditingEnabled()
o ItsNatTree.setEditingEnabled(boolean)
o ItsNatComponentManager.isAutoBuildComponents()
o ItsNatComponentManager.setAutoBuildComponents()
o ItsNatException: new constructors (added parameter context)
o ItsNatException.getContext()
* Removed methods:
o ClientDocument.getCreationDate()
o ItsNatDocument.getCreationDate()
o ItsNatHTMLComponentManager.getItsNatHTMLDocument()
o ItsNatHTMLElementComponent.getItsNatHTMLDocument()
o ItsNatTreeNodeUI.removeTreeNodeAt(TreePath)
* Changed methods:
o ItsNatServletResponse.addCodeToSend(String) to ItsNatServletResponse.addCodeToSend(Object)
o ItsNatDOMUtil.getElementById(String,Element) to ItsNatDOMUtil.getElementById(String,Node)
o ItsNatTableUI.insertRowAt(int,Object[]) now returns org.w3c.dom.Element
o ItsNatComponentManager.addItsNatComponent(ItsNatComponent) now returns ItsNatComponent
* Moved methods:
o ItsNatComponentUI.isEnabled() to ItsNatComponent.isEnabled()
o ItsNatComponentUI.setEnabled(boolean) to ItsNatComponent.setEnabled(boolean)
* Moved methods to ElementGroupManager:
o ItsNatDocument.createElementListFree(Element parentElement,boolean master)
o ItsNatDocument.createElementTableFree(Element parentElement,boolean master)
o ItsNatDocument.createElementLabel(Element parentElement,boolean removePattern,ElementLabelRenderer renderer)
o ItsNatDocument.createElementList(Element parentElement,boolean removePattern,ElementListStructure structure,ElementListRenderer renderer)
o ItsNatDocument.createElementList(Element parentElement,boolean removePattern)
o ItsNatDocument.createElementTable(Element parentElement,boolean removePattern,ElementTableStructure structure,ElementTableRenderer renderer)
o ItsNatDocument.createElementTable(Element parentElement,boolean removePattern)
o ItsNatDocument.createElementTreeNode(Element parentElement,boolean removePattern,ElementTreeNodeStructure structure,ElementTreeNodeRenderer renderer)
o ItsNatDocument.createElementTreeNode(Element parentElement,boolean removePattern)
o ItsNatDocument.createElementTree(boolean treeTable,Element parentElement,boolean removePattern,ElementTreeNodeStructure structure,ElementTreeNodeRenderer renderer)
o ItsNatDocument.createElementTree(boolean treeTable,Element parentElement,boolean removePattern)
o ItsNatDocument.createElementTreeNodeList(boolean treeTable,Element parentElement,boolean removePattern,ElementTreeNodeStructure structure,ElementTreeNodeRenderer renderer)
o ItsNatDocument.createElementTreeNodeList(boolean treeTable,Element parentElement,boolean removePattern)
o ItsNatDocument.createDefaultElementRenderer()
o ItsNatDocument.createDefaultElementLabelRenderer()
o ItsNatDocument.createDefaultElementListRenderer()
o ItsNatDocument.createDefaultElementTableRenderer()
o ItsNatDocument.createDefaultElementListStructure()
o ItsNatDocument.createDefaultElementTableStructure()
o ItsNatDocument.createDefaultElementTreeNodeStructure()
* JavaScript (public API):
o Added method: document.getItsNatDoc().setEnableEventMonitors(booleanValue) to (temporally) enable/disable event monitors.
o Added param "timeout" of type boolean to the method EventMonitor.after(evt,timeout) of event monitors.
* Feature Showcase:
o Added "SVG/Pure SVG" example.
o Added "Auto. Component Build/Markup Driven Forms" examples.
o Automatic detection of mobile browsers: free components (lists, tables and trees) are set up in "not keyboard" mode for selection.
o Joystic Mode option (a check box) for mobile browsers without stylus/touchscreen.
o Edit in place now optionally with a single click.
o Fixed bug with "wait" mode of cursor and AJAX Timeout example.
o Fixed bug in tree examples: when selecting and removing a parent along with child nodes.
o Removed unnecessary form reset in "Component Based Example in Manual".
o Packaged as a NetBeans 6.1 project.
* Reference Manual:
o Updated accordingly to the new features and changes.
o Splited "ITSNAT:RETURNING.../Beyond (X)HTML" as:
+ "Beyond (X)HTML: pure SVG and SVG embedded in XHTML"
+ "Beyond (X)HTML: XML"
o Added "ITSNAT:RETURNING.../One Web: AJAX everywhere including in your mobile browser".
o Removed "DEVELOPMENT LIFECYCLE/The Mozilla/Firefox reload problem". Never was a problem in ItsNat because served pages by ItsNat are not cached in FireFox (auto fill of forms only affects to cached pages).
o Added "CORE MODULE FEATURES/DOM EVENT LISTENERS/Key Events"
o Added "CORE MODULE FEATURES/BROWSER ISSUES"
o Added "CORE MODULE FEATURES/STRING TO DOM CONVERSION"
o Added "CORE MODULE FEATURES/MARKUP FRAGMENTS/SVG Fragments"
o Changed "CORE MODULE FEATURES/OTHER NAMESPACES INSIDE XHTML" to "CORE MODULE FEATURES/SVG"
o Added "COMPONENTS/AUTOMATIC COMPONENT BUILD/Other configuration ... as artifacts"
o Added "COMPONENTS/MARKUP DRIVEN MODE IN FORM BASED NODES"
o Added "COMPONENTS/COMPONENTS IN MOBILE DEVICES/BROWSERS"