<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Altio Blog » Developers</title>
	
	<link>http://www.altio.com/blog</link>
	<description />
	<pubDate>Thu, 03 Sep 2009 10:22:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Altio_developers" /><feedburner:info uri="altio_developers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Using data driven containers and image service functions - Part 2</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/VhDRJim7JpQ/</link>
		<comments>http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-part-2/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 17:57:00 +0000</pubDate>
		<dc:creator>tomm</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=114</guid>
		<description><![CDATA[Displaying the image results using the Image control...]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-in-Altio-part-1/">first part</a> of this tutorial series we looked at creating a simple search interface for <a title="Flickr" href="http://www.flickr.com/">Flickr</a> in Altio. But we didn&#8217;t get to the important part, displaying the image results using the Image control.</p>
<p>If you&#8217;ve done the first part of tutorial then you can carry on from where you left off.  If you haven&#8217;t and you want to skip the first part you can carry on by installing <a title="Tutorial application for part 2" href="http://www.altio.com/blog/post-images/flickrimagesamplepart2.aar">this aar</a> file on your Altio server. <span id="more-114"></span></p>
<p><!--more--></p>
<p>Because the images from Flickr are not stored locally on the Altio server we need to write a simple HTTP service function to load images from Flickr.  To do this open up the Application Manager for our Flickr app and create a new service function by clicking on the “HTTP” service function button in the main menu bar.<br />
Set the “Service name” to “IMAGE_FROM_URL” and the “URL” field in the Request tab to “${client.IMG}”.  This is the name of the parameter that the Image  control will pass to the service function when it tries to load an image. </p>
<p><img style="width: 519px; height: 452px;" src="http://www.altio.com/blog/post-images/servicefunction.jpg" alt="Example Image Service Function" width="519" height="452" /></p>
<p>Now click on the Response tab and select “IMG” from the “Document Type” select control.  This tells Altio the service function will return image data.  To test the service function click on the Test tab and enter “http://www.altio.com/images/logo.gif” as a test value for client.IMG.  When you click on the test button now you should see a whole load of data in the Body field of the test window.  We now have a service function that can load an image from any given URL.  Hit the save button and close the Application Manager and go back to the designer for the “flickrSearch” view file.</p>
<p>Select the image control in the Layout Panel and give it the following properties:</p>
<p><!--<br />
UNKNOWN {<br />
MARGIN: 2cm<br />
}<br />
TD P {<br />
MARGIN-BOTTOM: 0cm<br />
}<br />
P {<br />
MARGIN-BOTTOM: 0.21cm<br />
} --></p>
<table style="width: 330px; height: 152px;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<colgroup span="1"><col span="1" width="128"></col><col span="1" width="128"></col></colgroup>
<tbody>
<tr valign="top">
<td width="50%">Property</td>
<td width="50%">Value</td>
</tr>
<tr valign="top">
<td width="50%">Data source</td>
<td width="50%"><a name="DDE_LINK11111"></a>${panelelement}</td>
</tr>
<tr valign="top">
<td width="50%">Data field</td>
<td width="50%">concat(&#8221;http://www.altio.com/images/logo.gif&#8221;, &#8220;&#8221;)</td>
</tr>
<tr valign="top">
<td width="50%">Image Effect</td>
<td width="50%">CENTER</td>
</tr>
<tr valign="top">
<td width="50%">Image server command</td>
<td width="50%">IMAGE_FROM_URL</td>
</tr>
<tr valign="top">
<td width="50%">Border width</td>
<td width="50%">0</td>
</tr>
</tbody>
</table>
<p>With the Data source property we&#8217;re telling the Image control to use the panel&#8217;s data element (“photo”) just like we did with the label in the first tutorial.  The Data field, when using the service function we just wrote, should resolve to a url.  We&#8217;re just putting a test value in for now.  The Image effect is just centering the image in the middle of the control and the Image server command is set to the service function we just created.  We set the Border Width to 0 to get rid of the border around the image control.<br />
Run the app and type in a search term.  You should get a bunch of Altio logos instead of photos from Flickr.  Lets fix that next.</p>
<p>Set the data field property on the image to the following</p>
<p><!--<br />
UNKNOWN {<br />
MARGIN: 2cm<br />
}<br />
TD P {<br />
MARGIN-BOTTOM: 0cm<br />
}<br />
P {<br />
MARGIN-BOTTOM: 0.21cm<br />
} --></p>
<table style="width: 330px; height: 71px;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<colgroup span="1"><col span="1" width="128"></col><col span="1" width="128"></col></colgroup>
<tbody>
<tr valign="top">
<td width="50%">Property</td>
<td width="50%">Value</td>
</tr>
<tr valign="top">
<td width="50%">Data field</td>
<td width="50%"><a name="DDE_LINK"></a><a name="DDE_LINK4"></a>concat(&#8217;http://farm&#8217;, @farm,&#8217;.static.flickr.com/&#8217;, @server, &#8216;/&#8217;, @id, &#8216;_&#8217;, @secret, &#8216;_s.jpg&#8217;)</td>
</tr>
</tbody>
</table>
<p>Here we are constructing the url to a small version of each Flickr image.  We do this by joining the various attributes in our data together to create a sensible Flickr photo url.  You can find out more about how to do this <a title="Flickr Services : URLs" href="http://flickr.com/services/api/misc.urls.html">here</a>.</p>
<p>Now when you run the application and search you should get a set of thumbnails for the search term you typed.</p>
<p>One last thing to do is to allow the users to navigate to the corresponding image on Flickr.  Let&#8217;s set the cursor of the image control to “HAND” so that the user knows they can click the image:</p>
<p><!--<br />
UNKNOWN {<br />
MARGIN: 2cm<br />
}<br />
TD P {<br />
MARGIN-BOTTOM: 0cm<br />
}<br />
P {<br />
MARGIN-BOTTOM: 0.21cm<br />
} --></p>
<table style="width: 330px; height: 52px;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<colgroup span="1"><col span="1" width="128"></col><col span="1" width="128"></col></colgroup>
<tbody>
<tr valign="top">
<td width="50%">Property</td>
<td width="50%">Value</td>
</tr>
<tr valign="top">
<td width="50%">Cursor</td>
<td width="50%"><a name="DDE_LINK1"></a>HAND</td>
</tr>
</tbody>
</table>
<p>Now click on the Events tab in the Properties window and select the “Click” item from the list of triggers.  Find the “Show URL” item in the Add Action list below and double click it to add a new action under the Click trigger.  This action will be called whenever the user clicks an image.</p>
<p>Select the Parameters tab next to the Add Action tab and enter the following values.</p>
<p><!--<br />
UNKNOWN {<br />
MARGIN: 2cm<br />
}<br />
TD P {<br />
MARGIN-BOTTOM: 0cm<br />
}<br />
P {<br />
MARGIN-BOTTOM: 0.21cm<br />
} --></p>
<table style="width: 330px; height: 96px;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<colgroup span="1"><col span="1" width="128"></col><col span="1" width="128"></col></colgroup>
<tbody>
<tr valign="top">
<td width="50%">Property</td>
<td width="50%">Value</td>
</tr>
<tr valign="top">
<td width="50%">URL</td>
<td width="50%"><a name="DDE_LINK2"></a>eval(concat(&#8217;http://www.flickr.com/photos/&#8217;, @owner, &#8216;/&#8217;, @id))</td>
</tr>
<tr valign="top">
<td width="50%">Frame name</td>
<td width="50%"> </td>
</tr>
</tbody>
</table>
<p>This action constructs a URL to the clicked photo&#8217;s Flickr page and opens that page in a new tab.</p>
<p>Save and run the app again and try searching and then clicking on some of the photos.  For some browsers the photo may open in a new tab in a different browser window.  This won&#8217;t occur when the app is deployed to a regular web page though.  You also need to make sure that pop ups aren&#8217;t being blocked.<br />
Here is the final application:</p>
<p> </p>
<p>If you have any trouble completing the tutorial you can leave a comment here, get help on the <a title="Altio forums" href="/forums">forums</a> or you can find us on <a title="Altio on Twitter" href="http://twitter.com/altio">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-part-2/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-part-2/</feedburner:origLink></item>
		<item>
		<title>Using data driven containers and image service functions in Altio - Part 1</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/k6NgbvFCgjU/</link>
		<comments>http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-in-altio-part-1/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 16:52:20 +0000</pubDate>
		<dc:creator>tomm</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=111</guid>
		<description><![CDATA[This is a two part tutorial for building a simple Flickr search client in Altio...]]></description>
			<content:encoded><![CDATA[<p>This is a two part tutorial for building a simple <a href="http://www.flickr.com/" title="Flickr - online photo management">Flickr</a> search client in Altio. It demonstrates how to use the new data driven container functionality, specifically the layout panel in the first part and how to load images over HTTP from other servers in the next part. It is best to use <a href="http://www.altio.com/altiolive/downloads.php" title="Downloads at altio.com">Altio 5.2.4 or greater</a> when using this tutorial. Also your server must of course be connected to the Internet so that it can access the <a href="http://www.flickr.com/services/api/" title="Flickr API documentation">Flickr API</a>.<span id="more-111"></span> Embedded below is an example of the application we&#8217;ll be building.&nbsp; Type in a search term and hit enter and it will fetch a bunch of thumbnails from Flickr.&nbsp; You can click on each thumbnail to visit the Flickr page for that image.</p>
<p>&nbsp;</p>
<p><applet height="400" width="449" name="AltioApplet" code="com/altio/AltioApplet.class" archive="http://www.altio.com:8085/altio52_4/client/clientRelease.jar, controlX.jar" codebase="http://www.altio.com:8085/altio52_4/client">
<param value="FLICKRIMAGESAMPLEFINISHED" name="appId" />
<param value="views/flickrSearch.xml" name="configFile" />
<param value="http://www.altio.com:8085/altio52_4/servlet/com.altio.server.AltioSyncEngine" name="appsrc" />
<param value="N" name="secureRequest" /></applet> </p>
<p>The following application will get you started, it has a HTTP service function set up to load data from Flickr describing a bunch of photos for a given search term. It also has a view with a search field and a button that calls that service function. It doesn&#8217;t display any images or data yet. That is what we&#8217;ll be doing in this tutorial.</p>
<p>You can get the application <a href="http://www.altio.com:8085/altio52_4/flickrimagesample.aar" title="Tutorial application">here</a>.</p>
<p><a name="ctl10_ctl05_ctl03_blogControl"></a>To install an Altio archive file place it in the deploy directory of your Altio installation : &lt;Altio_Install&gt;/WEB-INF/classes/deploy.</p>
<p>For example:</p>
<p>/home/tomm/AltioInstalls/AltioLiveStudio5.2Enterprise/tomcat/webapps/altio52/WEB-INF/classes/deploy</p>
<p>or</p>
<p>C:\Program Files\AltioLiveStudio5.2Enterprise\tomcat\webapps\altio52\WEB-INF\classes\deploy</p>
<p>To begin open the view file named “flickrSearch.xml” in the designer by right clicking it from Studio and selecting “Designer”. Open the window named window “WINDOW” by double clicking it in the tree view. It might come up over your View Explorer window because it&#8217;s X Y co-ordinates are set to 0 but you can drag it away and designer will remember where you put it.</p>
<p class="western">Run the application with the play button at the top of the designer and type a search term into the text box and hit the search button. Nothing will happen yet because we haven&#8217;t built the image controls but data will be loaded. You can see the debug data of the application by hitting CTRL-SHIFT-D which will open the Data window. In there somewhere you should see some data like this:</p>
<p>&lt;rsp &#8230;&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;photos page=&#8221;1&#8243; pages=&#8221;11395&#8243; &#8230; &gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;photo id=&#8221;3247648527&#8243; &#8230; /&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;photo id=&#8221;3248474018&#8243; &#8230;/&gt; </p>
<p>&#8230;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;photo id=&#8221;3248457036&#8243; &#8230; /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/photos&gt; </p>
<p>&lt;/rsp&gt;</p>
<p>This is the data returned by the Flickr search service function.</p>
<p>Close the data window and hit the stop button. Add a Layout Panel control to the window by clicking on the ControlX panel in the Control Palette and dragging from the Layout Panel onto the window.</p>
<p><img height="459" width="192" src="http://www.altio.com/blog/post-images/draglayout.jpg" alt="Drag from the Layout Panel icon on the control palette to the window" style="width: 192px; height: 459px;" /></p>
<p>To position the control where we want it, underneath the search field and button, open the properties window and set the following properties on the control.</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 102px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>X Coordinate</p>
</td>
<td width="312">
<p>0</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Y Coordinate</p>
</td>
<td width="312">
<p>80</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Stretch to fill window</p>
</td>
<td width="312">
<p class="western">Both</p>
</td>
</tr>
</tbody>
</table>
<p><img height="437" width="292" src="http://www.altio.com/blog/post-images/layoutprops1.jpg" alt="Example properties for Layout Panel" style="width: 292px; height: 437px;" /> </p>
<p>The Layout Panel is a bit like the Tab Control, it contains child panels that multiple controls can be added to. Whilst the Tab control places it&#8217;s panels on top of each other the Layout Panel places them next to each other flowing across the window. The child panels you get by default in the Layout Panel are the two boxes that you can see inside the control. We only need one panel so delete one of them by right-clicking and selecting “Delete Child Panel”. </p>
<p><img height="440" width="473" src="http://www.altio.com/blog/post-images/Layoutpanelex.jpg" alt="Example Layout Panel" style="width: 473px; height: 440px;" /></p>
<p>There are lots of images to display in the search results so you may ask why we are only using one panel. We&#8217;re going to make that panel data driven. That means a copy of that panel will be displayed for every instance of the “photo” element in our data. We can achieve this by selecting the remaining panel by clicking on it and adding the following property:</p>
</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 52px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Data Source</p>
</td>
<td width="312">
<p><a name="DDE_LINK3"></a><a name="DDE_LINK"></a>/rsp/photos/photo</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>This tells the Layout Panel to create a new one of these panels for every instance of the “photo” data element in our data set. If you haven&#8217;t already, now would be a good time to save your progress. You can test the application so far by running it and typing a sensible search term. You should see one of those boxes (the panels) for each search result.</p>
<p>Now let&#8217;s add some controls. Drag an Image control and a label control onto the window and position the image control above the label control like this:</p>
<p><img height="440" width="463" src="http://www.altio.com/blog/post-images/layoutcontrolex2.jpg" alt="Label and Image on Layout Panel" style="width: 463px; height: 440px;" /> </p>
<p>This should be possible to achieve with the mouse as the panel will resize to accommodate the controls as you move them and resize them but you can set their positions more exactly using the properties window like so:</p>
<p>&nbsp;</p>
<p>Image control properties:</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 127px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>X Coordinate</p>
</td>
<td width="312">
<p><a name="DDE_LINK1"></a>0</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Y Coordinate</p>
</td>
<td width="312">
<p>0</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Width</p>
</td>
<td width="312">
<p>100</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Height</p>
</td>
<td width="312">
<p>100</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Label control properties:</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 127px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>X Coordinate</p>
</td>
<td width="312">
<p><a name="DDE_LINK11"></a>0</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Y Coordinate</p>
</td>
<td width="312">
<p>100</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Width</p>
</td>
<td width="312">
<p>100</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Height</p>
</td>
<td width="312">
<p>28</p>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Let&#8217;s also set a few properties to make the label wrap and display a smaller font:</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 77px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Wrap</p>
</td>
<td width="312">
<p><a name="DDE_LINK111"></a>Y</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Caption font style</p>
</td>
<td width="312">
<p>Caption_small</p>
</td>
</tr>
</tbody>
</table>
<p>And let&#8217;s get rid of the black border on the layout panel:</p>
<p>&nbsp;</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 52px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Show Border</p>
</td>
<td width="312">
<p><a name="DDE_LINK1111"></a>N</p>
</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 0cm;" class="western"></p>
<p>Now lets connect our label up to the data for the search results. In the “photo” element there is a title attribute which we&#8217;ll display in the label:</p>
<p>&nbsp;</p>
<table cellspacing="0" cellpadding="4" bordercolor="#000000" border="1" style="width: 330px; height: 102px;">
<colgroup><col width="312" /><col width="312" /></colgroup>
<tbody>
<tr valign="top">
<td width="312">
<p>Property</p>
</td>
<td width="312">
<p>Value</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Caption</p>
</td>
<td width="312">
<p><a name="DDE_LINK11111"></a></p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Data source</p>
</td>
<td width="312">
<p>${panelelement}</p>
</td>
</tr>
<tr valign="top">
<td width="312">
<p>Data field</p>
</td>
<td width="312">
<p>@title</p>
</td>
</tr>
</tbody>
</table>
<p>We clear the caption because when a label has a data source it displays a caption above it. We don&#8217;t want that any more. The Data source property is set to reference “panelelement”. That&#8217;s a place holder for the data element that the panel has been created to represent, one of the “photo” data elements. @title is the attribute we want to display for the element.</p>
<p>When you run the app now and perform a search you should get a panel full of results, no photos yet but the labels are now displaying title data.&nbsp; Here&#8217;s an example:</p>
<p>&nbsp;</p>
<p><applet height="400" width="449" name="AltioApplet" code="com/altio/AltioApplet.class" archive="http://www.altio.com:8085/altio52_4/client/clientRelease.jar, controlX.jar" codebase="http://www.altio.com:8085/altio52_4/client">
<param value="FLICKRIMAGESAMPLEPART2" name="appId" />
<param value="views/flickrSearch.xml" name="configFile" />
<param value="http://www.altio.com:8085/altio52_4/servlet/com.altio.server.AltioSyncEngine" name="appsrc" />
<param value="N" name="secureRequest" /></applet></p>
<p>&nbsp;</p>
<p>If you have any trouble completing the tutorial you can leave a comment here, get help on the <a href="http://www.altio.com/forums" title="Altio forums">forums</a> or you can find us on <a href="http://twitter.com/altio" title="Altio on Twitter">Twitter</a>.</p>
<p>In <a href="http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-Part-2/">part two</a> we&#8217;ll look at how we&#8217;ll go about loading the images from Flickr.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-in-altio-part-1/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/using-data-driven-containers-and-image-service-functions-in-altio-part-1/</feedburner:origLink></item>
		<item>
		<title>AltioLive: Repeating actions using List controls</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/ZD2WVS5e-MI/</link>
		<comments>http://www.altio.com/blog/developers/altiolive-repeating-actions-using-list-controls/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 13:42:00 +0000</pubDate>
		<dc:creator>tomm</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=109</guid>
		<description><![CDATA[It is possible to call a service request once for every selected row in a List control...]]></description>
			<content:encoded><![CDATA[<p>It is possible to call a service request once for every selected row in a List control. This approach is often used when there is no other mechanism to handle batch processing and so the only option is to call a service repeatedly. <span id="more-109"></span>
</p>
<p><strong>List Properties</strong></p>
<table cellspacing="0" cellpadding="2" width="398" border="1">
<tbody>
<tr>
<td valign="top" width="131"><strong>Property</strong></td>
<td valign="top" width="265"><strong>Value</strong></td>
</tr>
<tr>
<td valign="top" width="133">Multi-row select</td>
<td valign="top" width="263">Y</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The name of the columns in the list control need to match the parameter names expected by the service request, otherwise the service request will be called incorrectly.</p>
<p><strong>Service Request Event Parameters</strong></p>
<table cellspacing="0" cellpadding="2" width="401" border="1">
<tbody>
<tr>
<td valign="top" width="131"><strong>Property</strong></td>
<td valign="top" width="268"><strong>Value</strong></td>
</tr>
<tr>
<td valign="top" width="132">Multi-select (List)</td>
<td valign="top" width="267">{Name of the list that will provide the required values}</td>
</tr>
<tr>
<td valign="top" width="133">Parameter source</td>
<td valign="top" width="266">STRING</td>
</tr>
<tr>
<td valign="top" width="134">Parameter string</td>
<td valign="top" width="266">(Optional) Additional data to be supplied to the service request. This data will be supplied with the data in each row of the list. </p>
<p>The parameter source string cannot contain references to the list, however - service function parameters configured in the App Manager must map directly to column names in the list.&nbsp; </p>
<p>Example parameter string value: <br />addtionalData=&#8221;eval(${TextBox.value})&#8221; </td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><strong>Configure the service request to accept repeated calls</strong></p>
<p>Data passed from the client is referenced using normal parameter syntax e.g. ${client.addionalData}. The columns in rows from the list used for multiple row processing are referenced using their column name e.g ${client.COL1} assuming there is a column name COL1 in the list.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/altiolive-repeating-actions-using-list-controls/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/altiolive-repeating-actions-using-list-controls/</feedburner:origLink></item>
		<item>
		<title>Altio Designer Features: Snap to Grid and Snap to Controls</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/IZvCKjF7mW0/</link>
		<comments>http://www.altio.com/blog/developers/altio-designer-features-snap-to-grid-and-snap-to-controls/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 16:13:44 +0000</pubDate>
		<dc:creator>tomm</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=107</guid>
		<description><![CDATA[When dragging controls around a window in the Altio Designer you may have noticed that their]]></description>
			<content:encoded><![CDATA[<p>When dragging controls around a window in the Altio Designer you may have noticed that their X and Y co-ordinates snap to the nearest pixel value that is a multiple of 5. In other words there is an invisible grid that the controls are fixed to when you drag them around.&nbsp; In Altio versions 5.x that grid is only invisible for performance reasons, you can make it visible if you wish to see it.&nbsp; To do this select File-&gt;Preferences from the Altio Designer&#8217;s main menu.<span id="more-107"></span> The properties window should now show all the preferences that control the Designer&#8217;s behaviour. If you check the box next to “Draw Guidelines” you should find that now when you drag a control around the window you can see the grid lines the control is snapping to. <br /><img alt="Altio Designer preferences" src="http://heychinaski.com/images/preferences-1.jpg" /> </p>
<p class="western" style="MARGIN-BOTTOM: 0cm"><img alt="Dragging Altio controls in Designer with a visible grid" src="http://heychinaski.com/images/grid-1.jpg" /><br />The darker lines on the top and the left indicate the top and the left edge of the control(s) you are dragging to make it easier to line up with other items on the window. If the lines are difficult to see because of the colour scheme of your application you can try changing the “Guide color” and “Guide opacity (%)” properties. Changing the “Snap Granularity” will change the gap between the grid lines. If you don&#8217;t want to “snap” at all enter 0 into this field or change “Snap mode” to “NONE” to gain complete per-pixel control over where the dragged control ends up.</p>
<p>Another way of lining up controls on a window is to use a different “Snap mode”. Entering “CONTROLS” for this property will cause guidelines to appear whenever a control that is being resized or dragged has an edge that lines up with the edge of another control on the window and the dragged control will snap to that line. <br /><img alt="Altio Designer control snapping" src="http://heychinaski.com/images/control-snap-1.jpg" />&nbsp;<br />You can use these modes to achieve precise and aesthetically pleasing UI Layouts and forms that are well spaced with good flow. Try using the grid mode with a very high granularity to achieve an effective <a title="The Grid System" href="http://www.thegridsystem.org/">grid based system</a> in your Altio application. </p>
<p class="western" style="MARGIN-BOTTOM: 0cm">Altio will be releasing a new Grid container control in Altio 5.3 to give even more control over grid based layouts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/altio-designer-features-snap-to-grid-and-snap-to-controls/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/altio-designer-features-snap-to-grid-and-snap-to-controls/</feedburner:origLink></item>
		<item>
		<title>Implementing List Header Checkboxes in Altio</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/YAkuAoYkV90/</link>
		<comments>http://www.altio.com/blog/developers/implementing-list-header-checkboxes-in-altio/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 16:22:28 +0000</pubDate>
		<dc:creator>tomm</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=99</guid>
		<description><![CDATA[Here's a little tutorial on how to set up a checkbox in the header of an Altio list. The minimum requirements to]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little tutorial on how to set up a checkbox in the header of an Altio list.  The minimum requirements to complete this tutorial should only be that you have an Altio server instance installed, preferably version 5.1 or later.  Why not take this opportunity to try out the <a title="AltioLive 5.2 Release" href="http://www.altio.com/altiolive/altiolive-52-details.php">5.2 version</a>? <span id="more-99"></span></p>
<p>Step one is to install an application featuring an Altio list configured to display checkboxes.  Download this application package for an example:</p>
<p><a title="Checkbox tutorial" href="http://www.heychinaski.com/altio_aars/checkbox_tutorial.aar">Checkbox Tutorial<br />
</a></p>
<p>To install an Altio archive file place it in the deploy directory of your Altio installation : &lt;Altio_Install&gt;/WEB-INF/classes/deploy.</p>
<p>For example:</p>
<p>/home/tomm/AltioInstalls/AltioLiveStudio5.2Enterprise/tomcat/webapps/altio52/WEB-INF/classes/deploy</p>
<p>or</p>
<p>C:\Program Files\AltioLiveStudio5.2Enterprise\tomcat\webapps\altio52\WEB-INF\classes\deploy</p>
<p> </p>
<p>This simple application allows you to “design” a title header for  a website or application by choosing which images to include in the background of the header.  It may be contrived and somewhat limited but it will still serve as a good example as you achieve all of this by clicking check boxes in a list.</p>
<p><img style="width: 260px; height: 456px;" src="http://www.altio.com/blog/post-images/tutorial_screen1.jpg" alt="" hspace="10" vspace="10" width="260" height="456" /></p>
<p>So let’s start by adding a header checkbox to the list in the application.  Open the tutorial’s view file in designer and select the VISIBLE column in the list (expand Windows-&gt;WINDOW-&gt;LIST in the View Explorer and click on VISIBLE).  In the Properties window expand the Appearance group and change the “Show Checkbox in Header” property to “Y”.</p>
<p><img style="width: 39px; height: 43px;" src="http://www.altio.com/blog/post-images/checkbox.jpg" alt="" hspace="10" vspace="10" width="39" height="43" align="right" />If you save your app and run it you should find that a check box has appeared in the header of the checkbox column.  If you click on it to alter it’s value though, you’ll also find that is has no effect.  This is because Altio has no default behaviour for this checkbox; we need to add some application logic to edit the underlying data ourselves.</p>
<p><img src="http://www.altio.com/blog/post-images/tutorial_screen2.jpg" alt="" width="261" height="371" /></p>
<p>The list control has a “Header Check Box Toggled” event fired whenever the user clicks on one.  Click on the list and then select the “Events” tab in the Properties window.  We’ll add a “Set Attribute Value” action to change the value of the list’s data according to the user’s setting in the header checkbox.  Click on the “Header CheckBox Toggled” event in the tree view and find the “Set attribute value” action in the list below.  Double click it to add the action to the event trigger.</p>
<p><img src="http://www.altio.com/blog/post-images/tutorial_screen31.jpg" alt="" width="263" height="369" /></p>
<p>Click on the parameters tab and enter the following parameters.  You can copy and paste them or build them up using the data builder.</p>
<ul>
<li>Element : /IMAGE</li>
<li>Attribute : @VISIBLE</li>
<li>Value : ${LIST/VISIBLE.headerchecked}</li>
</ul>
<p>This means for every IMAGE element, set it’s VISIBLE parameter to whatever the user has set the value of the header checkbox to.  And because the action has been placed under the “Header Checkbox Toggled” event it will run every time the user clicks the checkbox.  Save the application and run it again and you should find the checkbox now works as you’d expect.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/implementing-list-header-checkboxes-in-altio/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/implementing-list-header-checkboxes-in-altio/</feedburner:origLink></item>
		<item>
		<title>Using Java 6 Update 10 features in AltioLive</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/tgJ0sUlDdoc/</link>
		<comments>http://www.altio.com/blog/developers/using-java-6-update-10-features-in-altiolive/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 11:29:00 +0000</pubDate>
		<dc:creator>jimc</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=97</guid>
		<description><![CDATA[Sun is due to release a major update to the Java 6 SE next month. Called Java 6 Update 10 this involves]]></description>
			<content:encoded><![CDATA[<p>Sun is due to release a major update to the Java 6 SE next month. Called Java 6 Update 10 this involves a rewrite of the Java plugin used by browsers to host applets in web pages, and so this obviously affects AltioLive. Many of the benefits of the new plugin, such as faster startup time and running in a separate process to the browser, will be inherited by any applet that runs in the new plugin, but others require that applets make use of JNLP descriptors in order to use the new features.</p>
<p>JNLP files are used by Java WebStart applications to describe the deployment requirements of an application, and converting an Applet to use a JNLP file is usually straightforward. With JNLP files Applets can now use the following Java 6 Update 10 features: <span id="more-97"></span></p>
<ul>
<li>Specifying an applet gets its own JVM instances, rather than sharing the same one with all other applets in the browser. </li>
<li>Specifying the heap size (available memory) that the applet can use. Java defaults to 64MB, which can be very limiting for large applets or when multiple applets are running. </li>
<li>Specifying a particular version of Java to be used to run the applet. Previously the applet ran with whatever the default Java version the user had installed. </li>
<li>Take advantage of new features, such as being able to drag an applet out of the browser onto the desktop. </li>
<li>Allow unsigned applets to directly communicate with domains other than the one they were downloaded from, as long as the domain allows it.</li>
</ul>
<p>You can see full details of the features in Java 6 Update 10&nbsp;here <a href="https://jdk6.dev.java.net/plugin2/">https://jdk6.dev.java.net/plugin2/</a></p>
<p>As you can see, Update 10 addresses many of the problems that people can experience when deploying applets, and adds some new features that bring applets up to date with other web technologies. One of the most useful features for enterprise applications written in Altio is the ability to deploy with more than the default memory size - previously each user had to manually edit their Java settings in the Control Panel, and now developers can specify different settings for different applications. Each AltioLive applet launched with a non-standard heap size will automatically run in its own JVM, so it also isolates an AltioLive application from any other applets in the users browser.</p>
<p>These new features are currently being incorporates into the latest AltioLive development code, but if you want to start using them as soon as Java 6 Update 10 is available then you can do so quite easily. All that you need to do is download 2 files: </p>
<ul>
<li>altioClient.js - This is an update to the standard Altio client JavaScript file used to construct applet parameters dynamically. </li>
<li>getJNLP.jsp - This is a new file that dynamically generates a JNLP file for an AltioLive application. We need this, rather than a static JNLP file, because of the number of dynamic parameters used when configuring the AltioLive applet to launch an application.</li>
</ul>
<p>These file can be downloaded from here:<a href="http://developers.altio.com/developer/downloads/altio-Java6Update10files.zip"> http://developers.altio.com/developer/downloads/altio-Java6Update10files.zip</a></p>
<p>Simply copy these two files into your Altio context (e.g. <span style="FONT-STYLE: italic">&lt;altio&gt;/tomcat/webapps/altio52</span>). Once that is done, to enable the new features for an individual AltioLive application you need to add the line:</p>
<p><span style="FONT-STYLE: italic">var useJNLP = true; </span></p>
<p>into the htmltemplate.txt file for that application. Once that is set then the altioClient.js will pick up that setting and use the new plugin features.</p>
<p>These files are very early technology previews, for testing new features, and are not intended to be used on production systems. In particular, getJNLP.jsp does not provide support for all of the dynamic features that are currently supported - so custom control JAR files need to be added manually to that file in order for it to load them. However the basics are there, and if all that you want is to try out AltioLive applications in separate JVMs with extra memory then they will do that.</p>
<p>We will post more information and updates as we progress with the incorporation of Update 10 features into the core AltioLive product.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/using-java-6-update-10-features-in-altiolive/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/using-java-6-update-10-features-in-altiolive/</feedburner:origLink></item>
		<item>
		<title>Installing Altio on Vista Business Edition</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/XTpaTS_Qp-8/</link>
		<comments>http://www.altio.com/blog/developers/installing-altio-on-vista-business-edition/#comments</comments>
		<pubDate>Fri, 16 May 2008 13:27:31 +0000</pubDate>
		<dc:creator>garyt</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=95</guid>
		<description><![CDATA[Windows Vista Business Edition security can trip you up when trying to run Altio for the first time.]]></description>
			<content:encoded><![CDATA[<p>Windows Vista Business Edition security can trip you up when trying to run Altio for the first time.  <span id="more-95"></span></p>
<p>The simplest thing I have found is to: </p>
<ol>
<li>Install Altio. </li>
<li>Before staring Altio Presentation Server change the security settings.<br /> 
<ol>
<li>Open Windows explorer.</li>
<li>Go to the directory where Altio is installed e.g. Program Files. </li>
<li>Select the Altio folder e.g. AltioStudioEnterprise5.2. </li>
<li>Right click on the folder and select properties.</li>
<li>Select the security tabclick on &#8220;Edit&#8221; button for &#8220;To change permissions, click&#8230;..&#8221; </li>
<li>Select the &#8220;Users&#8230;.&#8221; group. </li>
<li>Select &#8220;Full Control&#8221; from the &#8220;Permissions for Users&#8221; list.</li>
<li>Click OK.</li>
</ol>
</li>
<li>Now start Altio - everything should run as expected.</li>
</ol>
<p>The reason you need to change security settings is that Windows provides restricted user access to the &#8220;Program Files&#8221; directory, so when Tomcat tries to unpack the WAR file it can&#8217;t.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/installing-altio-on-vista-business-edition/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/installing-altio-on-vista-business-edition/</feedburner:origLink></item>
		<item>
		<title>JavaOne Technical Session materials</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/XAYQSdl1XHU/</link>
		<comments>http://www.altio.com/blog/developers/javaone-technical-session-materials/#comments</comments>
		<pubDate>Wed, 14 May 2008 11:26:25 +0000</pubDate>
		<dc:creator>jimc</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=93</guid>
		<description><![CDATA[Thanks to everyone who attended our JavaOne technical session last week - it was great to see lots of people]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who attended our JavaOne technical session last week - it was great to see lots of people interested in applets. I&#8217;ll try and get the examples + source code posted here very soon so that you can see how the samples were implemented.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/javaone-technical-session-materials/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/javaone-technical-session-materials/</feedburner:origLink></item>
		<item>
		<title>JavaOne2008. Thursday roundup</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/8glGasmond8/</link>
		<comments>http://www.altio.com/blog/developers/javaone2008-thursday-roundup/#comments</comments>
		<pubDate>Fri, 09 May 2008 23:14:17 +0000</pubDate>
		<dc:creator>garyt</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=91</guid>
		<description><![CDATA[Wow what a week]]></description>
			<content:encoded><![CDATA[<p>Wow what a week.</p>
<p>It seems like a long build up to the release of JavaFX and the new browser plugin and I can&#8217;t wait for it to happen. As Jim mentions in his <a href="/blog/developers/JavaOne-day-3/">summary of day 3</a> I think there will now be a concern amongst AJAX followers that the technology is going to look dated. At the moment AJAX front ends that want to be really rich seem to rely too much upon Flash, look at Google Analytics - all the charts are Flash. <span id="more-91"></span></p>
<p>Even today AltioLive&#8217;s Graph control that will be released in Altio 5.2 shows the power of Applet based technologies over JavaScript. There are several JavaScript based graph widgets but they tend to be slow when handling lots of data.</p>
<p>I strongly believe that Java 6 has again made Java Applets an option for consumer Rich Web Applications and can come out from hiding in the enterprise solution area, and JavaFX further strengthens the position of Java Applets as a solution.</p>
<p>I&#8217;m sure that if you talk to the Java SE team they will strongly disagree with the idea of JavaFX being &#8220;stillborn&#8221;. Healthy competition between SilverLight, Flash, Applets and AJAX is required to provide end users with the best user experience possible.</p>
<p>If you want to see a real FilthyRich Web Application look at the <a href="/default.php">AltioLive IDE</a>, as Jim put&#8217;s it we &#8220;<a href="http://stufffromjim.blogspot.com/2008/04/eating-your-own-dogfood.html" target="_blank">Eat our own dog food</a>&#8221; I don&#8217;t believe a product can trully say it is good unless you can create an IDE using the underlying framework. I like Eclipse but there must be something wrong if AJAX and Flash don&#8217;t have IDE&#8217;s using their own technology. NOTE: there are some AJAX IDE&#8217;s out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/javaone2008-thursday-roundup/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/javaone2008-thursday-roundup/</feedburner:origLink></item>
		<item>
		<title>Next generation applets</title>
		<link>http://feedproxy.google.com/~r/Altio_developers/~3/2GkMeg6pCDU/</link>
		<comments>http://www.altio.com/blog/developers/next-generation-applets/#comments</comments>
		<pubDate>Fri, 09 May 2008 23:02:03 +0000</pubDate>
		<dc:creator>jimc</dc:creator>
		
		<category><![CDATA[Developers]]></category>

		<guid isPermaLink="false">http://10.0.4.63/blog/?p=89</guid>
		<description><![CDATA[This is the video of the Sun presentation demonstrating how the new Java 6 Update 10 plugin enables applets]]></description>
			<content:encoded><![CDATA[<p>This is the video of the Sun presentation demonstrating how the new Java 6 Update 10 plugin enables applets to be dragged out of the browser to exist as desktop &#8216;widgets&#8217;. </p>
<p><a href="http://news.zdnet.com/2422-13568_22-200560.html" target="_blank">http://news.zdnet.com/2422-13568_22-200560.html</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.altio.com/blog/developers/next-generation-applets/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.altio.com/blog/developers/next-generation-applets/</feedburner:origLink></item>
	</channel>
</rss>
