
Just the day before yesterday, the next version of the most powerful library for building web applications - ExtJS 2.2. What is there new, useful and interesting we now consider. On Habrahabr,
there was already a brief announcement of this event, I will tell you more about all the changes in more detail.
And so, first about new components and features.

A component has appeared - a group of
Radiobox or
Checkbox controls, which can now be specified at once by a group, configured in one or several columns. Interestingly, this component was originally written by one of the community members, and then transferred to the official branch. ExtJS has lately demonstrated amazing flexibility and openness to the developer community, and this release has many components that were originally written as extensions by independent developers, and then, after testing and confirming popularity and relevance, they are included in the distribution itself. This can not but rejoice, since everyone now has the opportunity to join one of the most powerful developments among AJAX libraries.
Finally, one of the most awaited components appeared - History transition management. I also remember how in one big project I wrote a module for navigating the map, so there I had to implement my control and the memory system where we were going. It was a great and interesting job, but now my task would be much simpler. Since it is often the best practice to build applications on ExtJS is to use the same page with the Layout-manager, and new sections are created and dynamically created, tab components are widely used, only with such a component can we fully manage the user’s movement within our application through his usual buttons forward and back. Of course, you could really try and use such a component even earlier, using solutions created for other libraries, connecting ExtJS through an appropriate adapter (for example, jQuery), but such a solution would be much less flexible and require either strong edits to work correctly with same tab component, or would limit application. Now there will be no complications - we have a built-in system for working with history, and we can move around tabs of tabs (with other elements, for example, windows, have not tried yet, although there this behavior does not look the most logical and transparent) using browser controls without leaving page.
')
The following components were again extensions written by third-party developers. This is a list panel with the ability to select multiple items (
Multiselect ), and the more powerful component is
ItemSelector , which has two columns, and we can arbitrarily move items between them, change their order (either using buttons or simply using Drag-n-Drop) , forming an arbitrary structure that can be saved on the server. All components can be used independently or as component parts of forms and will be correctly checked and transmitted along with the rest of the data to the server in the form processor.

Another very expected component -
FileUploadField is now fully supported by forms and can, depending on the settings and design needs, take on the appearance of a simple button, as well as a full-fledged regular control on the choice of file. Of course, the file is selected only after the user himself clicks the button and selects the file, and the standard system dialog box, but now this element can be inserted into any form without the need to use third-party components. It is a pity that there are not some advanced features, such as in other components, for example
SWFileUploader (even if it does not come out in any way with the release version) - for example, I would very much like the ability to download several files, download history and the ability to cancel, control over the process, automatic recognition of the type the file and the substitution of its native icons and much more, but in fact these are trifles - all this can be implemented simply by extending the standard class, because the most difficult is over. Want to do this? Maybe in the next release we will see exactly your component?

Among the less significant changes is the emergence of XML support for the
Tree component. Now we can load the tree and its individual parts not only in JSON format, but also directly into XML, using the
Ext.ux.XmlTreeLoader component. I can not say that this is the most requested property, but in some cases, if we have the entire interface built on the exchange of XML data, this will be very useful.
Now working with maps (or at least displaying them) will become much easier with the component for displaying maps from Google in the Ext.Window window. The
Ext.ux.GMapPanel component
makes it easy to open the necessary maps in new windows and, for example, create geographic or tourist services. Of course, while the functionality is rather limited, there is almost no integration with the rest of the ExtJS components (and I would like to receive coordinates and control the movement using my controls and much more), but this is only the beginning.

Of the major component updates, this is probably all. But what is interesting is that in fact the
Ext.ux.XmlTreeLoader and
Ext.ux.GMapPanel components are not included in the standard distribution, and they are not described in the help system (unfortunately), however, they are in the list of new release features and are in the examples directory , there are also sources. They are still in the namespace for user extensions, but judging by what is included in the official examples, they can be expected in the distribution in the next versions.
Of the key features, it should be noted that full support for the Firefox 3 browser appeared - although earlier in this version ExtJS always worked very, very quickly, but sometimes there were some display artifacts and bugs, now there is full compatibility and improvements in the work of the main components - tables (Grid), the context menus in the Tab component, and also corrected errors in the Window component (related to moving the window, although I never noticed them before). But since it seems that Firefox 3 will now become the main browser (at least for developers), these improvements are good news. At the same time, ExtJS learned to recognize different versions of browsers (for example, FF 2 and 3, different versions of Safari) and to use separate settings to improve compatibility and work correctly in different environments.
Let us turn to less noticeable changes in the internal structure of the library.
The
Ext.base base adapter now uses UTF-8 encoding for sending requests with forms, which will ease the task of developing and supporting multilingual applications.
Ext.core has new properties for identifying various platforms and browser engines (Gesko 2 and 3), minor fixes for displaying widgets on the Mac platform, fixes for working with arrays, improved work with events, in particular, the procedure for registering handlers has been revised with memory leaks, some changes to support future versions of Internet Explorer.
In the components for working with data, an error was fixed with the definition of the modification flag for changed records in Record, a property appeared in the component for working with trees to determine the expansion of a tree node. Many patches in the class for working with dates.
In terms of working with widgets, there are some changes in the
Ext.Components base component, aimed at improving interaction with plug-ins and extensions, multiple improvements in the
DatePicker component of visual selection of dates. The visual text editor now works correctly with scrolling in Firefox 2 and Opera browsers. Very pleased with the emergence of new events and handlers in the
Ext.PagingToolbar component of paginated data
output - now you can handle moving through pages, which, to be honest, really did not suffice. The dynamic tooltip component is now correctly displayed in IE 7. In the
Datefield component
, for working with dates in forms, you can now set both the minimum and maximum selection range dates, as well as specify prohibited dates for selection. They are pleased with the developers' statements that the table mapping code is optimized and it is now clearly faster - often it is the most necessary and most powerful component, and it is used where there is a lot of data, therefore speed is very important for it.
If we sum up all the changes, they are mainly aimed at improving the work with scroll bars in different browsers, changes in work with events and preventing memory leaks, as well as numerous changes to improve work in IE and Firefox on the Mac platform. There are also many changes in all components related to dates.
The result of all this is a new version of an excellent visual library, increased speed and stability of work, some new components, albeit not so much as when moving from 1.x to 2.x branch, but a few of them were very expected and in demand. So if you have a project on ExtJS - be sure to update, of course, after testing your application's work on the new version - although full compatibility with the previous code is stated, but if you often use third-party extensions, you should test them for correct operation.
Source Code (SDK) and Documentation PageExamples pagePS Original material on my blog
Alpha-Beta-Release Blog