Flex-Spreadsheet

(Insert cool Logo Here)

AgileAgenda

Navigation:

Blog
Projects
Contribute To Projects

Links:

Marc-Hughes.com
AgileAgenda

Flex-Spreadsheet

Intro

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, Spreadsheet.as has a few comments in it that may be useful.




 

Example

Example Screenshots



License

MIT License

Download

http://code.google.com/p/flex-spreadsheet/downloads/list