# Smart GWT Release Notes

- 2.4
- 2.2
- 2.1
- 2.0
- 1.3
- 1.2
- 1.1
- 1.0 b2

## Release Notes for Smart GWT 2.4

- GWT 2.1.1 compatible
- Added Smart GWT QuickStart Guide
- Touch & Mobile support : Support for iPhone, iPad and iPod touch devices with no code changes required
- Offline persistent storage support with seamless integration with DataSource's
- User Defined data highlighting
- Advanced Hover components with built-in hover modes
- New ultralight ‘Simplicity’ skin that is easily customizable and virtually image free
- Performance improvements across the board with significant IE specific performance enhancements
- Several new Showcase samples under the "New Samples" side nav
- ListGrid
  - Per field autoFitWidthApproach now supported
  - Added ListGrid "Auto Fit All" menu option
  - Support for frozen fields and virtual scrolling with record components
  - Various fixes related to the display of cell components in a ListGrid
  - Support for Header Spans when printing
  - Print support for a ListGrid with more than one frozen fields
  - Improved support for printing ListGrid's with embedded components
  - ListGridField's ChangeHandler event is now cancellable
  - Significant performance optimizations to client side Advanced Filtering
  - Added support for LinkURLPrefix and LinkURLSuffix on ListGridField
  - Added support for handling large number of rows in IE 8 non-strict mode
  - Added ListGrid.getCellHoverComponent() to support ListGrid cell hover components
  - New ListGrid flag 'autoFitFieldsFillViewport' to enable / disable the autoFitExpandField behavior
  - Handle a double-click on the ListGrid header menu context button the same as a double click elsewhere on the header button. This means basically auto-fit on double click over the menu button
- TreeGrid
  - Added TreeGrid.showOpener property to not show opener icons at all
  - Fixed TreeGrid.invalidateCache to handle loadDataOnDemand:false trees
  - Fixed gridSummaries for databound TreeGrids
  - Fixed TreeGrid.setViewState(..) not re-selecting nodes
  - Fixed TreeGrid.setSelectionType(MULTIPLE) selection behavior when selectionAppearance is "checkbox"
  - For a cascade selection, loadOnDemand TreeGrid, push a full selection from parent down to the children upon load
- Calendar
  - Added support for 24h based Calendars
  - Calendar fix for issue where two overlapping events less than half an hour in length would be incorrectly rendered
  - Fixed issue where Calendar.scrollToToday scrolls too far
  - Handle the user selecting 0 hours (midnight) for the end date and ensuring the date doesn't end up incremented by more than one day
  - Fixed Calendar issue where events that start and end in the hour starting at 12am caused an error
- SectionStack
  - Only show the 'pointer' cursor over canCollapse:true sections in a SectionStack
- TileGrid
  - Fixed TileGrid printing to work properly for orientation:vertical
  - Fixed TileLayout issue where dragAppearance:'target' was breaking drag and drop
- DynamicForm
  - Fix wrapping of multiple Form Item icons in strict mode
  - Added support for 'setRequired()' on a FormItem at runtime
  - Exposed broswerSpellCheck property on DynamicForm and FormItem for enabling / disabling native browser spell check feature on text boxes
  - Added DateItem.defaultDateChooserDate as a way to specify a default to show in the picker without specifying a default value for the item as a whole
  - Added DynamicForm.getChangedValues() / getOldValues() -- allows you to get at the values remembered by 'rememberValues()'
  - Added FormItem.canFocus property
  - Added TextItem.printFullText attribute - if true, expand the text box to fit content
  - Exposed textMatchStyle on SelectItem explicitly
  - Fixed a DateItem bug whereby everyone in the eastern hemisphere would get off-by-one errors in dateTime items when picking dates from the chooser
  - Fix for bug whereby entering dates into a DateTime item when the date crossed the Daylight Savings Time boundary would lead to the hours getting changed on blur
  - Added support for specifying DateItem.emptyDisplayValue when in text mode
  - Added support for specifying DateItem.showHintInField when in text mode
  - Fix IE specific "blinking" of ComboBoxes on initial select
  - SelectItem with multipleAppearance:"picklist" now supports comma separated formatted output (eg icons)
  - Fixed issue where tabbing into a DateItem in useTextField:true mode caused the value to be saved as null instead of left to default value
- DetailViewer
  - Fixed issue if DetailViewer was given just a singular object as data
- TabSet
  - Support for Tab title user editing (TabSet.canEditTabTitles and Tab.canEditTitle properties)
  - Added TabSet.paneMargin property
- Other
  - i18n enhancements
  - Improved Selenium support
  - Added support for hover components on any Canvas using Canvas.showHoverComponents and overriding getHoverComponent()
  - Fixed bug where dates already in UTC would be applied a UTC offset
  - 36 additional enhancements and bug fixes that were logged in tracker

## Release Notes for Smart GWT 2.2

- Selenium support
- Removed need for setting isomorphicDir variable in host html file
- Support for the prototype pattern where the default attributes of a given Canvas (or subclass) can be user specified by passing a prototypical instance to the static method [Canvas or subclass].setDefaultProperties(Canvas or subclass prototype instance)
- Added DateRangeItem, MiniDateRangeItem and Relative Date support to DynamicForm
- Javadoc enhancements : Over 200 API's now have relevant Showcase example in the @see links
- Several new Showcase samples under the "New Samples" side nav
- ListGrid
  - Performance improvements
  - Editable grid related fixes
  - Added ListGrid.isPartiallySelected(record) API.
  - Changed the default recordComponentPoolingMode to "viewport"
  - Enhancements to make grouping / editing / autoSaveEdits:false work better
  - Setting canFilter:false on an image field now results in no icon in filterEditor
  - With multi-level grouping and groupTitleField set, subgroups now shows indentation
  - Support for showHintInField for editable ListGrid fields
  - Make the "select all" checkbox header be disabled only when all rows aren't cached. As soon as all rows become cached, enable it.
  - For a user-created field, offer a "Remove [summary|formula] field" context menu item that removes the field (not just hides it)
  - Fixed row-numbering when grouped - now skips group-header rows when counting
  - Fixes for unnecessary fetches when scrolling to data provided via an ResultSet initialized with a sparse array
  - Fixed show/hideField and freeze/unfreezeField with recordComponents
  - Fix of issue where shorter total column length than overall grid length was causing the rolloverCanvas to be misaligned
  - Fixed sorting when grouped
  - Fix for issue where rollOver styling could get stuck on the first row edited if modal editing was true
  - Fix for issue where selectionState wasn't properly re-applied after grouping
  - Fixed recordComponentsByCell bug that misaligned controls on scroll
  - Fix getSortState() always returned null for the current sort-field
  - Fix virtualScrolling and recordComponents in the presence of a frozen body
  - Fix for issue where setViewState was not allowing user-shown fields to get passed as visible to the component.
  - With checkbox selection and summary rows, summary rows are no longer selectable (no checkbox appear)
  - Fix issue where checkbox field hover was wrongly appearing for all rows instead of just the checkbox header
  - Fix issue where collapsing a record that also had a recordComponent would remove the first component embedded on the record
- TreeGrid
  - Support separateFolders without forcing sorting by title
  - New attribute sortFoldersBeforeLeaves
  - New property Tree.indexByLevel causes us to maintain an set of indices of nodes, one for each level of the Tree
  - New method Tree.getLevelNodes() returns the set of nodes at a particular level of the Tree, or optionally at a particular level below an arbitrary node in the Tree.
  - Fixed Tree sort normalizer not handling floats correctly
  - Fixes related to reparenting nodes
- FilterBuilder
  - Various enhancements
  - Fixed occasional bad drawing problem in Chrome/Windows and Chrome/Safari/Mac
- DynamicForm
  - Support for FormItem cell height
  - DynamicForm editing of AdvancedCriteria now supported
  - Fix for validation errors not being displayed properly when a FileItem is included on a form
- Other
  - i18n enhancements
  - Multi-property sort support for ResultSet and RecordList
  - Improved TileView print support
  - In Safari / Chrome in strict mode we have to use "pointer" rather than "hand" to get the pointy-finger cursor
  - Fixed Development Mode issue with callbacks having a boolean return value
  - Fixed timezone bug with dateTime formatting
  - Better Transitional Doctype support
  - Dev Console Enhancements : Ability to capture Selenium scLocator string for last clicked element
  - Support DataSource.cacheAllData which causes a DataSource to load and cache all available data for a DataSource the first time there is a request to fetch data.
  - Added DataSource.cacheMaxAge
  - Allow reordering of ResultSets: implement the methods on ResultSet necessary to allow client-side reorder
  - Error reporting improvements. JS stack traces are logged for non-IE browsers as well
  - 20 additional enhancements and bug fixes that were logged in tracker

## Release Notes for Smart GWT 2.1

- GWT 2.0.3 compatible
- New Graphite theme
- ListGrid enhancements
  - Record RollOver controls
  - RollUnder Canvas support
  - Background components
  - Support for arbitrary widgets in cells
  - Ability to display row numbers
  - setMaxExpandedRecords(..) to control max. number of simultaneous expanded records
  - ListGridField.setCanDragResize(), setCanReorder(), setAutoFreeze(), setShouldPrint() API's
  - Checkbox selection with grouping
  - MultiColumn sort enhancements
- TreeGrid enhancements
  - Support for Checkbox tree with Cascade selection
  - Support for tri-state checkboxes (selected, unselected, partial)
  - Performance enhancements
- ToolStrip enhancements
  - Significant improvement in appearance
  - Added ToolStripButton and ToolStripMenuButton classes
  - Vertical ToolStrips
- Print support enhancements
  - ability to control which components display in print view
  - print styling on a per-component basis
  - support print window customizations
  - API for the number of records displayed in print view (can be different from UI view)
- Browser Plugins as widgets
  - Flashlet widget
  - Applet widget
  - ActiveXControl widget
  - SVG widget
- Other Widget enhancements
  - Window : support for footer controls
  - Calendar : control dragability of events
  - New IMenuButton & IPickTreeItem classes with improved appearance
  - AdvancedCriteria enhancements and support for programmatic construction
  - SectionStack drag reordering support
  - FilterBuilder support for working with very large number of fields
  - Convenience FormItem.setRequiredMessage(..) API
  - TileGrids now automatically relayout if a tile resizes
  - Added support for grouping for formula and summary fields
- Performance enhancements
  - Snappier TreeGrid expand / collapse
  - Faster Canvas resize
  - Faster Tab close (deferred destroy)
- Logging of warnings and error to the GWT Developer Console in addition to the Smart GWT Dev. Console.
- Improved exception handling and reporting.
- i18n enhancements
- Showcase enhancements and several new samples under the "New Samples" side nav
- 27 additional enhancements and bug fixes that were logged in tracker

## Release Notes for Smart GWT 2.0

- GWT 2.0 support
- New Enterprise Blue theme, and significant improvements to Enterprise Gray Skin. Other skins deprecated and will have replacements in a future release.
- Theme specific collection of standard Window Icons, Picker Icons and Transfer Button icons as part of the core library.
- MS Excel like MultiColumn sort capabilities for ListGrid
- Support for ListGrid row expansions with in built expansion modes like details, editable form, related records as well as allowing the user to display a custom widget via the override point ListGrid.getExpansionComponent(record)
- Exposed getGridSummary(field) as an override point. This allows you to return an entirely custom summary row value for any field
- Added the following methods to FormItem: setValueFormatter , setEditorValueFormatter and setEditorValueParser. These allow the user to customize the display and parsing of input in a FormItem.
- Enhancements to DetailViewer and TileGrid so better support working interchangeably with the Records from any other DataBoundComponent
- Disabled state of all components fully supported. Missing media added.
- Various enhancements to support IE8 and Safari strict mode
- Support for "center" Layout alignment setting.
- Added DateTimeItem form field type.
- Support for masking DateItem, DateTimeItem and TimeItem input fields.
- Added Canvas.showClickMask(..) to do an 'auto-dismiss on outside click' type behavior on a component
- Fixed overflow issue with ListGrid.addData() under certain circumstances
- Fixed XSD support regression on Chrome / Safari
- Fixed "Too much recursion" issue with ValuesManager
- Fixed WSDL regression
- Javadoc improvements to link to GWT and JDK Javadoc APIs respectively
- Numerous new samples and improvements to the Showcase demo main page
- Various additional enhancements and bug fixes that were logged in tracker
- See the detailed API Changes document

## Release Notes for Smart GWT 1.3

In this release the SmartGwt modules have been slightly refactored so that by default the compile output does not include debug sources, unused resources, developer tools etc. Some users were getting the wrong impression that the size of the compiled output was the size of their application. Most users are probably using either com.smartgwt.SmartGwt or com.smartgwt.SmartGwtNoScript and will be unaffected by this refactoring. You will only notice that the compile output is a lot smaller as it does not include the debug / readable source js files, and the developer console files. The most important change to keep in mind is that in order to use the Developer Console (ie SC.showConsole() ), you will now need to inherit the following module : <inherits name="com.smartgwt.tools.SmartGwtTools"/>

Users that happen be using com.smartgwt.SmartGwtDebug will need to inherit com.smartgwt.debug.SmartGwtDebug instead.

- Grid Summary support from group and columns
- Masking support for form text fields
- Support for user-defined reusable SimpleTypes for use in DataSources (eg ZipCode type)
- In-field hints support for SelectItem, ComboBoxItem and TextAreaItem
- Support for Finnish locale and other i18n enhancements
- TextAreaItem.getSelectedText() support
- Improved support for use of Smart GWT and MVP pattern
- FilterBuilder fixes
- RPCManager enhancements
- Ability to control order of month day and year selector in DateItem
- Various additional enhancements and bug fixes that were logged in tracker
- New examples including a Grid Summary example in the Smart GWT Showcase (see "New Samples" side nav item in the Showcase)

## Release Notes for Smart GWT 1.2

- Significant improvement in integration with core GWT widgets
- Hosted mode performance improvements
- GWT 1.7 support
- Updated Showcase sample to new GWT project structure
- Fully implemented the ResultSet API
- ListGrid performance enhancements
- Full support for Safari 4.0
- I18n enhancements.
- Support for Grid editing with all editors shown
- Auto-loading of dependent XML schema for loadWSDL() and loadXMLSchema()
- Extended WebService APIs to allow simplified input data and allow setting SOAP headers
- Numerous enhancements. See the detailed API Changes document
- enhancements to RPC Tab in Developer Console (shows component that initiated request, if applicable)
- Around 35 additional enhancements and bug fixes that were logged in tracker
- New examples including a mini-app in the Smart GWT Showcase (see "New Samples" side nav item in the Showcase)

## Release Notes for Smart GWT 1.1

- Unified DataBoundComponent interface which is implemented by DynamicForm, ListGrid, TreeGrid, Menu, ColumnTree, TileGrid, DetailViewer and Calendar.
- Consistent representation of a Record which can be used by any DataBoundComponent
- Support for GWT-RPC DataSource with DataBoundComponents
- Various component and skin performance improvements
- Formula and Summary fields: built-in wizards for end users to define formula fields that can compute values using other fields, or summary fields that can combine other fields with intervening / surrounding text. Available in all DataBoundComponents, easy to persist as preferences
- I18n support with resource bundles from 14 locales
- Significant improvements to Javadocs with tons of documentation on various concepts. (over 30MB on disk)
- API's to save and restore the display and selection state of various components to/from the server
- Automatic databound dragging behaviors: grids and trees will now inspect data relations declared in DataSources and automatically “do the right thing” for a databound drag
- Numerous enhancements. See the detailed API Changes document
- Over 50 additional enhancements and bug fixes that were logged in tracker
- Several new events and extension points on various components to allow advanced usage
- A helloworld-1.6 starter project for Smart GWT with GWT 1.6
- Several new examples in the Smart GWT Showcase (see "New Samples" side nav item in the Showcase)

### Key API's added

#### DateUtil

- Ability to globally set the Date input and rendered formats across the application

#### DataBoundComponent

- ability to select / deselect records, fetch / filter data and carry out various other operations on any DataBoundComponent

#### DataSource and DataSourceField

- ability to specify custom field value extractor logic for a given DataSourceField
- API's to control http caching and result batch size
- DataSourceField.setCanSortClientOnly

#### Window

- listeners for minimize, maximize, restore and close

#### Calendar

- support for customizing event edit dialog fields
- event remove listener

#### Forms

- convenience constructors for various FormItems
- support for customizing form field and title tooltips
- TextItem : support for character casing and entry restrictions (regexp based)
- TextItem : support for hints displayed in-field
- ComboBoxItem : fetchDelay setting
- AutoFitTextAreaItem: autofits to contained text as the user types

#### Column Tree (Miller Columns)

- added node selected listener

#### ListGrid

- Grouping modes: built-in and custom grouping modes, such as the ability to group a date column by week, day, month or year
- added header click listener
- added record drop listener
- ability to customize grid groupings by record values and also group title
- support for adding custom formula and summary fields on the fly
- ability to register custom handler to control visibility of a ListGridField
- added ListGridField.setCanFreeze, ListGridField.setCanSort

#### SectionStack (Accordion)

- added section header click event

#### TreeGrid

- added folder drop listener
- ability to override getIcon() / getNodeTitle() to allow users to have custom node icon / title logic

## Release Notes for Smart GWT 1.0 b2

- GWT 1.6 M1 and M2 support. GWT 1.5.3 continues to be fully supported.
- New lightweight Enterprise Gray skin
- Performance improvements
- various API enhancements and bug fixes
- complete support for WebServices (WSDL)
- Additional Developer Tools (Inspect DOM and monitor RPC calls from hosted mode)
- Portal support and samples
- HTML based Print Preview support. No longer requires JSP.
- Support for auto-arranging and overlapping Calendar events
- Support for checkbox selection for ListGrids
- improved support for users to wire DataSource's with GWT-RPC calls
- Improved javadocs
- Separated additional skins into a smartgwt-skins.jar
- Chrome, Firefox 3.1, and OSX hosted mode support

## Release Notes for Smart GWT 1.0 b1

Initial Release

GWT 1.5.3 (or greater) required