Uncategorized

SmartGWT EE 1.2 is Now Available!

SmartGWT EE is now available for download.

New in this release:

  • Many new examples, covering custom DataSource implementations, Batch Upload, and various scenarios of adding business logic
  • Eclipse project files for each sample project, for one-step Eclipse setup

Download it today!

Uncategorized

Comments (0)

Permalink

SmartClient 7.0 Release Candidate available

[UPDATE: a second RC is now available on the download page]

At last, a release candidate of SmartClient 7.0 is available.  Download it here:

What do we mean by release candidate?  We are at zero critical bugs according to internal testing, we are in code freeze and will only be fixing newly reported bugs as well as adding and updating documentation and samples.  We expect the RC period to last roughly two to three weeks.

If you plan to move your application to 7.0 any time in the next 6 months, you should definitely grab this release and starting testing now, and submit any bugs you find.

What’s in 7.0

There’s really no way around it once you see the list of new features: this obviously should have been two or more major releases.  The breadth of new functionality is dizzying.  This list below includes only major new feature areas - see the changelog in the SDK to discover the hundreds of minor features that were also added.  Features shown in italics below are new just since 7.0 Beta.

  • Enterprise, SilverWave and BlackOps skins, three more professionally designed, free (LGPL) skins
  • Calendar component: complete drag and drop, databound event editing similar to Google Calendar
  • TileLayout & TileGrid components: display records as a series of tiles, with databinding,
    load on demand, filter and sort, and drag and drop capability
  • Advanced Filtering: client- and server-side support for field-operator-value filtering of
    data, including arbitrarily nested queries
  • Filter Builder: specialized form for end user construction of advanced filters of arbitrary
    complexity
  • SQL Templating: customize the SQL generated by SmartClient’s SQL connector right in the
    DataSource file. Clause by clause overrides make it easy to add simple and complex joins,
    grouping and aggregation while retaining full search features and database independence
  • Transaction Chaining: a transaction where some operations depend on the
    results of other operations can be declared with simple XML in your DataSource
  • DataSource Wizards: generate fully functional DataSources from existing Hibernate entities
    or SQL tables with a simple point and click wizard in Visual Builder
  • Batch DataSource Generator: connect SmartClient to your entire object model in one step by
    generating DataSources from SQL tables, Java Beans or other metadata with a customizable process.
  • CSV / Excel Export: just call grid.exportData() to export the current contents of the grid
    to Excel via CSV, including current sort, filter criteria, column order and column visibility
  • Automatic databound dragging behaviors: grids and trees will now inspect data
    relations declared in DataSources and automatically “do the right thing” for a databound drag
  • Batch Uploader: provides an interface to upload a CSV, validate it and allow the user to
    make corrections before committing, all without coding.
  • Advanced Java Reflection: Java <-> JavaScript translation transparently handles JVM 1.5
    features like Generics and Enums, including nested collections of objects.
  • ColumnTree component: ITunes™-like tree navigation (one column per level)
  • Hiliting: declare hiliting rules based on AdvancedCriteria. Completely client-side
    behavior that works automatically with data paging and filtering
  • Printing: comprehensive and customizable support for rendering printable views of
    SmartClient applications
  • Formula and Summary fields: built-in wizards for end users to define formula fields that
    can compute values using other fields, or summary fields that can combine other fields with
    intervening / surrounding text. Available in all DataBoundComponents, easy to persist as
    preferences
  • ColorPicker component: a full-spectrum color selection component similar to those found in
    graphics packages and other desktop software
  • HeaderSpans: second level headers in grids, for grouping related columns
  • Grid row rollover effects and controls: general purpose ability to attach SmartClient
    components to rows, allowing rounded selection, controls that appear on rollover, and more
  • Grid header rollover: drop-down menus appear on rollover, offering column show/hide,
    freezing and grouping options that previously required right click to discover
  • Data autofitting: horizontal and vertical autofitting to data for ListGrids
  • Grouping modes: built-in and custom grouping modes, such as the ability to group a date
    column by week, day, month or year
  • Visual Builder “toolskin”: edit applications in any skin while Visual Builder itself
    retains consistent look and feel
  • Visual Builder “auto-add”: double-click palette items to intelligently add to last, for
    ludicrously fast screen building
  • AutoFitTextAreaItem: autofits to contained text as the user types
  • Full Tree connectors: TreeGrid connectors support now optionally includes full connector
    lines
  • CubeGrid facet auto-derivation: greatly simplified creation of simple cubes

Each of these major new features deserves a blog post of its own, and we hope to in fact post about some of them, although the many new examples and new docs speak for themselves.

Note that this list doesn’t include two “Previews” that are also included in 7.0:

  • Drawing: a cross-platform vector graphics package that provides drawing of arbitrary shapes, zoom and pan, drag and drop and other interactivity.  No plugins required.
  • Portal: a more advanced portal layout engine and related facilities for persisting not just layout, but an extensible set of information exposed by Portlets, a special class of components with lifecycle management and persistence features.

Pro vs Enterprise Licensing details

If you download and compare the different packages above you’ll get a much more detailed picture of the distinction between our Pro and Enterprise packages.  In a nutshell, from a features perspective, Pro comes with everything except:

  • SQL/HQL Templating
  • Transaction Chaining
  • Server-side Advanced Filtering (client-side filtering  is LGPL)
  • Batch DataSource Generator (but DataSource Wizard is included in Pro)
  • Batch Uploader
  • Network Performance Module
  • Real-Time Messaging Module
  • Analytics Module

The revised licensing page being prepared for the official 7.0 launch will break out the LGPL / Pro / Enterprise split in a graphical fashion (the usual table with rows of checkmarks for features), including links to live examples and docs demonstrating the capabilities of the Pro & Enterprise versions.

We’re very excited about this because, to be perfectly forthright, when we switched SmartClient to open source, our marketing efforts continued to emphasize the overall SmartClient solution, and we made a mistake in not explaining the server functionality very well.  Because SmartClient LGPL seems so complete and so broad when compared to other solutions, there’s been a misconception that the SmartClient Server is a minor add-on to SmartClient, whereas the reality is, it’s the other half.  The cornerstone of SmartClient - the powerful databinding architecture that has so many pervasive benefits in creating your UI - extends onto the server side, where it is arguably even more effective at reducing the amount of code you have to write - frequently, to zero.

If you skipped over the SmartClient Server because the benefits weren’t obvious, now is the time to revisit that choice.  Download the release candidate and start with the new “Server Examples” folder in the Feature Explorer.

Roadmap to 8.0 and beyond

As soon as we get 7.0 final out the door we’ll be posting some more roadmap information about 8.0 and beyond.  We will first put forward a list of areas that we’ll definitely be persuing, then soliciting feedback from customers and open source users about what they want most.  This is all part of an effort to provide more transparency and help teams plan around future SmartClient releases.  Stay tuned.

Cheers,

Charles

Uncategorized

Comments (0)

Permalink

Open for Service

Isomorphic Software has been providing world class consulting, support and training services to top enterprises since before SmartClient was released 2001.  That may be a surprise to some of you because there has never been a description of these services on our company website.  However, things have changed, and we’ve gone public with our service offerings.   We have created a Services page to describe all of the professional services that Isomorphic provides to help teams take advantage of the power of the SmartClient framework.

Do you need enterprise support from the very engineers that have built SmartClient?  Take a look at our Commercial Support options.

Have you just started working with SmartClient and want to quickly learn the technology?  Check out the Training section.

Would you like to  get the SmartClient gurus involved with your project?  Read about our Consulting services.

Does SmartClient meet every requirement you have but one?  Find out about  Feature Sponsorship options.

Industry
Uncategorized

Comments (0)

Permalink

Databound dragging in SmartClient 7.0

One of SmartClient’s most powerful and popular features is built-in support for dragging between grids and trees that you can simply enable with property settings. That’s pretty easily understood and has been a part of SmartClient since 2001. What’s new and more interesting is what should happen when you have a databound grid connected to data from web services, SQL tables or other permanent data stores, and then you perform a drag. Can we ascribe any sensible, user-intuitive meaning to dragging an item from one databound list and dropping it on another?

Forgetting for a moment the rich diversity of things that a SmartClient DataSource might be connected to, let’s just think in terms of SQL. If we have grid A showing SQL table A and grid B showing SQL table B, what does a drag of rows from A to B mean? Does it even have a sensible meaning at all? And if there is a sensible meaning to be inferred, what SQL operations does that imply?

For release 7.0 of SmartClient, we have added a number of automatic databound dragging behaviors to grids; these arose as a result of asking ourselves these questions. It turns out that there often is a sensible meaning to be inferred from a drag of rows from A to B, a meaning that a user might even describe as “obvious”.

Firstly, it turns out that changing a dropped record so that it conforms to the drag target’s search criteria will usually give sensible and intuitive results if the two grids are bound to the same DataSource. For example, imagine we had two lists, both bound to the Products DataSource, where has one search criteria that causes it to show only Products of type “widgets”, and the other has search criteria causing it to show Products of type “gizmos”. If the user drags something out of the gizmo list and drops it on the widget list, the meaning of that gesture might seem obvious to the user – she intends that the item be recategorized as a widget. Similarly, if we were in a part of the application where new products are being created, a clear inference can be drawn from the drag gesture: the user intends that a new product be created that is just like this one, but in a different category.

This is one type of code-free databound dragging behavior that SmartClient 7.0 supports. We add or change properties on the dropped item, so that those properties now match the selection criteria of the grid, and then update the record through the DataSource. The record changes in the SQL database and, as a side-effect of that, moves from one grid to the other - SmartClient’s intelligent cache synchronization ensures that all databound components are automatically updated to reflect any changes in the underlying data. These screenshots show the result of a simple, code-free drag operation.

Dragging a record to automatically recategorize it

The record is recategorized, both visually and persistently - no code required

Another, potentially even more interesting, case where we provide automatic databound dragging behaviors is when two grids are bound to different DataSources, but those DataSources are related via a foreign key relationship. Again, it turns out that mutating the dropped record so that it conforms to the target grid’s search criteria gives sensible and intuitive results. For example, let’s say we have a grid bound to the employees DataSource, and another bound to the TeamMembers DataSource. TeamMembers holds details of which Employees are in which project teams, and thus has a foreign key reference to Employees (declared in the DataSource). So, if our TeamMembers grid is showing members of the “Online Billing” project team, what does it mean if the user drags a record out of the Employees grid and drops it on the TeamMembers grid? It seems clear that they intend that employee to be added as a member of that project team.

In this case, SmartClient will create a new TeamMembers record, automatically setting the foreign key reference from the equivalent field on the dropped employee record, and the project code from the selection criteria of the grid. Again, a couple of screenshots show this (and give me an excuse to show one of the pretty new skins)

Dragging an employee into the 'New Costing System' project

New TeamMember record created and inserted

We also provide an override point in this logic, so data manipulations can be as complex as you need them to be for any given use case. We’re sure people will find uses for this that haven’t even occurred to us, creating applications that make intelligent use of drag and drop to provide natural, intuitive UI’s.

At the top of this article, I asked you to forget about all the things that a DataSource might be connected to; I’ll now ask you to remember again! We’ve looked at these examples using the language of SQL tables here, but of course a DataSource can be connected to anything;. So really, we’re potentially talking about a drag from a WSDL web service to a corporate LDAP server, or from a legacy mainframe app to an EJB stack. DataSources truly are a wonderful thing…

Uncategorized

Comments (0)

Permalink

7.0 Beta is out; SmartGWT right around the corner

At long last, the fabled 7.0 is available for everyone to try out.  Use the download links below.

http://smartclient.com/releases/SmartClient_70beta_LGPL.zip

http://smartclient.com/releases/SmartClient_70beta_Evaluation.zip (30 day eval)

Please post any issues with 7.0 in the SmartClient Forums as usual, but please be very sure to mention that you are reporting an issue with 7.0 beta (ideally, put it in the subject line).

The list of new features in 7.0 is just staggering.  Here’s what you’ll find in the release notes, which covers major features only:

What’s New in 7.0

  • SilverWave and BlackOps skins, two more professionally designed, free (LGPL) skins
  • Calendar component: complete drag and drop, databound event editing similar to Google Calendar
  • TileGrid component: display records as a series of tiles, with databinding, load on demand,
    filter and sort capability
  • Advanced Filtering: client- and server-side support for field-operator-value filtering of
    data, including arbitrarily nested queries
  • Filter Builder: specialized form for end user construction of advanced filters of arbitrary
    complexity
  • Automatic databound dragging behaviors: grids and trees will now inspect data
    relations declared in DataSources and automatically “do the right thing” for a databound drag
  • ColumnTree component: ITunes™-like tree navigation (one column per level)
  • Printing: comprehensive and customizable support for rendering printable views of
    SmartClient applications
  • HeaderSpans: second level headers in grids, for grouping related columns
  • Grid row rollover effects and controls: general purpose ability to attach SmartClient
    components to rows, allowing rounded selection, controls that appear on rollover, and more
  • Grid header rollover: drop-down menus appear on rollover, offering column show/hide,
    freezing and grouping options that previously required right click to discover
  • Data autofitting: horizontal and vertical autofitting to data for ListGrids
  • Grouping modes: built-in and custom grouping modes, such as the ability to group a date
    column by week, day, month or year
  • Visual Builder “toolskin”: edit applications in any skin while Visual Builder itself
    retains consistent look and feel
  • Visual Builder “auto-add”: double-click palette items to intelligently add to last, for
    ludicrously fast screen building
  • AutoFitTextAreaItem: autofits to contained text
  • Full Tree connectors: TreeGrid connectors support now optionally includes full connectors
  • CubeGrid facet auto-derivation: greatly simplified creation of simple cubes
While you wait for your download, take a look at the new skins as they appear in Visual Builder.  This is a real, unmodified screenshot of Visual Builder editing an application using the new SilverWave skin.

Visual Builder

SmartGWT Beta on the verge of release

As if this wasn’t enough excitement for one day, in other news, SmartGWT is right on the verge of final release.  Early adopters (those who emailed us) have already been working with the technology for several weeks, contributing samples and helping with testing (thanks guys!).  Calling this a “First beta release” would give a very false impression of how comprehensive and robust SmartGWT has already become - with over 500 classes and almost 4000 documented APIs, all of SmartClient’s core features are now exposed through Java, and we have an example browser with nearly 250 samples already contributed, covering the same range of use cases as are shown for SmartClient’s set of default examples.

Stay tuned.

Cheers,

Charles

Uncategorized

Comments (2)

Permalink

Video Tour of Visual Builder

As the first of more to come, we’ve created a video tour of the SmartClient Visual Builder tool.  The video shows you how to use Visual Builder to create a web application without writing any code.  The tool can be used by business analysts and semi-technical folks to create working prototypes or by developers just learning SmartClient to create simple applications.

Watch the video to see the drag and drop screen building and event wiring in action.  You’ll also learn about data binding made simple with the DataSource wizard.

Visual Builder was built using SmartClient, so it’s a web page that doesn’t require installation and is easy to share  within a team.  It’s a great tool for teams collaborating to create working prototypes of SmartClient applications.  The best part is that the code created by Visual Builder is clean and can be used by developers to further enrich using the entire SmartClient framework - that means the end of throwaway prototypes.

Visual Builder is extensible so developers can extend it with connectors to any kind of enterprise data provider and any kind of custom component that can be built in SmartClient - even third party controls.  Custom components can then be used to build your screens with drag and drop - just as easy as the out of the box components.

Learn more about Visual Builder - watch the video here.   We’d love to hear your feedback on the video, as well as, get requests for future video topics.

Uncategorized

Comments (0)

Permalink

Best practices: loading DataSources dynamically

Just came across this great blog post from SmartClient user David Johnson about a technique for loading required DataSources dynamically as part of a view.

“So how do we provide DataSources customized for the user? Well, we could easily pull the metadata from the database, merge in the user’s security and then write the DataSources into the web page (we are using ASP.Net).

As there will ultimately be around 200 DataSources in the application the time to build every one of them at login time was considered too long.”

The post goes on to describe a custom class, similar to ViewLoader, that handles automatic DataSource loading as part of a transition to a new set of application views.  Usage ultimately look like this, where the viewClass provides a list of DataSources that it requires in order to function:

_rightPane.addTab({
     ID: tabId,
     title: name,
     canClose: true,
     pane: ViewDependencyLoader.create({
         autoDraw: false,
         viewClass: className
     })
});

Great stuff, and David shares the complete source to his solution.

This is also an area where SmartClient will be expanding in the future, with APIs designed to help you more easily load a view along with the data it will need to initially operate, as well as manage a pool of views, for very large applications where LRU (least recently used) or similar view management approaches become important.

Uncategorized

Comments (0)

Permalink

Come see us at the Ajax Experience in Boston

We’ll be exhibiting at the Ajax Experience in Boston September 29th – October 1st.   Come out and meet the team at our booth outside the general session hall.   If you’ve been looking forward to seeing SmartClient 7.0 in action,  we’ll be giving sneak preview demos of the new Calendar functionality, Advanced Criteria/FilterBuilder, TileList, and much more.  In addition, we’ll also be demoing the much awaited SmartGWT.    Please come by and see us, and get the first look at these new exciting features!

Uncategorized

Comments (0)

Permalink

Browser JavaScript performance leapfrogged again

The race for the JavaScript performance crown is heating up to an almost absurd extent.

Back In June, Apple’s Safari browser was updated with their “SquirrelFish” JavaScript interpreter, providing a huge boost to JavaScript performance that actually put Safari ahead of Tamarin, the JavaScript engine used in Adobe Flex. 

Then, just weeks ago Google released Chrome, including a JavaScript engine, dubbed “V8″, that delivers near-native execution speed for JavaScript code, jumping ahead of SquirrelFish.

Not to be outdone, Brendan Eich of the Mozilla Foundation announced shortly thereafter that pre-release versions of Firefox 3.1 are yet faster than Chrome.

Finally, today Apple has announced further improvements to the SquirrelFish JavaScript interpreter in Safari, more than doubling speed, and blowing by Chrome by almost 1/3.

Of course the million dollar question is, will Internet Explorer keep up?  Apparently, yes.  An in-depth analysis by John Resig of JQuery fame shows that beta versions of IE8 are at least in the ballpark, that is, within 3x of Chrome.  That may sound slow until you realize that still puts IE8 3x ahead of IE7, because the overall speed gains indicated by these announcements are over 10x.  And this is just a beta, released before the performance bar was so drastically and so visibly raised, which should provide motivation to keep up.

Microsoft has also been blogging about IE8 performance work, reportedly looking both at JavaScript performance improvements and improvements in other areas, such as IE’s rendering engine.  From personal experience tuning SmartClient, substantial rendering performance improvements will provide at least as much of a boost as JavaScript performance improvements.

But, bigger picture: the attention being paid to JavaScript performance very, very strongly indicates that all of the major browser vendors are focused on making their browsers the best Ajax platform available, including, for once, the vendors that also have a proprietary platform (Microsoft’s Windows and Apple’s MacOS).  This should be the first of many highly publicized feature, performance and tooling wars which will benefit all applications running on the open web platform. 

The next battle?  Possibly tools.  One of the most encouraging pieces of recent news is that Microsoft is adding a near-clone of Firebug to IE8, including a JavaScript profiler.  At long last, we can all move beyond “‘undefined’ is null or not an object” with an incorrect file and line number.  And it only took - what - 12 years? :)

Uncategorized

Comments (0)

Permalink

We’ve made it onto Ajax Alltop

We’re happy to say that our blog has now been included on the Alltop Ajax.

If you’re not familiar with it, Alltop groups RSS feeds for sites by category and then lists the five latest postings for each site.  They have many different categories for topics from Ajax to food to iPhones.  You can roll over headlines to get more text of the news item.  You can visit the Ajax Alltop here.   A helpful tip, if you think there are too many feeds, you can click on the “x” to hide some.

Alltop. We're kind of a big deal.

Uncategorized

Comments (0)

Permalink