<br />
<b>Warning</b>:  include() [<a href='function.include'>function.include</a>]: Unable to access /var/www/html/rogue-development/blog2/wp-content/advanced-cache.php in <b>/var/www/html/rogue-development/blog2/wp-settings.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>:  include(/var/www/html/rogue-development/blog2/wp-content/advanced-cache.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in <b>/var/www/html/rogue-development/blog2/wp-settings.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>:  include() [<a href='function.include'>function.include</a>]: Failed opening '/var/www/html/rogue-development/blog2/wp-content/advanced-cache.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in <b>/var/www/html/rogue-development/blog2/wp-settings.php</b> on line <b>62</b><br />
<br />
<b>Notice</b>:  add_option was called with an argument that is <strong>deprecated</strong> since version 2.3 with no alternative available. in <b>/var/www/html/rogue-development/blog2/wp-includes/functions.php</b> on line <b>3468</b><br />
<br />
<b>Notice</b>:  register_sidebar_widget is <strong>deprecated</strong> since version 2.8! Use wp_register_sidebar_widget() instead. in <b>/var/www/html/rogue-development/blog2/wp-includes/functions.php</b> on line <b>3382</b><br />
<br />
<b>Notice</b>:  register_widget_control is <strong>deprecated</strong> since version 2.8! Use wp_register_widget_control() instead. in <b>/var/www/html/rogue-development/blog2/wp-includes/functions.php</b> on line <b>3382</b><br />
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marc's Musings &#187; Spreadsheet</title>
	<atom:link href="http://www.rogue-development.com/blog2/category/spreadsheet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rogue-development.com/blog2</link>
	<description>Comments and thoughts on technology from Marc Hughes</description>
	<lastBuildDate>Tue, 29 Mar 2011 00:04:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Flex-Spreadsheet first release</title>
		<link>http://www.rogue-development.com/blog2/2008/03/flex-spreadsheet-first-release/</link>
		<comments>http://www.rogue-development.com/blog2/2008/03/flex-spreadsheet-first-release/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 20:57:00 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Spreadsheet]]></category>

		<guid isPermaLink="false">http://rogue-development.com/blog2/?p=146</guid>
		<description><![CDATA[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&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<div> </div>
<div>
<div style="text-align: left; padding-top: 1em; padding-bottom: 1em; padding-right: 0px; padding-left: 0px" id="m.vo"><a target="_blank" href="http://www.blogger.com/File?id=dfxczdkr_10gkpn8tdk"><img src="http://docs.google.com/File?id=dfxczdkr_10gkpn8tdk" style="width: 640px; height: 124.675px" /></a></div>
</div>
<div> </div>
<p>                        The first public release of my Flex spreadsheet component is now available from <a id="eaxa" href="http://code.google.com/p/flex-spreadsheet/downloads/list" title="Google Code">Google Code</a>.  This component is very similar to the Flex datagrid with a few notable distinctions:  
<div>
<div> </div>
<div>
<ul>
<li>It&#8217;s designed for extensibility, not for speed or ease of use.</li>
<ul>
<li>Item Renderers or Item Editors can implement a custom interface to get more information and control over the spreadsheet they&#8217;re in.</li>
<ul>
<li>They get more data about the spreadsheet.</li>
<li>They can dispatch a variety of events to cause the spreadsheet to do things</li>
<li>Editors don&#8217;t neccessarily need to be confined to the size of the</li>
</ul>
</ul>
<li>It&#8217;s designed primarily for data-input, not data-display</li>
<ul>
<li>The spreadsheet can have a &#8220;placeholder&#8221; row.  </li>
<ul>
<li>This row is created by the spreadsheet and is only inserted into the underlying data model when it&#8217;s &#8220;valid&#8221;.  </li>
<li>You can specify a class factory for creating these, and a custom validator class to determine when a row is or is not valid. </li>
<li>Visually, it&#8217;s slightly greyed out.</li>
</ul>
</ul>
<li>Keyboard navigation is sane</li>
<ul>
<li>Tabbing between cells</li>
<li>Using the arrows between cells.</li>
<li>Using the arrows within while editing a cell </li>
<li>Hitting enter submits an entire row.</li>
<li>Leaving a cell submits that cell</li>
<li>Build-in support for auto completion of cells with sane keyboard navigation of the auto-complete</li>
<li>Hitting escape cancels a cell-edit</li>
</ul>
</ul>
<div> </div>
<div>
<div style="text-align: left; padding-top: 1em; padding-bottom: 1em; padding-right: 0px; padding-left: 0px" id="q2lk"><a target="_blank" href="http://www.blogger.com/File?id=dfxczdkr_9cnj52ncr"><img src="http://docs.google.com/File?id=dfxczdkr_9cnj52ncr" style="width: 640px; height: 130.246px" /></a></div>
</div>
<div> </div>
<div>I originally wrote this for <a id="qo4q" href="http://www.agileagenda.com/" title="AgileAgenda">AgileAgenda</a>, 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.</div>
<div> </div>
<div>This component is not ready for general-use.  If you want to try it out expect:</div>
<div>
<ul>
<li>It&#8217;s not well documented.</li>
<li>There are bugs</li>
<li>For large data sets (300+ rows) it&#8217;s slow</li>
<ul>
<li>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.</li>
</ul>
<li>The partitioning feature will be completely re-written, don&#8217;t play with it yet.</li>
<li>You will have questions.  I don&#8217;t have time to answer them right now.</li>
<li>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.</li>
</ul>
<div> </div>
<div>So why am I posting this now?  I&#8217;m looking for feedback.  What works well, what doesn&#8217;t.  What other things might you need to use it in your projects?</div>
<div> </div>
<div>Getting started:</div>
<div> </div>
<div>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.</div>
<div> </div>
<div>If you want to test out a sample, go here:</div>
<div>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f5fbf"><a id="pyvr" href="http://www.rogue-development.com/spreadsheet/" title="http://www.rogue-development.com/spreadsheet/">http://www.rogue-development.com/spreadsheet/</a> </p>
</div>
<div>Eventually, more information about the project will be at that URL.</div>
<div> </div>
<div> </div>
<div> </div>
</div>
</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2008/03/flex-spreadsheet-first-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spreadsheet Demo #2 &#8211; ComboBox</title>
		<link>http://www.rogue-development.com/blog2/2007/11/spreadsheet-demo-2-combobox/</link>
		<comments>http://www.rogue-development.com/blog2/2007/11/spreadsheet-demo-2-combobox/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 13:29:00 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[Spreadsheet]]></category>

		<guid isPermaLink="false">http://rogue-development.com/blog2/?p=95</guid>
		<description><![CDATA[UPDATE: http://www.rogue-development.com/blog/2008/03/first-public-release-of-my-flex.html Last night I wanted to see how my component would work with custom editors that weren&#8217;t just text boxes. Here&#8217;s a quick demo of my spreadsheet component with a custom renderer descended from a combo box.  Notice a few things: 1 click on a cell to open, not one click to activate the cell [...]]]></description>
			<content:encoded><![CDATA[<div>UPDATE: http://www.rogue-development.com/blog/2008/03/first-public-release-of-my-flex.html</div>
<div></div>
<div>Last night I wanted to see how my component would work with custom editors that weren&#8217;t just text boxes.</div>
<div></div>
<p>Here&#8217;s a quick demo of my spreadsheet component with a custom renderer descended from a combo box.  Notice a few things:
<div>
<ul>
<li>1 click on a cell to open, not one click to activate the cell and another to open it.</li>
<li>You can keyboard navigate to it, hit the down-arrow, open the list of choices, use the arrows to select one, and then hit enter to select it, just like you should be able to.</li>
</ul>
<div><a href="http://www.rogue-development.com/SpreadsheetDemo2.swf">http://www.rogue-development.com/SpreadsheetDemo2.swf</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2007/11/spreadsheet-demo-2-combobox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spreadsheet Component</title>
		<link>http://www.rogue-development.com/blog2/2007/11/spreadsheet-component/</link>
		<comments>http://www.rogue-development.com/blog2/2007/11/spreadsheet-component/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 00:58:00 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Spreadsheet]]></category>

		<guid isPermaLink="false">http://rogue-development.com/blog2/?p=94</guid>
		<description><![CDATA[Update: http://www.rogue-development.com/blog/2008/03/first-public-release-of-my-flex.html I&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<div>Update: <a href="http://www.rogue-development.com/blog/2008/03/first-public-release-of-my-flex.html">http://www.rogue-development.com/blog/2008/03/first-public-release-of-my-flex.html</a></div>
<div></div>
<p>I&#8217;m working on a spreadsheet like component for AgileAgenda that I might end up turning into a general-purpose flex component at some point.</p>
<p>It has a couple advantages over the Flex DataGrid class including:
<ul>
<li>Focused on data entry instead of data display.</li>
<li>Full keyboard navigation</li>
<ul>
<li>Arrow or tab keys to move between cells</li>
<li>When editing a cell, arrows move cursor instead of cells</li>
</ul>
<li>&#8220;Placeholder&#8221; rows.</li>
<ul>
<li>Automatically created as they&#8217;re needed.</li>
</ul>
<ul>
<li>Dimmed out rows that aren&#8217;t in the dataprovider until they&#8217;re edited.</li>
<li>Uses a IFactory to create your value objects on the fly so you get any field validation that your value object implements.</li>
</ul>
<li>Partitions</li>
<ul>
<li>You can partition your data for display any way you like, independent of how it&#8217;s stored.</li>
<li>Each partition can have different default values for fields.</li>
<li>A row can be in 1 or more partitions.</li>
<li>Expandable/Collapsible</li>
</ul>
<li>Autocompletion</li>
<ul>
<li>Comes standard just by specifying a list of possible values.</li>
</ul>
<li>Custom item renderers/editors</li>
<ul>
<li>Enhanced functionality if your editor implements a special interface, but that isn&#8217;t required.<span style="display: block;" id="formatbar_Buttons"><span class="on" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></span></li>
</ul>
</ul>
<p>Soon I&#8217;ll be adding:
<ul>
<li>Full sorting of columns (without modifying the underlying data).</li>
<li>Multi-cell selection and editing capabilities</li>
<ul>
<li>Copy/Paste multiple cells</li>
<li>Clear multiple cells at once</li>
<li>etc.</li>
</ul>
</ul>
<p>Here&#8217;s a quick screen cast of what&#8217;s working so far:</p>
<p><a href="http://rogue-development.com/SpreadsheetDemo.swf">http://rogue-development.com/SpreadsheetDemo.swf</a></p>
<p>(Edit, changed URL of demo movie since my Jing quota is quickly approaching)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2007/11/spreadsheet-component/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

