This blog isn't maintained anymore. Check out my current project, an agile/scrum management tool.

Sunday, November 25, 2007

Spreadsheet Component


I'm working on a spreadsheet like component for AgileAgenda that I might end up turning into a general-purpose flex component at some point.

It has a couple advantages over the Flex DataGrid class including:
  • Focused on data entry instead of data display.
  • Full keyboard navigation
    • Arrow or tab keys to move between cells
    • When editing a cell, arrows move cursor instead of cells
  • "Placeholder" rows.
    • Automatically created as they're needed.
    • Dimmed out rows that aren't in the dataprovider until they're edited.
    • Uses a IFactory to create your value objects on the fly so you get any field validation that your value object implements.
  • Partitions
    • You can partition your data for display any way you like, independent of how it's stored.
    • Each partition can have different default values for fields.
    • A row can be in 1 or more partitions.
    • Expandable/Collapsible
  • Autocompletion
    • Comes standard just by specifying a list of possible values.
  • Custom item renderers/editors
    • Enhanced functionality if your editor implements a special interface, but that isn't required.
Soon I'll be adding:
  • Full sorting of columns (without modifying the underlying data).
  • Multi-cell selection and editing capabilities
    • Copy/Paste multiple cells
    • Clear multiple cells at once
    • etc.
Here's a quick screen cast of what's working so far:

http://rogue-development.com/SpreadsheetDemo.swf

(Edit, changed URL of demo movie since my Jing quota is quickly approaching)

Labels:

15 Comments:

  • DOOD I'm in love and I Don't care WHO finds out!!!

    LOVE YOU. LOVE YOU. LOVE YOU.

    By Blogger Unknown, At 11/25/2007 7:10 PM  

  • This is great stuff. You are really creating a great component. Will you be open sourcing it? I would like to offer myself to help with its progression.

    Great work Marc.

    By Anonymous Anonymous, At 11/25/2007 9:06 PM  

  • Excellent work, when it will be released?

    By Blogger True Panda, At 11/25/2007 11:51 PM  

  • Looks cool :) Actually I started to do the same component but it's more excel-like and oriented. If you're interested, i could send a demo.

    By Blogger Andrii Olefirenko, At 11/25/2007 11:58 PM  

  • Will this be for sale component or will you make it free?

    By Blogger Erki Esken, At 11/26/2007 12:31 AM  

  • Thanks for the feedback, nice to know others would like something like this as well. This was just a teaser to see how much interest there is.

    It's a long ways from being useable by other people. Right now all the styles are hard coded in and the documentation is non-existent. I also need to fix a bunch of very major bugs. Oh yeah, it doesn't listen for changes to it's datapovider yet which is pretty important :)

    I haven't yet decided how I'll distribute it.

    By Blogger Marc, At 11/26/2007 4:12 AM  

  • Oh! Just to be clear...

    I have great respect for the DataGrid component and the people who did it. It's a great component for displaying data, and as far as I can tell, that was it's focus.

    The thing that amazes me about the DataGrid is how you can throw just about anything at it, and it'll try to display it. Arrays, ArrayCollections, XML lists, and you can even have mixed types in those!

    ** From here on out is pure speculation from me, I have no idea if any of it is true. **

    Unfortunately I think they had conflicting design goals.
    1) Make it powerful
    2) Make is easy to use
    3) Make it fast
    4) Make it configurable

    And it's those base conflicting goals that causes much of the complexity in the code base. It's this complexity that causes most of the frustration for people wishing to extend it's functionality.

    I'm fortunate in that I only have to please myself and I get to choose the goals. This component won't be trying to accomplish #2 at all.

    By Blogger Marc, At 11/26/2007 4:46 AM  

  • Dude, this looks cool. I have been battling DataGrid myself, though I don't hate it enough to start writing my own.

    Are you thinking about making it pluggable what the editors for cell values can be? Cause in your (cool) video, it seems to be text fields most of it!?

    By Anonymous Anonymous, At 11/26/2007 1:46 PM  

  • To help expedite a release, let me know when you need help with the docs for this.

    By Anonymous Anonymous, At 11/26/2007 1:56 PM  

  • I do support custom editors and custom renderers.

    Those custom components can optionally implement a special interface. If they do that, then the spreadsheet component feeds them a lot of additional information and will listen for several events out of them. This is probably one of the biggest benefits.

    But I'll need to really test the limits of the system I have in place at some point.

    Thanks for the offer Chris, I'll keep you in mind.

    By Blogger Marc, At 11/26/2007 2:20 PM  

  • Congratulations Marc,good job.

    By Anonymous Anonymous, At 12/01/2007 3:22 PM  

  • Congratulations, but.... where is the source?

    By Anonymous Anonymous, At 12/03/2007 3:47 AM  

  • nice ! i just hope you implement the autocompletion using ctrl+spacebar i just dont like editors that shows autocopletion without asking for it

    By Blogger Unknown, At 12/03/2007 11:37 AM  

  • Marc,

    The demo rocks.
    I love/hate datagrids.
    Please, please release this as a Flex component so all I have is love again for datagrids.

    CD

    By Anonymous Anonymous, At 2/19/2008 8:27 AM  

  • Hi Marc,
    Nice demo. Looks great. I've uploaded an example and source code of calculatable fields (i.e. SUM, MAX, COS) in the datagrid control which may also be of some interest. It's available here:

    http://drrflexblog.blogspot.com/

    By Blogger R O'Brien, At 3/09/2008 1:50 PM  

Post a Comment

Subscribe to Post Comments [Atom]



<< Home