Quantcast
Channel: SmartGWT – The Isomorphic Software Blog
Viewing all 87 articles
Browse latest View live

Server Scripting

$
0
0

What is it?

Server Scripting allows you to embed code snippets directly in DataSource XML (.ds.xml) files for implementation of simple server-side business logic. These code snippets, or “scriptlets”, enable you to insert code right next to the affected definition without having to create a separate file or class to hold the logic. This simplifies development and speeds up testing by eliminating the need to compile and restart. You can write scriplets in any JSR 223 compatible language, including Java itself, as well as other languages such as Groovy, JavaScript, Velocity, Python, Ruby, Scala or Clojure.

Why use it?

Scriplets have several major advantages over using <serverObject> to call a normal Java method.

  • Simplicity and Clarity

    Scriptlets put business logic right next to the relevant persistence operation instead of in a separate .java file.

  • Faster Development Cycle

    Scriptlets are compiled and executed dynamically, so you don’t need to recompile or redeploy server code to try out changes. Just edit your DataSource, then reload the page or retry the operation. Our framework will automatically detect the modified DataSource and uses the updated scriptlet. Note that scriplets are only recompiled when you change them, so they’ll only be compiled once in the final deployment of your application.

Java as a “scripting language”

The ability to use Java as a “scripting language” is particularly powerful:

  • Developers do not have to know more than one language to work with the code for your application.
  • Scriptlets can easily be moved into normal .java files if they are identified as reusable, become too large to manage in a .ds.xml file, or if the (small) performance boost of compiling them to .class files is desired.  There is no need to translate from some other language into Java.

For these reasons we recommend using Server Scripting with Java – even for teams that would not normally consider adopting a “scripting language”.

Examples

The two primary use cases for server scripting are:

  • DMI Scriptlets

    Direct Method Invocation (DMI) scriptlets are declared by adding a <script> tag to an <operationBinding> or <DataSource> tag.  Like DMI logic declared via <serverObject>, DMI scriptlets can be used to add business logic by modifying the DSRequest before it is executed, modifying the default DSResponse, or taking other, unrelated actions.

  • Scriptlet Validators

    Scriplet Validators are declared by adding a <serverCondition> tag to a <validator> definition.  Like a validator declared via <serverObject>, a scriptlet validator defines whether data is valid by running arbitrary logic, then returning true or false.

For example, the following DMI scriptlet enforces a security constraint where all operations on the DataSource will involve the sessionId so a user can only view and modify their own records.

Example of Direct Method Invocation (DMI) scriplet code

DMI Scriplet example

There is no need for a formal class or method definition even though Java is used – the context of a DMI Script is always the same, and the Server Scripting system avoids the need to add this “boilerplate code”.

For more information and examples, please download the latest Smart GWT 3.1d or SmartClient 8.3d nightly builds.

  • Detailed examples for both Smart GWT and SmartClient can be found in the Examples folder under Server Examples >> Server Scripting.
  • SmartClient Documentation can be found in the SmartClient Reference under Concepts >> Server Scripting.
  • Smart GWT Documentation can be found in the JavaDoc under com.smartgwt.client.docs.ServerScript.

Pre-requisites

  • Server Scripting will be available in Pro Edition and above for Smart GWT 3.1 and SmartClient 8.3 (coming soon).
  • A Note for Smart GWT customers with 2.x Licenses: Smart GWT 3.x is a paid upgrade for Smart GWT 2.x license holders, and upgrade prices are based upon the date of your previous purchase. If you bought recently you may be eligible for a discount. Get access to the entire 3.x series by upgrading now! For a quote, please contact sales.

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.

This feature is nearly complete and can be evaluated now in our Smart GWT 3.x and SmartClient 8.x nightly builds, complete with samples and documentation. Download Smart GWT 3.x or SmartClient 8.x to get started using this new feature today!

Enjoy!

The Isomorphic Team


CSS3 Mode

$
0
0

What is it?

Our three most commonly used skins (Enterprise, Enterprise Blue and Graphite) now have a “CSS3 mode” that replaces almost all images required for the skin with CSS3 settings that look nearly identical to the image-based appearance. This results in a performance boost both through a simplified Document Object Model (DOM) and by loading far fewer images than before.

CSS3 mode is used by default in modern browsers such as Firefox, Chrome and Safari. However, Internet Explorer 9 does not have sufficient CSS support to closely match the existing image-based skin, so CSS3 mode is not enabled by default. If CSS3 mode is manually enabled for IE, this will result in a degraded appearance that is similar across IE6, 7, 8 and 9. For example, rounded elements such as tabs will become square, and gradient backgrounds will have subtly lower quality due to IE’s lack of CSS color stop support.

How does it work?

To override the default decision on whether to use CSS3 support, set the JavaScript global variable <code>isc_css3Mode</code> before any of the SmartClient libraries are loaded. For example:

<script>isc_css3Mode = "on";</script>

There are three CSS3 mode settings:

  • “supported”

    (default setting) CSS3 mode will only be used for fully supported browsers (including rounded edges and full gradient support)

  • “on”

    CSS3 mode will always be used for all browsers

  • “off”

    CSS3 mode will never be used for all browsers

If you want more control than these settings provide, you can create a custom skin based on one of the above three skins and modify load_skin.js. The JavaScript variable useCSS3 defined in load_skin.js controls whether CSS3 mode is used.

A Note for Internet Explorer 9:  We are working on improving IE9 support with the limited CSS3 features provided by this browser. However, the well-published workarounds for IE9′s CSS3 bugs create other bugs of their own that are, as yet, unresolved.

Examples

In the examples below, images rendered with CSS3 mode “on” or “off” are basically identical without a magnifying glass.

SmartClient "Hello World" buttons with CSS3 mode turned on or off.

Hello World

Editing HTML example with CSS3 mode "on" (Enterprise skin)

Editing HTML with CSS3 mode "on" (Enterprise skin)

Editing HTML example with CSS3 mode "off" (Enterprise skin)

Editing HTML with CSS3 mode "off" (Enterprise skin)

For more information, please download the latest Smart GWT 3.1d or SmartClient 8.3d nightly builds. SmartClient Documentation can be found in the SmartClient Reference under Concepts >> Skinning / Theming.

Licensing

  • CSS3 mode will be available for Smart GWT 3.1 and SmartClient 8.3 (coming soon).
  • A Note for Smart GWT customers with 2.x Licenses: Smart GWT 3.x is a paid upgrade for Smart GWT 2.x license holders, and upgrade prices are based upon the date of your previous purchase. If you bought recently you may be eligible for a discount. Get access to the entire 3.x series by upgrading now! For a quote, please contact sales.

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.

This feature is nearly complete and can be evaluated now in our Smart GWT 3.x and SmartClient 8.3x nightly builds, complete with samples and documentation. Download Smart GWT 3.x or SmartClient 8.x to get started using this new feature today!

Enjoy!

The Isomorphic Team

Advanced HTML5 interfaces for .NET

$
0
0

If you’re a .NET developer or you know a .NET developer, you may have heard about the confusing situation facing enterprise web developers on the .NET platform:

SmartClient and Smart GWT provide the powerful HTML5 components needed to build modern business web applications, and now we have provided a free sample server implementation for ASP.NET MVC, with an extensive, multi-part tutorial showing how it works!

The server implementation & tutorial cover:

  1. Using NHibernate to implement all CRUD operations (create, retrieve, update and delete) with a REST interface
  2. Implementing data paging / load-on-demand
  3. Supporting search and sort: both simple criteria and AdvancedCriteria
  4. Using transactions for interactions like multi-row editing in a grid
  5. A data-driven approach that can access new NHibernate entities without writing any code

This server implementation works with the free, open source, LGPL Edition of SmartClient or Smart GWT, so the entire client and server solution is free and open source.

Further, commercial support is also available – there is no need to buy a license, and we can help you with the sample server code as well.

To view the tutorial and download the server code as a Visual Studio project, start here:

http://wiki.smartclient.com/display/Main/Integrating+with+ASP.Net+MVC

To find out more about our Support offerings and sign up, start here:

http://www.smartclient.com/services/index.jsp#support

Enjoy!

The Isomorphic Team

Connecting the CubeGrid with Pentaho Mondrian, JasperReports and Microsoft Analysis Services

$
0
0

Why use the CubeGrid?

Popular Online Analytical Analytical Processing (OLAP) server technologies such as Pentaho Mondrian Project, JasperReports, and Microsoft SQL Server Analysis Services (SSAS) enable business users to analyze large quantities of data, offering features such as drilling into and cross-tabulating information from complex analytical queries in real-time. However, the default user interfaces (UIs) are limited, and it can be difficult or impossible to add the additional behaviors that are typically needed when integrating with a larger application. Connecting CubeGrid APIs to these multidimensional, or ‘cube’, data sources will allow you to:

  • Create a more powerful and higher performance UI to replace the built-in UIs, and

  • Seamlessly integrate custom OLAP interfaces into your larger applications.

The CubeGrid is a high-end data analysis engine that wraps OLAP functionality into a single Smart GWT or SmartClient interactive grid component for fast access to multidimensional data and calculations. Please see our previous post, Introducing the CubeGrid, for more information about the advanced OLAP features in our Analytics Module.

This article explains how to connect the CubeGrid user interface to several common sources of cube data using MDX, XMLA, and OLAP4J.

  • MDX (MultiDimensional eXpressions) is a query language for multidimensional databases, in the same way SQL is used to query relational databases.
  • OLAP4J is an open Java API for OLAP, similar to JDBC, but specifically created to access multidimensional datasets.

Server Technology Overview

  • Pentaho Mondrian Project (Community Edition) is an open source OLAP server written in Java and available under the Eclipse Public License (EPL). Mondrian enables interactive analysis of very large datasets stored in SQL databases without writing SQL. It supports the MDX (multidimensional expressions) query language, plus the XMLA and OLAP4J interface specifications. It reads from SQL (and other data sources) and aggregates data in a memory cache.
  • JasperReports Server (Community Edition) is an open source, stand-alone and embeddable OLAP reporting server written in Java and available under the GNU General Public License (GPL). JasperReports Server enables delivery of information on a real-time or scheduled basis to the web, printers, or a variety of file formats, including; PDF, HTML, Microsoft Excel, RTF, ODT, XML, or comma-separated values. JasperReports Server uses the same Mondrian OLAP engine as Pentaho Mondrian Project, and can be integrated with the CubeGrid using a similar methodology.
  • Microsoft SQL Server Analysis Services (SSAS) is available as a part of Microsoft SQL Server, a proprietary RDBMS written in C++ and sold in a wide variety of commercial and free editions. SQL Server Analysis Services adds OLAP and data mining capabilities for SQL Server databases. Microsoft’s OLAP engine supports MOLAP, ROLAP and HOLAP storage modes for data, and supports the XMLA standard as the underlying communication protocol. Cube data can be accessed using MDX and LINQ queries, and data mining specific functionality is exposed via the DMX query language.
OLAP Server Company Version Language License
Pentaho Mondrian Server Pentaho 3.4.0 Java EPL
JasperReports Server JasperSoft 4.5.0 Java GPL
Microsoft SQL Server Microsoft 2012 C++ Proprietary

Connecting the CubeGrid

Multidimensional data sets are called Data Cubes, which consist of features or attributes called Dimensions.  Each corresponding Dimension will also have feature values or attribute values called Members. These definitions have analogous nomenclature in the CubeGrid, as shown in the table below:

OLAP CubeGrid Definition
Data Cube Cube Multidimensional dataset
Dimension Facet Dimension, attribute, or feature
Member Facet Value Dimension member, attribute value, or feature value

On the server side, we first need to set up our DataSources to fetch the necessary data. We have four Java Classes for our DataSources:

  • OLAPDataSourceCubes gets all available Data Cubes in the OLAP database.
  • OLAPDataSourceDimensions gets all available Dimensions for the selected Data Cube (for placement on rows or columns in the CubeGrid).
  • OLAPDataSourceMembers gets all available Members for the selected Dimension, with only one call to the server.
  • OLAPDataSource gets all available data with a query based on the MDX Object Model.

The selected Data Cube and Dimensions are sent from client to server as criteria obtained from DSRequest.

Lastly, the DBConnection Java Class is required for connection to the chosen OLAP server. There are three variations of the getConnection() method:

  • getConnection() creates an OLAP connection to Mondrian server by default. For this example, we used the “FoodMart” sample dataset included with Mondrian.
  • getConnectionJasper() creates an OLAP connection to JasperReports Server. To use this method, first rename getConnectionJasper() to getConnection(). For this example, we used the sample dataset included with JasperReports Server.
  • getConnectionAServices() creates an OLAP connection to Microsoft Analysis Services. To use this method, first rename getConnectionAServices to getConnection(). For this example, we used the Adventure Works samples referenced below.

On the client side, we already have the code required to interface with the CubeGrid. This is very similar to the Advanced Cube sample in the Showcase, except that Data Cubes, Dimensions and associated Members are fetched dynamically.

The software versions used in this sample are:

Download the project source code used in the examples here.

Examples

Lastly, we’ll show a few images of the Project in action.

Figure 1: Creating the CubeGrid from a connected OLAP server (from left to right)

  • Opening screen for Data Cube selection
  • Select Data Cube from the OLAP Server
  • Select Dimensions (Facets) of the Data Cube for placement on rows and columns
  • Select ‘Create CubeGrid’
Creating the CubeGrid

Figure 1: Creating the CubeGrid

Figure 2: The newly created CubeGrid with Control Panel for Dimension (Facet) manipulation

Opening Screen for the CubeGrid

Figure 2: Opening Screen for the CubeGrid

Figure 3: View Members (Facet Values) of selected Dimensions (Facets) using the Control Panel

View Members of selected Dimensions in the CubeGrid

Figure 3: View Members of selected Dimensions in the CubeGrid

Figure 4: Reposition Dimensions (Facets) on the fly for alternate views

Alternate View of the CubeGrid

Figure 4: Alternate View of the CubeGrid

Note that the UI shown above is built out of ordinary SmartGWT components such as ListGrids and Menus (and of course the CubeGrid). This means that, unlike the pre-built UIs bundled with OLAP products, the UI shown above can be easily rearranged and extended. For example, you could add context menus that launch application-specific actions when the user right-clicks on data or dimension values.

Please Note: Some Dimensions in the test cubes are very large and not collapsible due to their non-hierarchical nature. For example, the ‘Customers’ dimension in the ‘Sales’ cube sample for Mondrian shows all values. As a result, the cube may become difficult to navigate or show a slow scripts browser warning. The recommended way to avoid this is to require that the end user choose specific members from large dimensions before adding them to the cube.

Pre-requisites

  • The sample application shown above is open source and free to use. You can download the project source code used in the examples here.

Download the Smart GWT or SmartClient Evaluation to get started using our advanced analytics today!

Enjoy,

The Isomorphic Team

Announcing Smart GWT 3.1 / SmartClient 8.3 Release Candidate, New Features

$
0
0

We’re pleased to announce that SmartGWT 3.1/SmartClient 8.3 has officially achieved ‘release candidate’ status. We’ve seen zero release-blocking bugs multiple times in the last week, so we expect the upcoming final version to be released in 2-3 weeks. As a result, we recommend that anyone currently developing with Smart GWT 3.x or SmartClient 8.x switch over to the new release now unless you’re on the verge of completing your application.

Please use the following links to download the new release:

Please Note: There isn’t any special build labeled “RC”. In order to get the release candidate, please download the latest 3.1d or 8.3d nightly builds.

In addition, we’ve added several new major features since our last roadmap announcement, and listed them below.

New Features

  • Multi-Axis HTML5 Charts

    HTML5 Charts now support multiple vertical axes, each with their own gradations. These types of charts can be used to show values with different units (e.g. sales in dollars vs. total units shipped), and/or very different ranges (e.g. gross revenue vs. profit) on the same chart.

    Triple-axis and quad-axis charts are also supported, and it’s now possible to render data in any mix of styles (e.g. lines over columns over area).

    Dual-Axis HTML5 Chart

    Example of Dual-Axis HTML5 Chart

  • Scatter Charts

    Scatter charts can now show data sets with two continuously varying axes, such as plotting the age and weight of a set of people. In addition, multiple data sets can now be shown in different colors.

    Scatter Chart Upgrade

    Example of Scatter Chart Upgrade

  • Multi-Select ComboBox

    This new control combines the type-ahead completion interface of a classic ComboBox with multiple item selection. Several options are provided for displaying previously chosen items, allowing the control to fit in a variety of different contexts. Load-on-demand is supported for working with large data sets.

    MultiComboBox in "flow" mode

    Example of MultiComboBox in “flow” mode

    MultiComboBoxItem "Vertical Reverse" mode

    Example of MultiComboBoxItem in “vertical reverse” mode

  • Selenium Upgrades

    Scripts recorded in the Selenium IDE now insert intelligent, automatic waits. This eliminates the need to insert manual wait commands into recorded scripts, or run scripts with long delays between commands.

    The automatically inserted wait commands are also smarter. Rather than just waiting for DOM elements to appear, they understand application-level concerns such as waiting for modal operations to complete before proceeding.

    A greatly expanded Using Selenium user guide covers best practices, using custom commands, advanced APIs, running Selenium under JUnit and more.

  • Multi-Level HeaderSpans (with auto-fitting)

    You can now have as many levels of ‘header spans’ as you like (not just two). Header spans also support auto-fitting to titles.

  • Composite Primary Keys

    ListGrid editing now supports DataSources with ‘composite’ primary keys, meaning two or more fields can be required to uniquely identify a record.

    Server-side, SQL, JPA and Hibernate connectors also support composite keys.

  • Row Spanning Cells in Grids

    Grids will now allow cells to span multiple rows, providing a handy way to visually emphasize aggregation, or common values between rows.

  • Fiscal year Awareness

    You can now declare a fiscal calendar to be used throughout your application, and date pickers will present an enhanced interface oriented toward weeks of the fiscal year.

  • CubeGrid Single-Axis Load on Demand

    The CubeGrid has the ability to load data on demand, and also has the ability to automatically hide empty rows or columns in an incomplete data cube (where not all dimension values can be crossed with all other dimension values). However, until now these two capabilities were mutually exclusive: we couldn’t determine if a row was empty without complete data.

    A new setting:

    hideEmptyAxis: "row" | "column"

    allows you to declare that load-on-demand will be used for only one axis so that empty rows or columns on the other axis can still be automatically hidden.

  • More HTML5 Charts Upgrades

    A new setting:

    showValueOnHover

    can be enabled to show the value nearest to the mouse pointer when a user hovers over a chart.

    Overlays use our general-purpose Drawing API to show additional graphical elements on top of a chart. A sample of this has been added under Charting -> Adding Elements.

    Export to PDF is now supported for IE8 and earlier.

  • RTL Support

    Adds support for languages that are read from ‘right-to-left’, such as Hebrew or Arabic. Previously announced as a 3.x / 8.x feature, we can now confirm that this is a supported capability for the 3.1 / 8.3 release.

A Note for Smart GWT customers with 2.x Licenses

Smart GWT 3.x is a paid upgrade for Smart GWT 2.x license holders, and upgrade prices are based upon the date of your previous purchase. If you bought 2.x recently you may be eligible for a significant discount, so don’t delay. Get access to the entire 3.x series by upgrading today. For a quote, please contact sales.

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.

Download Smart GWT 3.1 or SmartClient 8.3 to get started using our new features now!

Enjoy!

The Isomorphic Team

Smart GWT 3.1 / SmartClient 8.3 Released and 30% off Holiday Sale

$
0
0

We are pleased to announce that Smart GWT 3.1 and SmartClient 8.3 have been released! In celebration of the release, you have the opportunity to purchase new licenses or upgrade existing licenses at 30% off until the end of the year.

The new release is a massive leap forward, and includes a dizzying array of new features. The list below only includes the major new features, so please see the changelog.html file in the SDK for a complete rundown of the latest features, bug fixes, and enhancements.

Download the new releases today!

Feature List

Dual-Axis HTML5 Chart

Example of Dual-Axis HTML5 Chart

  • Cell-Level Selection:  ListGrid now supports cell-level selection by setting canSelectCells:true. Click and drag to highlight blocks of cells, and select or deselect individual cells in the grid.
  • Excel Copy and Paste:  Copy and paste tabular data between Grids and Excel (or similar spreadsheet applications). Grid to Excel, Grid to Grid, and Excel to Grid copy and paste are all supported.
  • Timeline:  A Calendar widget for visualizing schedules, assigning tasks, or other horizontal displays of time-based information. Timeline supports drag to move or re-size events, hover for more detail, and editing by clicking events in the timeline.
Timeline Calendar Widget

Timeline

  • Component XML Improvements and Documentation:  Define screens or parts of screens in XML, including on-the-fly loading from dynamic storage such as a database. Complete with simplified APIs and more comprehensive documentation.
  • More Powerful SimpleTypes:  SimpleTypes previously allowed you to define a reusable atomic field type such as a zipCode or emailAddress. The SimpleType API can now define custom sorting and filtering behaviors, and the underlying stored value can be a custom object rather than just an atomic type such as String.
  • RTL Support:  RTL stands for “right-to-left” and is a key component when delivering an application in a language such as Hebrew or Arabic. RTL mode will horizontally flip the content layouts and ordering so that layouts reverse stacking order and show scrollbars to the left of every window.
  • CSS3 skins:  Existing skins have been upgraded with a ‘CSS3 mode’. CSS3 skins have the same look and feel as current skins on modern browsers, but use radically less media, have a simpler Document Object Model (DOM) for faster rendering, and are easier to modify.
  • Gauge Widget:  Speedometer-like display with configurable sectors, tick marks, labels, needle position and colors based on the Drawing module.
Gauge Widget

Gauge Widget

  • Scatter Charts:  Scatter charts show data sets with two continuously varying axes, such as plotting the age and weight of a set of people. In addition, multiple data sets can now be shown in different colors.
  • Multi-Select ComboBox:  This new control combines the type-ahead completion interface of a classic ComboBox with multiple item selection. Several options are provided for displaying previously chosen items, allowing the control to fit in a variety of different contexts. Load-on-demand is supported for working with large data sets.
  • Selenium Upgrades:  Scripts recorded in the Selenium IDE now insert intelligent, automatic waits. This eliminates the need to insert manual wait commands into recorded scripts, or run scripts with long delays between commands.
  • Row Spanning Cells in Grids:  Grids will now allow cells to span multiple rows, providing a handy way to visually emphasize aggregation, or common values between rows.
  • Fiscal Year Awareness:  You can now declare a fiscal calendar to be used throughout your application, and date pickers will present an enhanced interface oriented toward weeks of the fiscal year.
  • CubeGrid Single-Axis Load on Demand:  The CubeGrid has the ability to load data on demand, and also has the ability to automatically hide empty rows or columns in an incomplete data cube (where not all dimension values can be crossed with all other dimension values). However, until now these two capabilities were mutually exclusive: we couldn’t determine if a row was empty without complete data.
  • Improved HTML5 Charts:  Printing support including export to PDF, built-in hovers, examples of adding your own elements and interactivity, new ‘skinning’ API’s to enhance control over fonts, colors, shadows and more.

You can learn more about Smart GWT 3.1 and SmartClient 8.3 in our Feature Roadmap and Release Candidate announcements. 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.

30% Sale Pricing

*Starting on release day, ending on 12/31/2012.

LGPL PRO POWER ENTERPRISE
Free $522 $745 per developer
(30% off)
$1365 $1950 per developer
(30% off)
Choose: Per Developer
or Per CPU
or Flat Rate
Download Now
Free
Download Now
Free, Full-Featured 60-day trial
Download Now
Free, Full-Featured 60-day trial
Download Now
Free, Full-Featured 60-day trial
Buy Now
1 Pro License
$522
$745
(30% off)
Buy Now
1 Power License
$1365
$1950
(30% off)
Get Quote
Ready to buy?
Buy Now
4 Pro Licenses
$2086
$2980
(30% off)
Buy Now
4 Power Licenses
$5460
$7800
(30% off)
Buy Now
10 Pro Licenses
$5215
$7450
(30% off)
Buy Now
10 Power Licenses
$13650
$19500
(30% off)
  • 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 3.1 or SmartClient 8.3 to get started using our new features today!

Enjoy!

The Isomorphic Team

Why Upgrade from LGPL?

$
0
0

Why Upgrade?

If you’re a user of the free LGPL version of our products, you may be wondering if now is the right time to upgrade to a full version. Most users don’t realize how many immediate benefits come from an upgrade to Pro or above, without the need to rework how your application functions.

This is a rare opportunity to purchase new licenses and optional modules at 30% off until the end of the year. If you are upgrading an existing Pro, Power, or Enterprise license from a previous version, we’ll stack an additional 30% discount on top of the discount you receive for owning a qualifying older license. Contact sales for an upgrade quote today!

Benefits of upgrading to Pro+ Edition

1.  Export to Excel and other formats

Whether you’re using REST-based integration, GWT-RPC or something custom – you can export to Excel and other formats as soon as you install our server .jars and servlets without reworking how your application loads data. This approach, called a “client-driven export”, works with any ListGrid or TreeGrid and only requires a single method call – listGrid.exportClientData().

2.  Print to PDF

Make any printable screen into a .PDF without reworking your application in any way, again using a single method call – RPCManager.exportContent(). Server-side APIs allow you to capture the generated PDF so that you can attach it to email, save it to disk, or whatever else you need. This feature makes any UI you build into a simple “report”, and may obviate the need to install and configure separate reporting packages.

3.  Charts

Pro Edition and above include our HTML5 charting engine, with powerful features like:

You could argue indefinitely about the relative merits of our built-in engine vs. other commercial packages you could integrate into your application. However, any quality add-on from a third party would cost nearly as much as a Pro license, but only give you charts. In addition, you’d have to integrate it yourself with possibly serious technical hurdles around printing, export to PDF, drag and drop with other components, and other things that our built-in charts do automatically.

The charting engine in Pro+ Edition is a no-brainer decision for anyone who currently uses the LGPL Edition and needs charts.

4.  Reify (and other tools)

Reify allows you to transform Balsamiq mockups into working screens backed by clean, clear code. Screens imported via Reify can be added to an existing application without changing its data binding approaches or architecture in any way. Components in Reify screens can connect to RestDataSource or any other type of DataSource, and screens generated in Reify can be placed into layouts and other containers created in a normal hand-coded application.

 Reify lets you keep everything you’ve already built, and add new functionality with a radically improved and more efficient process.

5.  Peace of mind

Many corporate legal departments are allergic to OSS licenses and would prefer to see a standard commercial license. But, perhaps more importantly, any innovative company today is exposed to tremendous risk from “patent trolls” – litigious companies that holding dubious patents and make a business out of suing other companies. Legal defense costs can easily run into the millions, even when the lawsuit is baseless.

    • Do you have staff that can provide clear evidence that a web-related patent is invalid due to prior art?
    • If the best option is to give in and settle even when you’re in the right, are you prepared to create and maintain a fork of our products in order to avoid the bogus patents at issue?

Among other “peace of mind” terms, Enterprise licenses allow you to secure Isomorphic’s future assistance in such matters before the issue comes up.

More benefits in the future

These are just the immediate benefits you get from upgrading to Pro+ Edition, without reworking any of your existing code. Longer term, you can incrementally switch over to using more features, still with a minimum amount of rework.

For example, you can convert a RestDataSource or other client-side DataSource to a server-based DataSource, but still use DMI to call existing business logic. This gives you access to a wide variety of server features, including; Declarative Security, Server-side Validation, and Transaction Chaining and allows you to delete a lot of repetitive, “boilerplate” code. This approach leaves your actual business and persistence logic intact and unchanged, and can even be done on an incremental, screen-by-screen or DataSource-by-DataSource basis.

How to make it happen

Are you an engineer wishing you could use the more advanced versions of our software, and frustrated by your company re-implementing the features of Pro+?  Out of the features above, we feel that the Reify tool and this intro video will play best with management, but don’t discount the power of argument #5 (Peace of Mind). Strange as it may seem, raising the legal and risk-related benefits of a relationship with Isomorphic may be the way you get the upgrade you want.

Now is the perfect time to buy one of our commercial licenses and super-charge your applications, so don’t delay. Buy online, or contact sales for a quote today!

Enjoy!

The Isomorphic Team

Go from Mockup to Code with Reify

$
0
0

We’re big fans of wireframe mockup tools, so we’re excited to announce a new tool that generates SmartClient and Smart GWT code from mockups in one easy step. It’s called Reify – an actual English word meaning “to make something abstract more real or concrete”. Design using a wireframe mockup tool like Balsamiq, then use Reify to instantly transform exported mockups into working screens backed by clean, clear code that follows our best practices.

There are already several tools available that can turn mockups into simple interactive web pages, PDFs, and other formats so they can be more easily shared. That’s not what Reify does.

Instead, Reify deeply analyzes your mockups and produces source code similar to what a developer might write by hand. This allows your team to skip over the phase of painstakingly recreating the UI shown in the mockup, and move directly to adding business logic and data binding.

Watch the Video

Reify Video Thumbnail

Use the tools you already know.

Many teams already use simple wire-framing tools such as Balsamiq to create, edit, and share mockups of new user interfaces as part of the design process. This allows any product manager, business analyst, project manager, or end user to directly contribute to application design using an intuitive tool. Balsamiq also enables your team to host, collaborate and iterate your UX projects on or offline before settling on a design for development.

Don’t re-create. Re-use.

Reify allows you to get much more out of your mockups. Normally, when a mockup is handed off for implementation, your developers needed to laboriously duplicate the mockup in actual code – one screen at a time. This is an enormous waste of time and effort, and typically causes extra iterations as developers inevitably miss subtle but important details. With Reify, you can go straight from a mockup to working code that reproduces your intended design.

Balsamiq mockup imported by Reify

Use Reify with any mockup.

You can benefit from Reify even if your organization doesn’t currently use Balsamiq for mockups. If you receive mockups in another format (such as a file from an image editing tool or HTML page), use Balsamiq to build a new mockup with Reify continuously showing you the resulting screen on the fly. It’s like sketching on a digital whiteboard with an Isomorphic engineer implementing your design in real-time.

How does it work?

In Balsamiq, placing a widget on top of a window or tab is enough for the mockup to look right. However, working applications need to know that a widget is contained by a tab or window, or the wrong thing will happen when the screen is resized or the window dragged.

Reify deeply analyzes your mockup to discover the relationships that are implied by the way you arranged widgets. Containment relationships are automatically discovered, labels are automatically associated with input controls, input controls are automatically grouped into logical forms, and aligned components are grouped into flexible layouts that respond as expected to browser resizes.

Reify even compensates for imprecision in mockups by recognizing that a set of controls is meant to be perfectly aligned even if the mockup is a few pixels off, and recognizing that the intended size of a control is its visible size, not the size of its (invisible) bounding box.

Clean, Extensible Code

Tools that generate code often produce awful results that cannot be meaningfully extended. Reify is different.

Reify outputs screens in Isomorphic’s Component XML format, a concise, declarative format similar to Flash’s MXML or Microsoft’s XAML. Reify makes great efforts to produce clean, minimal code. For example, if a component gets its size from its container, Reify won’t output the redundant size information on the component. More generally, Reify will avoid outputting code that would set a property to its default value.

Screens created by Reify can be connected to real data sources in one step, and event handlers and business logic can be added while keeping the screen definition in XML. This enables a clean separation between layout and logic, and allows non-developers to understand and modify screen layout without breaking business logic.

No Limits

You can easily mix and match between screens imported via Reify and classic hand-coded screens and layouts. For example, if you have created a highly dynamic, portal-style layout manager that couldn’t be built just with XML, you can still use Reify to create portlets, wizards, and other screens controlled by your advanced layout manager.

Or, you can create a screen that has a placeholder for a dynamically generated component, and insert that component programmatically after the Reify-created screen is loaded.

Imported widgets, imported screens, and hand-coded screens using Reify

Reify lets you maintain any part of your application in easy-to-read, easy-to-modify XML, while still allowing advanced, data driven techniques to be used wherever appropriate – the best of both worlds.

Get Started

You can Try Reify online, without installing anything, at the live demo site! Here are two sample mockups so you can try it right now (Sample 1: Resize bars & Layouts; Sample 2: Navigation, Charts). Or, if you’re ready to get started then download our free 60-day trial.

Licensing

  • Reify is available in Smart GWT 3.1 and SmartClient 8.3 Pro Edition and above.
  • Note to existing Smart GWT 2.x Users: 3.x is a paid upgrade for 2.x license holders. Upgrade discounts may vary, and are based upon the date of your last purchase. For a quote please contact sales.

Enhance Reify to meet your needs

Would Reify fit perfectly into your workflow if it had just one more feature? You can have it added! As with our other products, we have a Feature Sponsorship program that allows you to fund development of new features.

Enjoy!

The Isomorphic Team


Smart GWT 4.x / SmartClient 9.x Feature Roadmap

$
0
0

Today we’re pleased to announce the feature roadmap for Smart GWT 4.x and SmartClient 9.x. Many of the new features are already complete, and if you’re comfortable using development builds you can go try them out right now.

If you upgraded or purchased licenses on or after November 21, 2012 then you already have a 4.x license. Otherwise, please contact us for upgrade pricing.

So, without further ado, here are the new features coming soon for Smart GWT 4.x / SmartClient 9.x.

New Features

The following features are committed for Smart GWT 4.0 / SmartClient 9.0.

  • Zoomable Charts

Charts can now display huge datasets and allow the user to zoom into any portion of the data using an intuitive double-ended slider to define the visible range. This sample is under Charting >> Zoom Charts >> Stock Prices.

Zoomable Charts example showing stock price of Apple, Inc. over a 5-year date range

Zoomable Charts

  • Error Bars

Charts can now display optional error bars for better visualization of datasets that have uncertainty (such as scientific measurements). This sample is under Charting >> Statistics >> Error Bars.

Error Bars for better visualization of datasets with uncertainty

Error Bars

  • Curve-Fitting and Statistics features

Scatter charts can calculate and display either lines or curves that best fit the dataset. This sample is under Charting >> Statistics >> Regression Lines.

Scatter Chart with Curve-Fitting

Scatter Chart with Curve-Fitting

In addition, all charts can now visually show the average value and standard deviation (a measure of how far data points are from the average). This sample is under Charting >> Statistics >> Mean & Deviation.

Column Chart with Average Value and Standard Deviation

Column Chart with Average Value & Standard Deviation

  • Multi-Level Grouping UI

Users can now configure multi-level grouping in any ListGrid via a simple dialog. Just set canMultiGroup to enable this feature on any ListGrid. This sample is in Grids >> Grouping & Summaries >> Multi Grouping.

Multi-Level Grouping User Interface for configuration of any ListGrid.

Multi-Level Grouping UI

  • Selenium TestRunner

We’ve implemented the “holy grail” of Continuous Integration (CI): every time a developer makes a change, a massive test suite is run, and if there are any regressions relative to the last run, emails are sent around so the problem can be immediately addressed.

As part of Smart GWT 4.0, we are taking part of the system we use for doing this, called Selenium TestRunner, and making it an official part of the product (for Power Edition licenses and above).

We’ll be covering this in more detail in upcoming blog posts. However, if you already understand the value of this feature, it’s fully documented and ready to use now.

  • Advanced Field Picker

Some grids show a small subset of hundreds of available fields. With this many fields, it becomes awkward to choose and arrange fields by drag-re-ordering of headers and picking fields from a menu. To address this we’ve added an alternative mode for picking fields, enabled by setting useAdvancedFieldPicker. This dual-grid interface allows you to define the visible fields and their order via intuitive drag and drop. This sample is in Grids >> Appearance >> Field Picker.

Advanced Field Picker is a dual-grid interface for definition of visible fields.

Advanced Field Picker

  • Time & Datetime Editing Enhancements

The TimeItem now supports a mode where users can pick from drop-down lists instead of directly typing in times.  The control can be configured to limit choices of minutes or hours, which can be useful for scheduling applications.

TimeItem Enhancement supports drop-down lists.

TimeItem Enhancement

In addition, for “datetime” fields (fields that combine both a date and time value), the DateChooser has been enhanced to allow picking both the date and time.

DateChooser Enhancement for datetime allows picking of both date and time.

DateTime Enhancement

  • Smart GWT AutoChild support

AutoChildren are automatically generated subcomponents, like the header that a Window automatically creates. New APIs for Smart GWT enable accessing and configuring these subcomponents purely from Java, which can be useful for advanced skinning and sub-classing scenarios.

For details, take a look at Canvas/FormItem.setAutoChildProperties(), and Canvas.getCanvasAutoChild().

Upcoming Features

The following features are committed for future Smart GWT 4.x / SmartClient 9.x releases.

  • Server-based SimpleTypes

SimpleTypes enable you to create a custom, reusable field type. This lets you share logic such as validation and formatting rules across different fields in different DataSources that need the same rule.

Smart GWT 4.x / SmartClient 9.x will introduce the ability to declare SimpleTypes server-side, so that the parts of a simple type definition that have a server-side impact (most importantly, validation) can also be shared across server-side DataSource definitions (.ds.xml files).

  • Declarative Grouping & Sums

Smart GWT 4.x / SmartClient 9.x will introduce the ability to declare simple grouping and summing for DataSource requests, right in the DataSource definition.  For example, working with the orderItem sample DataSource, you could declare an operationBinding like so to create a fetch operation that will return the total sales for a set of orderItems:

operationBinding example that returns total sales for a set of orderItems.

This operationBinding will still accept search criteria, sort directions and other normal features of fetch operations, so this simple declaration creates a fully searchable grouping.

You can also programmatically request such queries via new APIs on the DSRequest object (setGroupBy(), setFieldFunction()).

This new capability works with the built-in SQL, Hibernate and JPA DataSources. Note also that a the pre-existing SQL Templating feature of SQLDataSource allows yet more sophisticated grouping and SQL-based calculations for those who need it (see this sample).

  • Selenium WebDriver support

Official WebDriver support is currently planned for the Smart GWT 4.x / SmartClient 9.x series of releases. As we’ve noted in our docs, WebDriver has some pretty serious drawbacks relative to Selenium RC (discussed here), however, for some organizations, none of the drawbacks happen to apply.

We do plan to address WebDriver’s primary drawback, that is, no ability to execute Selenese (or more generally, no ability to execute tests recorded in Selenium IDE without extensive modifications).

If you plan to use WebDriver and you want to make sure official support is available by a specific date or a specific use case is supported, use the Feature Sponsorship program to get involved.

Need something else?

As always, the Feature Sponsorship program is available to help you get more of out of your platform, and spend less time writing and maintaining custom code. Now is a great time to propose a feature as there’s still time for it to be included in upcoming Smart GWT 4.x / SmartClient 9.x releases.

Enjoy!

The Isomorphic Team

Smart GWT 4.0 / SmartClient 9.0 in Final Beta

$
0
0

Today we’re pleased to announce that Smart GWT 4.0 and SmartClient 9.0 have hit “final beta” status.  This means we are feature frozen and have just a few remaining known bugs (most of them obscure). We recommend that anyone currently planning an upgrade should start using the latest beta builds unless you’re on the verge of completing your application.

Please use the following links to download the new release:

Please Note: There isn’t any special build labeled “beta”.  To get the latest beta build, please download the latest 4.0d or 9.0d nightly builds.

New Features

In addition to features already announced in our last roadmap post, the following new features are part of the final 4.0 / 9.0 release:

  • Image Export of Charts and Drawings

    You can now take any FacetChart or DrawPane and obtain an image in various formats, either in the browser or on the server side.  This has a variety of applications, such as including images of charts or diagrams in programmatically generated emails, reports, or static web content.

    Wide View of Image Export
    Wide View

    Detail View of Image Export
    Detail View

  • Tab Drag Reorder

    TabSet now supports drag-reordering of tabs – just set TabSet.canReorderTabs to enable it.
    This also includes a new API TabSet.reorderTab which simplifies the process or rearranging tabs (previously an addTab(), removeTab() cycle was required).

    Tab Drag Reorder example

  • Component XML Namespacing & Reuse

    It is now possible to load screens from Component XML without using any global widget IDs, yet still have programmatic access to all the widgets defined in Component XML (through a new getByLocalId API).
    This avoids the need to have any kind of coordination of ID usage across screens, simplifying management of Component XML.
    It also allows the same screen to be created multiple times in the same application, so you can create reusable component XML screen definitions for recurring application layouts.
    For details on the new usage pattern, take a look at RPCManager.cacheScreens() and RPCManager.createScreen().

  • ComboBox Minimum Search Strings

    A frequently requested small feature: allow a ComboBoxItem to enforce a minimum length for the search string before a server query is actually attempted.  This is now a single setting, ComboBoxItem.minimumSearchLength, with a configurable message that is displayed when the search string is too short.

    ComboBox Minimum Search Strings example

  • WebDriver Support

    Previously announced as a feature that would probably land somewhere in the 4.x / 9.x series, WebDriver support is in fact present in 4.0 and 9.0. Take a look at the Automated Testing Overview for details of the new support and how to use it. This includes:

    1. Support for SmartClient locator strings, providing stable, logical access to testable component that works across browser, skin and version differences.
    2. Java APIs equivalent to the extremely useful custom commands exposed by our Selenium IDE extensions, such as waitForGridDone().
    3. Support for direct execution of Selenese scripts against WebDriver (normally impossible with WebDriver in general).
    4. Support for generation of WebDriver / JUnit Java code equivalent to a Selenese script (important because Selenium IDE does not produce usable WebDriver code).
  • Format On Blur

    Another small nicety – you can now optionally apply formatters to editable text fields when they do not have keyboard focus.
    This is particularly useful for a ComboBox that shows related records, because it allows you to reveal additional data from other fields in the selected record.  The screenshot below is from the “Format Related Value” sample, which demonstrates this feature:
    Clicking on the search field changes the text back to the search string so the user can do a new search.

    Format On Blur example

  • Server SimpleTypes

    SimpleTypes are powerful features that allow you to define reusable atomic types, including validation rules, formatters, custom editors and other behaviors that can be reused across all components.The server framework now supports server-side declarations of SimpleTypes in .type.xml files. Like validators declared on a DataSourceField, validators declared in server-side SimpleTypes are enforced by the server framework.  See the new docs here.

  • Internationalization Audit

    We’ve created an automated process that verifies that all messages in the system can now be translated via the user-contributed locale files maintained at GetLocalization.com.  This script picked up some 60 new strings that are part of 4.0 features, or that previously would have required manual coding to set.

    If you’d like to help with translations, now is a great time to visit our project at GetLocalization.com and help translate all the newly available messages.

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. If you bought Smart GWT 3.x / SmartClient 8.x recently you may be eligible for a significant discount, so don’t delay. Get access to the entire Smart GWT 4.x / SmartClient 9.x series by upgrading today!

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.

Download our cutting-edge development pre-releases to get started using our new features now!

Enjoy!

The Isomorphic Team

Smart GWT 4.0 / SmartClient 9.0 Released

$
0
0

The Isomorphic development team is proud to announce the immediate release of Smart GWT 4.0 / SmartClient 9.0. This release includes exciting new enhancements to charts, carefully selected refinements to the user interface, and powerful new features behind the scenes designed to take your web application development to the next level.

The list below only includes the major new features, so please see the changelog.html file in the SDK for a complete rundown of the latest features, bug fixes, and enhancements.

Be the first to try out our newest features. Download Smart GWT 4.0 / SmartClient 9.0 today!

Feature List

  • Zoomable Charts

    Charts can now display huge datasets and allow the user to zoom into any portion of the data using an intuitive double-ended slider to define the visible range. (Zoomable Chart examples: SmartClient; Smart GWT)

    Zoomable Charts

    Zoomable Charts

  • Error Bars

    Charts can now display optional error bars for better visualization of datasets that have uncertainty (such as scientific measurements). (Error Bars examples: SmartClient; SmartGWT)

    Error Bars for better visualization of datasets with uncertainty

    Error Bars

  • Curve-Fitting and Statistics features

    Scatter charts can calculate and display either lines or curves that best fit the dataset, and all charts can now visually show the average value and standard deviation (a measure of how far data points are from the average). (Regression examples: SmartClient; Smart GWT. Mean & Deviation examples: SmartClient; Smart GWT)

    Scatter Chart with Curve-Fitting

    Scatter Chart with Curve-Fitting (Regression)

    Chart with Average Value and Standard Deviation

    Chart with Mean and Standard Deviation

  • Selenium TestRunner

    We’ve implemented the “holy grail” of Continuous Integration (CI): every time a developer makes a change, a massive test suite is run. And, if there are any regressions relative to the last run, then email notifications are sent so the problem can be immediately addressed.

  • Advanced Field Picker

    Some grids show a small subset of hundreds of available fields, making it awkward to select and arrange fields from a menu. To address this we’ve added a dual-grid interface allows you to define the visible fields and their order via intuitive drag and drop. (Advanced Field Picker examples: SmartClient; SmartGWT.)

    Advanced Field Picker is a dual-grid interface for definition of visible fields.

    Advanced Field Picker

  • Time & Datetime Editing Enhancements

    The TimeItem now supports a mode where users can pick from drop-down lists instead of directly typing in times.  And, for “datetime” fields (fields that combine both a date and time value), the DateChooser has been enhanced to allow picking of both the date and time. (TimeItem and DateItem examples: SmartClient; Smart GWT)

    TimeItem Enhancement supports drop-down lists.

    TimeItem Enhancement

    DateChooser Enhancement for datetime allows picking of both date and time.

    DateChooser Enhancement for datetime

  • Smart GWT AutoChild Support

    AutoChildren are automatically generated subcomponents, like the header that a Window automatically creates. New APIs for Smart GWT enable accessing and configuring these subcomponents purely from Java, which can be useful for advanced skinning and sub-classing scenarios.

  • Image Export of Charts and Drawings

    You can now take any FacetChart or DrawPane and obtain an image in various formats, either in the browser or on the server side.  This has a variety of applications, such as including images of charts or diagrams in programmatically generated emails, reports, or static web content. (Chart Image Export examples: SmartClient; SmartGWT)

    Wide View of Image Export

    Wide View

    Detail View of Image Export

    Detail View

  • Tab Drag Reorder

    TabSet now supports drag-reordering of tabs – just set TabSet.canReorderTabs to enable it.  This also includes a new API TabSet.reorderTab() which simplifies the process or rearranging tabs (previously an addTab()removeTab() cycle was required).

    Tab Drag Reorder example

    Tab Drag Reorder

  • Component XML Namespacing & Reuse

    It is now possible to load screens from Component XML without using any global widget IDs, yet still have programmatic access to all the widgets defined in Component XML (through a new getByLocalId API).  This avoids the need to have any kind of coordination of ID usage across screens, simplifying management of Component XML. It also allows the same screen to be created multiple times in the same application, so you can create reusable component XML screen definitions for recurring application layouts.

  • ComboBox Minimum Search Strings

    A frequently requested small feature: allow a ComboBoxItem to enforce a minimum length for the search string before a server query is actually attempted, with a configurable message that is displayed when the search string is too short.

    ComboBox Minimum Search Strings example

    ComboBox Minimum Search Strings

  • WebDriver Support

    Previously announced as a feature that would probably land somewhere in the 4.x / 9.x series, WebDriver support is in fact present in 4.0 and 9.0. Take a look at the Automated Testing Overview for details of the new support and how to use it.

  • Format On Blur

    You can now optionally apply formatters to editable text fields when they do not have keyboard focus.  This is particularly useful for a ComboBox that shows related records, because it allows you to reveal additional data from other fields in the selected record.  Clicking on the search field changes the text back to the search string so the user can do a new search.

    Format On Blur example

    Format On Blur

  • Server SimpleTypes

    SimpleTypes are powerful features that allow you to define reusable atomic types, including; validation rules, formatters, custom editors and other behaviors that can be reused across all components.  The server framework now supports server-side declarations of SimpleTypes in .type.xml files. Like validators declared on a DataSourceField, validators declared in server-side SimpleTypes are enforced by the server framework.

  • Internationalization Audit

    We’ve created an automated process that verifies that all messages in the system can now be translated via the user-contributed locale files maintained at GetLocalization.com.  This script picked up some 60 new strings that are part of 4.0 features, or that previously would have required manual coding to set.

Here are a few small-ish features that we didn’t announce before, so we’ll take the time to announce them now:

  • FormItem Read-only Appearance

    There are a few different possible ways you might display a ”read-only” form item – as just a value, as a disabled version of the control, or, for some types of FormItems, as a mostly-functional interface that just rejects changes.

    You can now explicitly configure which of these you want (via FormItem.readOnlyDisplay), and for complex custom controls based on CanvasItem, you get a clean notification that will allow you to switch in and out of read-only mode.

  • RESTHandler Supports File Download

    The RESTHandler servlet allows third-party applications to access your server-side DataSources via a simple REST protocol, so that any DataSource you declare is automatically accessible from custom mobile applications, native desktop applications, web applications created in a different technology, or even automated systems.

    RESTHandler has existed for several releases, but it now supports the ability to download files from binary fields in DataSources, either as Base64-encoded data inside a normal REST response, or as an actual binary download.

  • Automatic Hovers for Clipped Titles and Data Values

    Advanced layouts frequently require labels or data values to be clipped off, but when this occurs, allowing the user to hover to see the complete value is important.  Previously, it was necessary to enable hovers pervasively (even for values that are not clipped), which can be annoying.

    Now, the default behavior is to show a hover for any titles or values that are clipped – and this has been applied across grids, forms, tabs and various other controls.

  • Performance – Lighter DOM, Less Images

    Smart GWT 4.0 / SmartClient 9.0 continue the trend of simplifying the DOM and reducing use of images.

    • After some heroic workarounds for visual glitches caused by IE bugs, IE9 and IE10 now use the new, lightweight CSS3 mode by default.
    • CSS “spriting” has been applied so that, for many different icons used in the framework, all visual states are downloaded as a single image file.
    • ListGrid headers now use a simplified rendering in most skins that allows for a much larger number of columns before any slowness is detectable.
    • Most components in most modes now use a single <DIV> as their outermost element instead of requiring two <DIV> tags (for auto-sizing reasons).
    • Several more images have been replaced by pure CSS equivalents (particularly in the scrollbar).
  • Locale-Sensitive Currency and Number Formatting

    You can now use special DataSource FieldTypes ”localeInt”, “localeFloat” and “localeCurrency” to get locale-sensitive number and currency formatting. Previously this required defining your own SimpleTypes and formatting logic.

  • Double-Ended Slider Widget

    The double-ended Slider component used in the mini-chart area of Zoom Charts is also available for direct use as the RangeSlider component.

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.0 / SmartClient 9.0 in our previous Feature Roadmap and Final Beta announcements. 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.

  • 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.0 or SmartClient 9.0 to get started using our new features today!

Enjoy!

The Isomorphic Team

New Smart GWT 4.1 / SmartClient 9.1 Features

$
0
0

The upcoming Smart GWT 4.1 / SmartClient 9.1 release is getting close to feature complete, so today we’re announcing details of several of the new features in this release. These features are ready to use in the latest nightly builds, complete with samples and documentation. As always, our nightly development builds are more stable than the word ”nightly” might imply – these builds must pass 10′s of thousands of automated tests in order to become available for download.

To try out the new features, grab the latest nightly builds from:

If you have any issues or feedback with these new features, 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.

New Features

  • Declarative Grouping and Sums (Power Edition and above)

    The SQL, Hibernate and JPA connectors in Power Edition and above now have the ability to do grouping and aggregation.

    For example, working with the orderItem sample DataSource, you could declare an operationBinding to create a fetch operation that will return the total sales for a set of orderItem’s:

    1-summaryFunctions-edit

    You can also programmatically request such queries via new APIs on the DSRequest object (setGroupBy(), setSummaryFunctions()).

  • DataSource FormatStrings with Export Support

    You can now declare the visual format for dates and numbers via DataSourceField.format, using “format strings” like Java’s SimpleDateFormat and DecimalFormat.

    In Pro Edition and above, these same formats are applied for spreadsheet exports (XLS and OOXML), so you can have high fidelity exports and have spreadsheet programs such as Excel correctly recognize that your formatted values should be treated as dates or numbers when sorting, grouping or applying other spreadsheet features.

  • includeFrom with aggregation (Power Edition and above)

    This extremely powerful feature allows you to declare that a field that is calculated from values in a related DataSource, with a single property includeSummaryFunction.

    For example, give a DataSource “order” and related DataSource “orderItem”, the “itemCount” field below will show the total number of items in each order.

    includeSummaryFunction-edit

    This feature is supported for SQL, Hibernate and JPA DataSources. Some other common uses:

    • using “max” to show the most recent “order” for a “customer”
    • using “avg” to show the average order size for a “customer”
  • TileGrid with Custom Tiles

    The new Smart GWT Reflection capabilities that appeared in 4.0 made a lot of new scenarios possible. One was the ability to use a completely custom class as the “Tile” in a TileGrid. A new Smart GWT sample in the SDK, “Data View / Tiling -> Custom Tiles” demonstrates this capability.

    3-CustomTileSample

  • New Data Paging Mode for Trees

    Trees have always supported a load-on-demand mode that loads the children of each folder only when the folder is opened. However, some trees have so many children under a single folder that it’s necessary to load those children incrementally, like a ListGrid does.

    This is now supported via ResultTree.fetchMode:"paged". Due to some very sophisticated logic we’ve implemented on the client-side, this mode continues to work with a ”dumb server” that has no tree-specific logic, and only knows how to fetch ranges of rows matching criteria – the same facilities required by a ListGrid.

    PagingForChildren

    For a full overview of this feature, see the newly expanded Tree Databinding overview:

    • SmartClient: in the SDK, search for “Tree DataBinding” in the SmartClient Reference.

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.x / SmartClient 9.x in our previous Smart GWT 4.0 / SmartClient 9.0 release announcement. 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!

Enjoy!

The Isomorphic Team

More Features for Smart GWT 4.1 / SmartClient 9.1

$
0
0

Smart GWT 4.1 / SmartClient 9.1 is almost here, so today we’re announcing a few more features you’ll see in the new release. These are in addition to the previously announced features in our last post, New Smart GWT 4.1 / SmartClient 9.1 Features, and are ready to use in the latest nightly builds. Nightly builds come complete with samples and documentation, and are more stable than the word ”nightly” may imply – our nightly builds 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 from:

If you have any issues or feedback with these new features, 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.

New Features

  • RPC Timings Tool

    The Developer Console’s RPC tab has been enhanced with the ability to show a detailed breakdown of where time is being spent for DataSource requests, including both client- and server-side contributions.

    This makes it very easy to isolate performance problems to your database, your own custom logic, or to contributions from framework features that have a performance cost.

    RPC Timings Tool

  • FacetChart API Enhancements

    FacetChart continues to receive enhancements that make it possible to use our charting engine not just as a fixed rendering of a dataset, but as a foundation for custom data navigation and data visualization features:

    • New valueClick, legendClick and dataLabelClick events make it simple to provide drill-up/down features (see sample Charting -> Drill Up/Down).
    • getDrawnValueAtPoint makes for easy hit testing or intersection tests, useful for custom click or hover interactions, hoop selection or similar features, or implementing drag and drop features.
    • getDrawnValues(FacetValueMap) makes it easy to find all the shapes that make up a data series in order to highlight or otherwise emphasize them.
  • DataSource Auditing (Enterprise Edition only)

    The DataSource Auditing feature automatically tracks all changes made to a DataSource by saving an audit trail to a second DataSource.

    Since audit trail information is saved to a DataSource, you can just connect a grid to it, and you instantly have search, sort, filter, grouping and other features for your audit trail.

    When using SQL or Hibernate DataSource to store the audit trail, enabling this feature only requires setting DataSource.audit to true – the audit DataSource can be automatically generated, and SQL tables for storing audit data can also be auto-created.

    DataSource Auditing

    This sample appears in the SmartClient Showcase under Server Examples -> Auditing, and in the Smart GWT EE Showcase under Java Data Integration -> Auditing.

  • PortalLayout Enhancements

    PortalLayout now has more intelligent behaviors around resizing portlets, designed to avoid leaving any unused space in the portal layout. Initiating a resize on any portlet will resize adjacent, identically sized portlets in a way that feels natural and avoids gaps. Minimized portlets will also free space for use by other portlets.

    In addition, several new events have been added to address advanced usage:

    • portletsChanged and portletsResized events make it simpler to automatically persist layout changes in portals where user editing is allowed.
    • portletMinimized and portletRestored make it easy to detect and respond to minimized and maximized portlets.

    Check out the “Portlet Events” sample to get a feel for the new resize behaviors and available events:

    • Smart GWT LGPL: Portal Layout -> Portlet Events
    • SmartClient: Layout -> Portal Layout -> Portlet Events

    Portlet example before drag and drop:

    Portlet Before

    Portlet example after drag and drop:

    Portlet After

  • Cross Window Drags

    Some enterprise applications actually make use of multiple browser windows at once in order to spread a web application across multiple monitors, or to be able to use the task switching interface provided by the operating system to manage multiple parallel tasks.

    Cross Window Drags allow you to use drag and drop between two different browser windows, including transferring data between windows such as a list of dragged records, or data needed to move a portlet to a second browser window.

    Cross Window Drags

    Samples are in the SmartClient Feature Explorer and Smart GWT LGPL Showcase under Drag & Drop > Cross-Window Drag.

    Note that, unfortunately, this feature cannot be supported in Internet Explorer due to lack of support of the relevant standards.

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 New Smart GWT 4.1 / SmartClient 9.1 Features announcement. 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!

Enjoy!

The Isomorphic Team

Final Features for Smart GWT 4.1 / SmartClient 9.1

$
0
0

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:

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.

New Features

  • 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.

    1-lanes

  • Spreadsheet Export Enhancements (Pro Edition and above)

    Several enhancements have been added to make spreadsheet exports more WYSIWYG (“what you see is what you get”).  These apply to XLS (native Excel) and OOXML (open standard) exports.

    • 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.

    4-matchespattern

  • Selenium and TestRunner Enhancements

    Our Selenium extensions have been enhanced to 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

    2-clouddb

    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.

    3-custom-jql

  • 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!

Enjoy!

The Isomorphic Team

Smart GWT 4.1 / SmartClient 9.1 Released

$
0
0

The Isomorphic team is happy to announce the immediate availability of Smart GWT 4.1 / SmartClient 9.1.

This release includes a huge number of new, useful features that have been carefully selected to supercharge your productivity and refine the user interface. For more information about the new features listed below, please see our last three blog posts; New Smart GWT 4.1 / SmartClient 9.1 Features (Part 1 of 3), More Features for Smart GWT 4.1 / SmartClient 9.1 (Part 2 of 3), and Final Features for Smart GWT 3.1 / SmartClient 9.1 (Part 3 of 3).

The list below only includes the major new features, so please see the changelog.html file in the SDK for a complete rundown of the latest features, bug fixes, and enhancements.

Don’t delay, Download Smart GWT 4.1 / SmartClient 9.1 today!

Feature List

  • DataSource FormatStrings with Export Support: Declare the visual format for dates and numbers via DataSourceField.format, using “format strings” like Java’s SimpleDateFormat and DecimalFormat. In Pro Edition and above, these same formats are applied for spreadsheet exports (XLS and OOXML).
  • includeFrom with Aggregation: In Power Edition and above, declare that a field is calculated from values in a related DataSource with a single property, includeSummaryFunction.
  • New Data Paging Mode for Trees: Trees have always supported a load-on-demand mode that loads the children of each folder only when the folder is opened. However, some trees have so many children under a single folder that it’s necessary to load those children incrementally, like a ListGrid does.
  • RPC Timings Tool: The Developer Console’s RPC tab now shows a detailed breakdown of where time is spent for DataSource requests, including both client- and server-side contributions. This makes it easy to isolate performance problems to your database, your own custom logic, or to contributions from framework features that have a performance cost.
  • FacetChart API Enhancements: New FacetChart enhancements enable expanded use of our charting engine not just as a fixed rendering of a dataset, but as a foundation for custom data navigation and data visualization features.
  • DataSource Auditing: In Enterprise Edition and above, DataSource Auditing automatically tracks all changes made to a DataSource by saving an audit trail to a second DataSource – so you can just connect it to a grid to instantly get search, sort, filter, grouping and other features for your audit trail.
    DataSource Auditing
  • PortalLayout Enhancements: PortalLayout now has more intelligent behaviors for resizing portlets, designed to eliminate any unused space in the portal layout. Initiating a resize on any portlet will resize adjacent, identically sized portlets in a way that feels natural and avoids gaps. Minimized portlets will free space for use by other portlets.
    Portlet Before

    Portlet example before drag and drop

    Portlet After

    Portlet example after drag and drop

  • Cross Window Drags: Some enterprise applications use multiple browser windows to spread tasks across multiple monitors, or use the task switching interface provided by the operating system to manage multiple parallel tasks. Cross Window Drags enable drag and drop between two different browser windows, including transferring data such as a list of dragged records, or data needed to move a portlet to a second browser window.
    Cross Window Drags
  • 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, and events can be dragged between lanes with automatic persistence to a DataSource. This can be used for side-by-side comparison of scheduled for people, conference rooms, vehicles or other scheduled items.
    1-lanes
  • Spreadsheet Export Enhancements: In Pro Edition and above, several enhancements have been added to make spreadsheet exports more WYSIWYG (“what you see is what you get”), including; force column types, support for ledge-style / banded rows, background color, left/right alignment of values, column widths, and header heights. These apply to both XLS (native Excel) and OOXML (open standard) exports.
  • “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.
  • Selenium and TestRunner Enhancements: Our Selenium extensions have been enhanced so that record & playback of drag-and-drop interactions now work for more scenarios without the need to manually insert events into the script. In addition, a new client-side log category “testReplay” can be enabled when playing back Selenium-recorded scripts to provide detailed information about why Selenese commands are failing. Lastly, for Power Edition and above, the TestRunner tool can now capture and store client- and server-side logs generated during Selenium playback whenever a test fails.
  • 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.
  • Simple Storage for multiple:true Fields: In 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!
  • <customJQL> for JPA: In 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.
  • DynamicScreenGenerator Interface for Component XML: Component XML screen definitions are interpreted at runtime, so 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 new RPCManager APIs, cacheScreens() and createScreen(), that enable batch loading of several screen definitions at once via the ScreenLoaderServlet. In Pro Edition and above, 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!

  • 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.

You can get more details about Smart GWT 4.1 / SmartClient 9.1 in our previous blog posts; New Smart GWT 4.1 / SmartClient 9.1 Features (Part 1 of 3), More Features for Smart GWT 4.1 / SmartClient 9.1 (Part 2 of 3), and Final Features for Smart GWT 3.1 / SmartClient 9.1 (Part 3 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.

Download Smart GWT 4.1 or SmartClient 9.1 now to get started using our newest features today!

Enjoy!

The Isomorphic Team


First Batch of New Features for Smart GWT 5.0 / SmartClient 10.0

$
0
0

Smart GWT 5.0 / SmartClient 10.0 is just on the horizon, so we’d like to give you a sneak preview of some of the new features from the next major release. You can try these features now in the latest nightly builds, complete with samples and documentation. As always, our nightly development builds are more stable than the word ”nightly” suggests – each nightly build must pass 10′s of thousands of automated tests before becoming available for download. To try out our newest, cutting-edge features, get the latest nightly builds from:

If you have any issues or feedback with these new features, please post to the Forums. When posting, be sure to indicate that you are using a nightly development build, along with the exact date of the build.

New Features

  • Bubble Charts

    Bubble charts are a type of scatter chart where the size of each rendered data point represents an additional metric value, allowing 3 continuous data values to be visualized together. Bubble charts include a legend showing how data values relate to data point size.

    bubble-chart

    Bubble Chart

  • Color Scale Charts

    Color scale charts use data point colors to represent another continuous data value. When color scale mode is enabled, charts will automatically draw a legend showing how colors represent data values. In addition, “bubble” and “color scale” modes can be combined to produce charts that show up to 4 data values per point.

    Color Scale Chart

    Color Scale Chart

  • Streaming Exports

    Exports to Excel now stream data directly from the database, enabling export of extremely large datasets without using too much server memory. In the past, large exports could starve the server if multiple users performed them simultaneously. In addition, custom streaming exports can now be written using the new server-side API StreamingResponseIterator.

  • “Special Values” area in drop-downs

    Frequently, you may want to allow users to pick from a list of choices, but also allow a “special” option such as “Not applicable” or “None”.  This becomes tricky with large lists or with a search interface, where special values can get scrolled offscreen or eliminated by search criteria. Now the ComboBox and SelectItem controls provide the ability to show special values in the list of options separate from the searchable, scrollable area.

    Special Values

    Special Values

    This feature also removes the limitation that data paging could not be used whenever allowEmptyValue was used. Look up comboBoxItem.specialValues in the docs for a full description of the feature.

  • “Strict Mode” for DataSource & Component XML

    Occasionally when declaring DataSources or Components in XML, a typo in a property name can cause a problem and be difficult to spot. Yet both formats are deeply extensible, so we can’t just flag all unrecognized properties as errors since they may be user extensions. The solution is the new “strict mode” capability. When you enable “strict mode”, you get a warning for any unrecognized attribute or tag as your XML is processed. You can enable or disable “strict mode” at any granularity in your XML files, so you can get rid of warnings for any custom attributes or tags you may add. Please see the Strict Mode overview in the docs for details.

    strict-mode

    Strict Mode

  • Faster Calendar

    The scalability and responsiveness of the Calendar component has been greatly improved, and introduces a cleaner look where controls such as the close button and resizer appear only when needed.

    Faster Calendar

    Faster Calendar

  • Logging Facade

    The server-side framework uses the Apache Log4j framework for logging, which enables us to do some very powerful things, like enable or disable different levels of diagnostics at runtime, and retrieve the most recent logs in a web-based tool (both features of the Server Logs tab of the Developer Console). However, some users have wanted to redirect all diagnostics to other kinds of logging systems, so we’ve added support for the Simple Logging Facade framework (slf4j), with a command-line flag that allows switching between the default Log4j logging vs logging via slf4j. Please see the Server Logging overview in the docs for details.

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.

Download Smart GWT 5.0d or SmartClient 10.0d to get started using our newest features today!

Enjoy!

The Isomorphic Team

Remote Debugging for Mobile coming next release!

$
0
0

Smart GWT 5.0 and SmartClient 10.0 have a lot of exciting upgrades for mobile applications, including a new Remote Debugging feature for the Developer Console.

While the Developer Console already works on mobile devices, it currently appears as a separate tab or browser window, and phone-sized devices don’t have the screen space necessary to use tools like the Watch Tab.

Remote Debugging allows you to run the Developer Console on your desktop machine to debug a page running on a mobile device. With Remote Debugging, you can use all of the powerful debugging features of the Developer Console – the component hierarchy (Watch tab), client/server requests (RPC tab), logs and log categories – using the large screen and physical keyboard of a desktop machine.

remote-debug-1-2

Using Remote Debugging

We’ve made remote debugging as simple to use as possible. Just add isc_remoteDebug=true to the URL when accessing a page on a mobile device. For example, if you have the SmartClient SDK installed, you can go to the Feature Explorer like so:

Please note that in the URL above, set the localhost to the actual hostname or IP address of the machine running the SDK.

Then open the Developer Console in your desktop browser. You can do this from any page on the same server, or you can go directly to the Developer Console:

You will see a “Remote” drop-down that lists the devices and URLs that have registered for remote debugging (by passing the isc_remoteDebug parameter). As you roll over the available remote targets in this drop-down, the target page will glow blue to make it easy to tell which page you will be selecting for debugging – this is particularly handy when you have a lot of devices. In this screenshot you can see what it would look like for an iPhone viewing the SmartClient Feature Explorer:

remote-debug-3

Pick the page to debug and just starting using the Developer Console as normal – that’s it!

If you reload the page on your mobile device, the remote Developer Console automatically re-establishes the connection. And any settings – such as Logging Preferences or Watch tab settings – automatically persist as they normally would.

Who can use Remote Debugging?

Anyone with a Pro Edition or above license will have access to the Remote Debugging feature in the next release.

Under the covers, the Remote Debugging feature actually uses the Real-time Messaging module, which is not a Pro Edition feature. However, we’ve rearranged things so that Pro Edition users can use Real-time Messaging just for Remote Debugging.

This does mean that if you are upgrading your environment to Smart GWT 5.0 / SmartClient 10.0 and you don’t already have Real-time Messaging, you will need to follow the installation steps normally required for Real-time Messaging before the Remote Debugging feature will work. See the “Optional Modules” documentation in your SDK for details.

Download Smart GWT 5.0d or SmartClient 10.0d to get started using our newest features today!

Enjoy!

The Isomorphic Team

New Mobile Features Optimize User Experience

$
0
0

The Isomorphic Enterprise Mobile Application Strategy

Many analysts, MEAP providers and other “experts” promote a mobile enterprise application platform strategy that was developed for consumer offerings (LinkedIn, Facebook, Twitter, etc.). At Isomorphic Software, we realize that Enterprise users and Consumer users have very different needs and usage patterns. So our strategy is different:

  • Built in mobile adaption that allows you to code once for all devices
  • Intelligent Data Management for unprecedented scalability and responsiveness
  • The broadest, deepest set of device aware Enterprise grade UI components

LearnMorebutton

 


The upcoming Smart GWT 5.0 and SmartClient 10.0 release provides many new features aligned with our strategy. Read on for more details …


Responsive Layout

Trying to cram a complex UI with multiple panes onto a handset screen creates a usability disaster. Isomorphic has a better solution. When multiple panes don’t fit side-by-side on a device, we automatically split them across pages. Appropriate navigation controls are provided for each specific device class, and extremely smooth transitions deliver an enterprise grade experience.

Try out Responsive Layouts in Smart GWT 5 / SmartClient 10.

 


Intelligent Auto-Fitting

To make best use of limited screen space, our components feature pervasive auto-fitting capabilities. This goes beyond “responsive design” – using CSS tricks to adjust page layout by browser size – because it works for dynamic data and localized strings, whose size can’t be anticipated in advance. The new NavigationBar component is an excellent example, subtly adjusting navigation controls to maximize the space allocated to the current view’s title.

Try out intelligent auto-fitting

 


Remote Debugging

Users quickly ditch mobile applications that are not robust. Regaining trust is at best an uphill battle. You therefore need to get it right the first time.

Remote Debugging allows you to run the Developer Console on your desktop machine to debug a page running on a mobile device. With Remote Debugging, you can use all of the powerful debugging features of the Developer Console – the component hierarchy (Watch tab), client/server requests (RPC tab), logs and log categories – using the large screen and physical keyboard of a desktop machine.

Learn More about remote mobile debugging

 


Adaptive UI

Our components automatically adapt to the smaller screen size and different pointing behavior of mobile devices. Components like Combo Boxes, Menus and Dialogs will automatically use the entire screen and offer alternative UI for dismissal and navigation (for example: submenus slide in). Context menus and hovers can be triggered by finger taps or long touches.

Because of these and many other automatic behavior changes for mobile devices, you really can build cross-device applications with a single technology and single codebase

Try out adaptive UI

 


SpinnerItem for Touch Devices

On touch devices, the SpinnerItem will now change appearance and behavior to make it easier for users to hit the increment and decrement buttons.

PLUSANDMINUS

Try out SpinnerItem

 


Mobile Device Mode for Window & Dialogue Components  

To create a more seemless experience, window and dialogue components now have a special mode for mobile devices.

In the special mode, these components fill the screen and have a simplified appearance, adsent of shadows and rounding (skin specific). 

tryitout

 


 

CalendarGraphic

Calendar UI

With the desktop calendar, tabs provide the ability to toggle between day and weeks. However, in mobile, the compact calendar does not have tabs.

As such, the compact calendar now allows users to switch between day/week views on mobile device pivot.

 


Download Smart GWT 5.0d or SmartClient 10.0d to get started using our newest mobile features – and much more – today!

Download now!

Enjoy!

The Isomorphic Team

Last Batch of Features Before the Big Release

$
0
0

SmartClient 10.0 / Smart GWT 5.0 will be released around the end August. This is a MAJOR release. We are currently adding the final layer of polish before we let it go.

Meanwhile, here are a few more features that we think you will like … and you can try them out now!

 


CubeGrid WYSIWYG Excel Export

CubeGrids can now export to excel with data arranged the same way you see in the cube: row and column headers arranged around a central body area. Also, Big Data is no problem: you can now export gigantic amounts of data to Excel (eg 1 million plus rows) with no issues and no running out of memory!

ExportCubeGrid

Try Now Button

 

 


Timeline and Calendar Enhancements

  • Major performance upgrades allowing much larger number of events to be displayed
  • Special indicators for moments in time or date ranges
  • Zones that span lanes (e.g. for weekends, holidays, etc.)

Timeline and Calendar Enhancements

Try Now Button

 

 

 

 


Spring @ transactional Annotation Support

Use Spring annotations for either a custom servlet or a specific DMI and SmartClient operations will participate in the Spring manage transaction automatically.

Logo_Spring_258x151

Proportional mode for charts
Area, Bar & Column charts now support “proportional mode”, where data values are visualized as ratios, similar to a Pie chart.  Like many other chart features, the end user can turn this mode on or off on-the-fly.
Proportional Mode for Charts
Try Now Button

Enhanced Move / Resize in Drawing Module
  • Resize-while-rotated
  • Enhanced and customizable appearance for knobs
  • Resize knob support for more kinds of DrawItems

ENHANCED MOVE / RESIZE

 

Try Now Button

 

 


 

Download Smart GWT 5.0d or SmartClient 10.0d to get started using our newest mobile features – and much more – today!

Download now!

Enjoy!

The Isomorphic Team

Available NOW: SmartClient 10.0 / Smart GWT 5.0

$
0
0

releaseblogimagesmallerfileREDUCEDOur SmartClient 10.0 / Smart GWT 5.0 release is finally here and it is packed full of goodies!

What is in SmartClient 10.0 / Smart GWT 5.0?

You can find lots of details in the blogs below:

Here’s how to get it:

New Customers

Existing License Holders

SmartClient 10.0 / Smart GWT 5.0 is a paid upgrade. Discounts are available based upon the date of your previous purchase. Please contact us for upgrade pricing. Get access to all the cutting edge features by upgrading now!

  • 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.

Once you have purchased your upgrade, Download SmartClient 10.0 or SmartClient 5.0 to get started (don’t forget to log in first)!

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.

Enjoy!

The Isomorphic Team

Viewing all 87 articles
Browse latest View live