<?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>Christophe Coenraets &#187; Flex</title>
	<atom:link href="http://coenraets.org/blog/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://coenraets.org/blog</link>
	<description>Rich Internet Applications, Flex, AIR, Java, Android</description>
	<lastBuildDate>Fri, 23 Jul 2010 14:45:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>InSync: Automatic Offline Data Synchronization in AIR using LCDS 2.6</title>
		<link>http://coenraets.org/blog/2008/05/insync-automatic-offline-data-synchronization-in-air-using-lcds-26/</link>
		<comments>http://coenraets.org/blog/2008/05/insync-automatic-offline-data-synchronization-in-air-using-lcds-26/#comments</comments>
		<pubDate>Tue, 20 May 2008 03:31:15 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LCDS]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Offline]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=80</guid>
		<description><![CDATA[LCDS 2.6 allows you to build AIR applications with automatic offline data synchronization. This feature leverages the SQLite relational database system embedded in the AIR runtime, but the advantage is that the data synchronization process is entirely automatic: you don’t have to write SQL statements or synchronization logic to keep your local database in sync [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://coenraets.org/apps/insync/insync1.png" alt="" /></p>
<p><img src="http://coenraets.org/apps/insync/insync2.png" alt="" /></p>
<p>LCDS 2.6 allows you to build AIR applications with automatic offline data synchronization. This feature leverages the SQLite relational database system embedded in the AIR runtime, but the advantage is that the data synchronization process is entirely automatic: you don’t have to write SQL statements or synchronization logic to keep your local database in sync with your central database.</p>
<p>I have been getting a number of questions related to this feature, so I decided to build a sample application that demonstrates how it works.<br />
<span id="more-80"></span><br />
In this application the synchronization process is implicit. When you are online, the cache (a SQLite database) is automatically updated along with the server database to make sure the user can go offline with the latest data without explicitly triggering a synchronization process. When you are offline, the changes are saved in the local cache. If the network becomes available while working in the application, the application will detect the network status change and automatically synchronize data (send your offline changes to the server, and get changes made by other users while you were offline).</p>
<h3>Installation Instructions</h3>
<ol>
<li>If you haven&#8217;t already done so, <a href="http://labs.adobe.com/technologies/livecycle_dataservices2_6/">install LCDS 2.6</a>.</li>
<li>Unzip <a href="http://coenraets.org/apps/insync/insync.zip">insync.zip</a></li>
<li>Copy the content of the sampledb folder in the sampledb folder of your existing LCDS directory</li>
<li>Copy the content of the tomcat folder in the tomcat folder of your existing LCDS directory</li>
<li>Add the following destination to data-management-config.xml
<p><pre class="brush: xml;">
&lt;destination id=&quot;insync&quot;&gt;
    &lt;adapter ref=&quot;java-dao&quot; /&gt;
    &lt;properties&gt;
        &lt;source&gt;lcds.samples.contact.ContactAssembler&lt;/source&gt;
        &lt;scope&gt;application&lt;/scope&gt;
        &lt;metadata&gt;
            &lt;identity property=&quot;contactId&quot; undefined-value=&quot;0&quot;/&gt;
        &lt;/metadata&gt;
    &lt;/properties&gt;
&lt;/destination&gt;
</pre>
</p>
</li>
<li>Restart the sample database: run sampledb.bat (Windows) or sampledb.sh (Unix) in the sampledb directory</li>
<li>Restart your application server</li>
</ol>
<h3>Quick Tour</h3>
<ol>
<li>Install and run the AIR application. Notice the green light in the status bar indicating that the application is in online mode.
<p><div id="flashcontent1832" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://coenraets.org/blog/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://coenraets.org/blog/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "sqliteadmin");
so.addVariable("appurl", "http://coenraets.org/apps/insync/insync.air");
so.addVariable("appid", "sqliteadmin");
so.addVariable("pubid", "");
so.addVariable("appversion", "v1.0");
so.addVariable("imageurl", "http://coenraets.org/apps/insync/insync1.png");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent1832");
// ]]&gt; -->
</script>

</p>
</li>
<li>Double click a contact to view the contact details.</li>
<li>Modify the data in a few fields and click Save. Your server console indicates that the contact has been updated.</li>
<li>Click the + button in the application title bar. Enter a first name, last name, etc and click Save. Your server console indicates that the contact has been updated.</li>
<li>Shut down the server</li>
<li>Notice that the green light turns grey to indicate that the application is now working in offline mode.</li>
<li>Repeat steps 2 to 4 above: changes are saved locally. Notice that the offline status (not modified, created, or updated is displayed in the contact form (bottom left corner)</li>
<li>Restart the server.</li>
<li>The green light appears in that status bar as soon as the server is up and running. Notice that LCDS automatically detects the offline changes and sends them to the server.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2008/05/insync-automatic-offline-data-synchronization-in-air-using-lcds-26/feed/</wfw:commentRss>
		<slash:comments>60</slash:comments>
		</item>
		<item>
		<title>BlazeDS: Open Sourcing Remoting and Messaging</title>
		<link>http://coenraets.org/blog/2007/12/blazeds-open-sourcing-remoting-and-messaging/</link>
		<comments>http://coenraets.org/blog/2007/12/blazeds-open-sourcing-remoting-and-messaging/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 16:55:59 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Remoting]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/2007/12/blazeds-open-sourcing-remoting-and-messaging/</guid>
		<description><![CDATA[Today is yet another exciting day for the Flex community and for the world of Rich Internet applications… Adobe is announcing plans to release its Remoting and Messaging technologies under a new open source product named BlazeDS. The news is probably all over the blogs, but I thought I would summarize the key points: The [...]]]></description>
			<content:encoded><![CDATA[<p>Today is yet another exciting day for the Flex community and for the world of Rich Internet applications… Adobe is announcing plans to release its Remoting and Messaging technologies under a new open source product named BlazeDS.</p>
<p>The news is probably all over the blogs, but I thought I would summarize the key points:</p>
<ul>
<li>The Remoting and Messaging technology previously available only as part of LiveCycle Data Services will now be available for free as a new Open Source product called BlazeDS (under LGPL v3 license).</li>
<li>The public beta of BlazeDS is available for download <a href="http://labs.adobe.com/technologies/blazeds/">here</a> (the GA version is scheduled for early 2008).</li>
<li>As part of this announcement, the Action Message Format (AMF) protocol specification is also being published. The spec is available <a href="http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf">here</a>.</li>
<li>The JIRA bugbase is available <a href="http://bugs.adobe.com/blazeds/">here</a>.</li>
</ul>
<p><span id="more-58"></span><br />
<strong>Additional Information:</strong></p>
<ul>
<li>BlazeDS includes a new HTTP Streaming channel for real time applications that require very low latency. The sample applications packaged with BlazeDS provide examples of real time market data streaming and collaborative applications built with BlazeDS and using the new HTTP Streaming channel (the RTMP protocol is not included in BlazeDS).</li>
<li>In addition to the BlazeDS war file, the BlazeDS download includes a version of Tomcat (6.0.14) with a series of web applications fully configured with BlazeDS (including blazeds-sample).</li>
</ul>
<p><strong>Getting Started:</strong></p>
<ol>
<li>Download the BlazeDS beta 1 zip file <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_blazeds">here</a></li>
<li>Expand it on your local file system (for example in a /blazeds directory)</li>
<li>Start Tomcat (startup.bat or startup.sh in /blazeds/tomcat/bin)</li>
<li>Open a browser and access the samples home page: <a href="http://localhost:8400/blazeds-samples/">http://localhost:8400/blazeds-samples/</a></li>
<li>Take the test drive!</li>
</ol>
<p><strong>Background Information on Messaging:</strong></p>
<p>The Message Service provides a complete publish/subscribe infrastructure allowing Flex clients and the server to exchange messages in real time. The Message Service is made of two key components: a message service running in the application server, and a client-side API. The message service manages a set of destinations. The client-side API allows Flex clients to publish and subscribe to these destinations.</p>
<p>The Message Service enables data push, and collaborative applications to be delivered in the browser in a reliable and scalable manner while preserving the benefits of the traditional web deployment model.</p>
<p>The Message Service can integrate with existing messaging systems through an adapter architecture. A JMS adapter is available out-of-the-box. Using the JMS adapter, you can map BlazeDS messaging destinations to JMS topics, allowing Flex clients to publish and subscribe to JMS topics.</p>
<p><strong>Background Information on Remoting:</strong></p>
<p>Remoting allows a Flex applications to directly invoke methods of Java objects deployed in your application server. The benefits of Remoting include performance and the straightforward programming model.</p>
<p><strong>Additional Offerings:</strong></p>
<ul>
<li>Adobe will also offer “Adobe LiveCycle Data Services, Community Edition”, a subscription offering that includes certified builds of BlazeDS, enterprise support, etc.</li>
<li>LiveCycle Data Services ES (the commercial product) will continue to exist and will focus on higher level APIs: such as Data Management Services, Portal Integration, Offline Synchronization, etc. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2007/12/blazeds-open-sourcing-remoting-and-messaging/feed/</wfw:commentRss>
		<slash:comments>121</slash:comments>
		</item>
		<item>
		<title>Speaking at FlexCamp in Boston on Friday</title>
		<link>http://coenraets.org/blog/2007/12/speaking-at-flexcamp-in-boston-on-friday/</link>
		<comments>http://coenraets.org/blog/2007/12/speaking-at-flexcamp-in-boston-on-friday/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 14:34:25 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/2007/12/speaking-at-flexcamp-in-boston-on-friday/</guid>
		<description><![CDATA[I will be delivering the opening keynote at the FlexCamp in Boston (at the Bentley College in Waltham) on Friday. This promises to be a really great event with great speakers from the Flex Engineering Team (Paul Reilly, Peter Farland, Tom Jordahl) and other Flex celebrities (Joe Berkovitz, David Coletta, Thomas Burleson, Matt Woodward). Hope [...]]]></description>
			<content:encoded><![CDATA[<p>I will be delivering the opening keynote at the FlexCamp in Boston (at the Bentley College in Waltham) on Friday. This promises to be a really great event with great speakers from the Flex Engineering Team (Paul Reilly, Peter Farland, Tom Jordahl) and other Flex celebrities (Joe Berkovitz, David Coletta, Thomas Burleson, Matt Woodward). Hope to see you there: http://www.flexcampboston.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2007/12/speaking-at-flexcamp-in-boston-on-friday/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Interactive Bubble Pipeline: Another Hybrid (HTML/Flex) Example</title>
		<link>http://coenraets.org/blog/2007/11/interactive-bubble-pipeline-another-hybrid-htmlflex-example/</link>
		<comments>http://coenraets.org/blog/2007/11/interactive-bubble-pipeline-another-hybrid-htmlflex-example/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 06:20:27 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/2007/11/interactive-bubble-pipeline-another-hybrid-htmlflex-example/</guid>
		<description><![CDATA[A customer recently pointed out to me that many of our examples feature full-page Flex applications, and wanted to me to demonstrate how a Flex application can integrate with an HTML/Ajax application. Hybrid applications are definitely part of our vision for Flex, and there are many real-life examples of mixing Flash and HTML content out [...]]]></description>
			<content:encoded><![CDATA[<p>A customer recently pointed out to me that many of our examples feature full-page Flex applications, and wanted to me to demonstrate how a Flex application can integrate with an HTML/Ajax application. Hybrid applications are definitely part of our vision for Flex, and there are many real-life examples of mixing Flash and HTML content out there (see  <a href="http://finance.google.com/finance?q=adbe">http://finance.google.com/finance?q=adbe</a>). This customer wanted to look at the integration at the code level. Instead of the usual “Hello from Flex”/”Hello from JavaScript” message exchange example, I wanted to show something more meaningful that would also show “why” you would actually want to do this… </p>
<p><span id="more-56"></span></p>
<p>Click <a href="http://coenraets.org/samples/bubblepipeline/pipeline.html">here</a> to start the sample application.</p>
<p>I extracted this example from my Salesbuilder sample. The application is a simple sales pipeline. The X axis is a time axis, the Y axis represents the probability of closing deals (in percent), and the bubbles represent deals: the bigger the bubble, the bigger the deal.</p>
<p>The bubble chart features many “direct manipulation” options: </p>
<ol>
<li>Grab the background of the chart with your mouse and scroll it left and write to navigate along the time axis.</li>
<li>Grab a vertical grid line, and move it left and right to zoom-out/zoom-in.</li>
<li>To modify your pipeline, grab a bubble with your mouse and move it up and down or left and right to adjust the probability and the expected closing date respectively</li>
</ol>
<p><strong>Flex to JavaScript:</strong><br />
When you move bubbles, the Flex application invokes a JavaScript method to update the Projected Revenue which is displayed in plain HTML on the page. </p>
<p><strong>JavaScript to Flex:</strong><br />
You can also add opportunities (deals) using the HTML form at the bottom of the page.<br />
For example, specify “Adobe” as the account, “Big Deal” as the project name, 500000 as the expected revenue, “50” as the days to close, and “70” as the probability.<br />
When you click “Add Opportunity”, we use JavaScript to invoke the addOpportunity() method in the Flex application.</p>
<p>In this example, I use ExternalInterface to communicate between Flex and JavaScript. You can also use the Flex Ajax bridge which provides a higher level API and which is now integrated in FlexBuilder (version 3).</p>
<p>Click <a href="http://coenraets.org/samples/bubblepipeline/pipeline.zip">here</a> to download the source code.</p>
<p>No rocket science here… just another example of a hybrid application.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2007/11/interactive-bubble-pipeline-another-hybrid-htmlflex-example/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Experimenting with the ILog Elixir Components for Flex</title>
		<link>http://coenraets.org/blog/2007/11/experimenting-with-the-ilog-elixir-components-for-flex/</link>
		<comments>http://coenraets.org/blog/2007/11/experimenting-with-the-ilog-elixir-components-for-flex/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 03:34:52 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[ilog]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/2007/11/experimenting-with-the-ilog-elixir-components-for-flex/</guid>
		<description><![CDATA[I spent some time playing with the ILog Elixir components for Flex. If you haven’t checked them out they are definitely worth looking at. Live samples are available here: http://www.ilog.com/products/elixir/ I experimented with the 3D charts components which definitely provide a good example of the expressiveness of the Flex platform. Looking at the sample code, [...]]]></description>
			<content:encoded><![CDATA[<p>I spent some time playing with the ILog Elixir components for Flex. If you haven’t checked them out they are definitely worth looking at. Live samples are available here: <a href="http://www.ilog.com/products/elixir/">http://www.ilog.com/products/elixir/</a></p>
<p>I experimented with the 3D charts components which definitely provide a good example of the expressiveness of the Flex platform. Looking at the sample code, it looks like you can’t simply enable the 3D mouse interactivity (click and drag to rotate, mouse wheel to zoom in / zoom out) by setting a component property: you actually have to write some code, capture mouse events, etc… In my own experimentation, I isolated that code in a reusable Chart3DControl component that makes it easy to provide this kind of mouse interactivity in any component in your application.</p>
<p><span id="more-55"></span></p>
<p>Click <a href="http://coenraets.org/samples/ilog/demo.html">here</a> to launch my simple test application… an AdvancedDataGrid (providing row grouping) and a 3D ColumnChart: Click an item in the AdvancedDataGrid to visual drill-down using the 3D column chart. This application works with just 35 lines of code:</a></p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; xmlns:local=&quot;*&quot; xmlns:ilog=&quot;http://www.ilog.com/2007/ilog/flex&quot;
	creationComplete=&quot;srv.send()&quot;&gt;

	&lt;mx:HTTPService id=&quot;srv&quot; url=&quot;catalog.xml&quot; result=&quot;gc.refresh()&quot;/&gt;

	&lt;mx:AdvancedDataGrid id=&quot;dg&quot; width=&quot;100%&quot; height=&quot;40%&quot;&gt;
                &lt;mx:dataProvider&gt;
                        &lt;mx:GroupingCollection id=&quot;gc&quot; source=&quot;{srv.lastResult.catalog.product}&quot;&gt;
                             &lt;mx:Grouping&gt;
                                  &lt;mx:GroupingField name=&quot;series&quot;/&gt;
                             &lt;/mx:Grouping&gt;
                        &lt;/mx:GroupingCollection&gt;
                &lt;/mx:dataProvider&gt;
                &lt;mx:columns&gt;
			&lt;mx:AdvancedDataGridColumn dataField=&quot;name&quot;/&gt;
			&lt;mx:AdvancedDataGridColumn dataField=&quot;price&quot;/&gt;
		&lt;/mx:columns&gt;
	&lt;/mx:AdvancedDataGrid&gt;

	&lt;local:Chart3DControl chart=&quot;{chart}&quot;/&gt;

	&lt;ilog:ColumnChart3D id=&quot;chart&quot; width=&quot;100%&quot; height=&quot;60%&quot;
		dataProvider=&quot;{dg.selectedItem.revenue}&quot;&gt;
		&lt;ilog:horizontalAxis&gt;
			&lt;mx:CategoryAxis categoryField=&quot;month&quot;/&gt;
		&lt;/ilog:horizontalAxis&gt;
		&lt;ilog:series&gt;
			&lt;ilog:ColumnSeries3D yField=&quot;europe&quot;/&gt;
			&lt;ilog:ColumnSeries3D yField=&quot;na&quot;/&gt;
			&lt;ilog:ColumnSeries3D yField=&quot;asia&quot;/&gt;
		&lt;/ilog:series&gt;
    &lt;/ilog:ColumnChart3D&gt;

&lt;/mx:Application&gt;
</pre>
<p>Click <a href="http://coenraets.org/samples/ilog/ilogdemo.zip">here</a> to download the source code.</p>
<p>I’m also thinking about integrating the <a href="http://visudemos.ilog.com/webdemos/orgchart/orgchart.html">Org Chart component</a> into Salesbuilder.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2007/11/experimenting-with-the-ilog-elixir-components-for-flex/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Salesbuilder for Flex 3 / AIR Beta 2 (AIR file + source code)</title>
		<link>http://coenraets.org/blog/2007/10/salesbuilder-for-flex-3-air-beta-2-air-file-source-code/</link>
		<comments>http://coenraets.org/blog/2007/10/salesbuilder-for-flex-3-air-beta-2-air-file-source-code/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 21:46:56 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[Offline]]></category>
		<category><![CDATA[Salesbuilder]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/2007/10/salesbuilder-for-flex-3-air-beta-2-air-file-source-code/</guid>
		<description><![CDATA[I migrated the Salesbuilder application for Flex 3 / AIR beta 2. Click here to install the application. Click here to download the source code. Follow this script for a guide tour of the application.]]></description>
			<content:encoded><![CDATA[<p>I migrated the Salesbuilder application for Flex 3 / AIR beta 2.</p>
<p>Click <a href="http://coenraets.org/air/salesbuilder/beta2/salesbuilder.air">here</a> to install the application.</p>
<p>Click <a href="http://coenraets.org/downloads/salesbuilder_src_beta2.zip">here</a> to download the source code.</p>
<p>Follow <a href="http://coenraets.org/air/salesbuilder/salesbuilder_script.pdf">this script</a> for a guide tour of the application.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2007/10/salesbuilder-for-flex-3-air-beta-2-air-file-source-code/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
	</channel>
</rss>
