Marc Hughes

I am a developer from a bit west of Boston.

Flex-Spreadsheet first release

14 Mar 2008

The first public release of my Flex spreadsheet component is now available from Google Code.  This component is very similar to the Flex datagrid with a few notable distinctions:  
  • It's designed for extensibility, not for speed or ease of use.
    • Item Renderers or Item Editors can implement a custom interface to get more information and control over the spreadsheet they're in.
      • They get more data about the spreadsheet.
      • They can dispatch a variety of events to cause the spreadsheet to do things
      • Editors don't neccessarily need to be confined to the size of the
  • It's designed primarily for data-input, not data-display
    • The spreadsheet can have a "placeholder" row.  
      • This row is created by the spreadsheet and is only inserted into the underlying data model when it's "valid".  
      • You can specify a class factory for creating these, and a custom validator class to determine when a row is or is not valid. 
      • Visually, it's slightly greyed out.
  • Keyboard navigation is sane
    • Tabbing between cells
    • Using the arrows between cells.
    • Using the arrows within while editing a cell 
    • Hitting enter submits an entire row.
    • Leaving a cell submits that cell
    • Build-in support for auto completion of cells with sane keyboard navigation of the auto-complete
    • Hitting escape cancels a cell-edit
I originally wrote this for AgileAgenda, recently we began using it for another project at my day-job.  Seeing how it was general enough for that, I thought it might be worth sharing for comments / suggestions / etc.
This component is not ready for general-use.  If you want to try it out expect:
  • It's not well documented.
  • There are bugs
  • For large data sets (300+ rows) it's slow
    • I do have several specific plans for greatly improving this, but I like to optimize last.  You never know when feature changes can really affect performance.
  • The partitioning feature will be completely re-written, don't play with it yet.
  • You will have questions.  I don't have time to answer them right now.
  • Many of the features (like sorting) have only been implemented enough to support my current projects and are not general enough to support every need yet.
So why am I posting this now?  I'm looking for feedback.  What works well, what doesn't.  What other things might you need to use it in your projects?
Getting started:
Grab the source and look at Main.mxml, it has a moderately commented example of using the component.  Also, has a few comments in it that may be useful.
If you want to test out a sample, go here:
Eventually, more information about the project will be at that URL.