Today we’d like to announce the third and final installment of the new features we’re adding to Smart GWT 4.1 / SmartClient 9.1 (this is Part 3 of 3). These features are all ready to use now in the latestÂ nightly builds, and areÂ in addition to the previously announced features from our last two blog posts;Â NewÂ Smart GWT 4.1 / SmartClient 9.1 FeaturesÂ (Part 1 of 3),Â and More Features forÂ Smart GWT 4.1 / SmartClient 9.1Â (Part 2 of 3).
As always, the new features come complete with detailed samples andÂ documentation. Also, please note that our nightly builds are more stable than the wordÂ “nightly” may imply – each nightly build must pass 10’s of thousands of automated tests in order toÂ become available for download.
To try out the new features, you can download the latest nightly builds here:
Smart GWT 4.1d:
If you experience any issues with the new features or have any feedback for us, please post toÂ the Forums. When posting, be sure to indicate that you are using a nightly build, and the exactÂ date of the build.
So, without further ado, here are the final new features you can expect to see inÂ Smart GWT 4.1 / SmartClient 9.1.
Multi-lane Day View
A new mode of the Calendar, enabled via calendar.showDayLanes, allows you toÂ display several “lanes” side by side in the Day View.Â This can be used for side-by-side comparison of scheduled for people, conference rooms,Â vehicles or other scheduled items.Â Events can be dragged between lanes, with automatic persistence to a DataSource when this isÂ done.
Spreadsheet Export Enhancements (Pro Edition and above)
- Force column types: prevents Excel from interpreting string values as numeric or date valuesÂ because they happen to look that way.
- Support for ledge-style / banded rows, and APIs to allow arbitrary control over backgroundÂ color in exports.
- Left/right alignment of values are now exported.
- Column widths are now optionally exported, with an adjustable scaling factor.
- Header heights can be exported so wrapped header titles look appropriate.
“matchesPattern” Search Operator
The “matchesPattern” operator takes a pattern like “foo*txt”, similar to the patterns you useÂ to match names of files in a command-line interface, or to the pattern allowed for the SQL “LIKE” operator.Â The “matchesPattern” operator provides a simpler alternative to the “regexp” (regularÂ expression) search operator, which is too advanced for most end users, and is often notÂ supported by SQL engines (or has cases with unacceptable performance).Â Both client and server-side support has been implemented, with the patternÂ being translated directly to efficient SQL for the JPA, Hibernate and SQL connectors included in Power Edition and above.
In addition, to assist users who have implemented their own server-side support forÂ AdvancedCriteria, an optional flag DataSource.translatePatternOperator has been added that will transform aÂ “matchesPattern” operator into a nested set of “contains”, “startsWith” and “endsWith” operators that are nearly but not perfectly equivalent. This means you canÂ immediately enable support for “matchesPattern” in your application without implementingÂ special support for it.
To try this out, take a look at the “Expression Filter” sample underÂ Grids>>Filtering in eitherÂ the SmartClient Feature Explorer or SmartGWT LGPL Showcase.Â In this screenshot, the “a*a” filter expression selects all countries with two or more “a”s in the name.
Selenium and TestRunner Enhancements
Our Selenium extensions have been enhanced so that record & playback of drag-and-dropÂ interactions now work for many more scenarios without the need to manually insert any eventsÂ into the script.
In addition, a new client-side log category “testReplay” has been added, which is intended to beÂ enabled when playing back Selenium-recorded scripts. Â It provides detailed information aboutÂ why Selenese commands are failing. For example, instead of just finding out that an elementÂ couldn’t be clicked, these logs can show you whether the element was missing from the DOM,Â hidden, blocked by other elements, offscreen, or some other issue.
Finally, the TestRunner tool (Power Edition and above) can now capture and store client- andÂ server-side logs generated during Selenium playback whenever a test fails. This is a huge boonÂ for troubleshooting intermittent bugs that cause tests to fail only once in a long while.
Google App Engine CloudSQL Support
Google App EngineÂ (GAE), a cloud hosting service for Java applications, has added true SQL databaseÂ support with the recent introduction of Google CloudSQL. We’ve added official support forÂ CloudSQL to our SQLDataSource – you can configure and test connection settings for CloudSQLÂ right in the Admin Console, or use database.type:"cloudsql" in yourÂ server.properties file.Â We’ve also added new sample projects, and a wiki article discussing details of using GAE,Â CloudSQL, and other storage options provided by GAE.
Simple Storage for multiple:trueÂ Fields (Pro Edition and above)
A field declared as type="text" multiple="true" contains an Array of simple textÂ values. However, prior versions did not support storing such values to SQL, JPA or Hibernate -Â partly because this would be considered “denormalization”, which makes using database featuresÂ like SQL joins more difficult. Sometimes, though, it is exactly what you want, and now it’sÂ supported!
The setting dataSourceField.multipleStorage gives you a couple of options for exactlyÂ how values are stored, including a simple delimited string or serialization to JSON. Â ThroughÂ some tricky transformation of criteria, multiple:true fields even support limitedÂ server-side search features that cover most common use cases – the documentation forÂ dataSourceField.multipleStorage covers these behaviors in depth.
This feature will also work with custom server-side DataSources, because it’s been implementedÂ as a bi-directional transform that happens right before data is stored, and right after it isÂ retrieved.
<customJQL> for JPA (Power Edition and above)
Similar to existing support for Hibernate, you can now add a <customJQL> tag to anÂ <operationBinding> to invoke a hand-coded JPA query, using Velocity templating to inject dynamic values.
Component XML: New DynamicScreenGenerator Interface (Pro Edition and above)
Component XML screen definitions provide tremendous power and flexibility because they areÂ interpreted at runtime: they can be stored in a database, generated from other formats on-the-fly, or even created and modified by end users to create a runtime-extensible UI.Â The previous release introduced a new RPCManager APIs cacheScreens() andÂ createScreen() that enable batch loading of several screen definitions at once viaÂ the ScreenLoaderServlet.
A new server-side API ScreenLoaderServlet.addDynamicScreenGenerator() allows you toÂ provide screen definitions on the fly to the ScreenLoaderServlet, so you can take advantage ofÂ batch loading of screens even if you are loading or generating your screen definitions atÂ runtime.
A Note for customers with Smart GWT 3.x / SmartClient 8.x Licenses:
Smart GWT 4.x / SmartClient 9.x is a paid upgrade for Smart GWT 3.x / SmartClient 8.x license holders. If you upgraded or purchased licensesÂ on or after November 21, 2012Â then you already have a Smart GWT 4.x / SmartClient 9.x license. Otherwise, pleaseÂ contact usÂ for upgrade pricing.Â Upgrade prices are based upon the date of your previous purchase. Get access to the entire Smart GWT 4.x / SmartClient 9.x series by upgrading now!
You can get more details about the new features in Smart GWT 4.1 / SmartClient 9.1 in our previous two posts;Â NewÂ Smart GWT 4.1 / SmartClient 9.1 FeaturesÂ (Part 1 of 3),Â andÂ More Features forÂ Smart GWT 4.1 / SmartClient 9.1Â (Part 2 of 3).Â As always, please send us any bug reports or feedback inÂ the Forums. Please be clear about what product and version youâ€™re using when reporting issues, including the exact date of the build.
- To order an upgrade from a previous version and for more options, please contactÂ sales.
- For more information about how our licenses work, please see theÂ Product & Licensing FAQ.
DownloadÂ Smart GWT 4.1d orÂ SmartClient 9.1dÂ to get started using our newest features today!
The Isomorphic Team