<?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>muhuk.com &#187; canvas</title>
	<atom:link href="http://www.muhuk.com/tag/canvas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.muhuk.com</link>
	<description>know thyself</description>
	<lastBuildDate>Thu, 02 Sep 2010 07:13:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Using Layouts In Qooxdoo &#8211; Part 5: Basic &amp; Canvas</title>
		<link>http://www.muhuk.com/2009/04/using-layouts-in-qooxdoo-part-5-basic-canvas/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-layouts-in-qooxdoo-part-5-basic-canvas</link>
		<comments>http://www.muhuk.com/2009/04/using-layouts-in-qooxdoo-part-5-basic-canvas/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 07:57:40 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[qooxdoo]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=183</guid>
		<description><![CDATA[This is the fifth part of a tutorial series about layout managers, container objects and object hierarchies in Qooxdoo. Read the first part here. Basic Layout Manager qx.ui.layout.Basic layout manager positions your widgets with absolute coordinates. It doesn&#8217;t have much to offer except the freedom of manual positioning. We supply a left and top property [...]]]></description>
			<content:encoded><![CDATA[<p><small>This is the fifth part of a tutorial series about layout managers, container objects and object hierarchies in Qooxdoo. Read the first part <a href="http://www.muhuk.com/2009/01/using-layouts-in-qooxdoo-part-1/">here</a>.</small></p>

<h3>Basic Layout Manager</h3>

<p><code>qx.ui.layout.Basic</code> layout manager positions your widgets with absolute coordinates. It doesn&#8217;t have much to offer except the freedom of manual positioning.</p>

<p>We supply a <code>left</code> and <code>top</code> property when we add our widgets. Following example places buttons in a circular path, like a clock.</p>

<pre><code><span style="color:#9a9a9a">   1 </span><span style="color:#38ad24">/*</span>
<span style="color:#9a9a9a">   2 </span><span style="color:#38ad24">#asset(qooxdoolayouts/*)</span>
<span style="color:#9a9a9a">   3 </span><span style="color:#38ad24">*/</span>
<span style="color:#9a9a9a">   4 </span>qx<span style="color:#555555">.</span>Class<span style="color:#555555">.</span><span style="color:#d11ced">define</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;qooxdoolayouts.Application&quot;</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">   5 </span><span style="color:#555555">{</span>
<span style="color:#9a9a9a">   6 </span>    extend<span style="color:#555555">:</span> qx<span style="color:#555555">.</span>application<span style="color:#555555">.</span>Standalone<span style="color:#555555">,</span>
<span style="color:#9a9a9a">   7 </span>    members<span style="color:#555555">: {</span>
<span style="color:#9a9a9a">   8 </span>        main<span style="color:#555555">:</span> <span style="color:#ff3030; font-weight:bold">function</span><span style="color:#555555">(){</span>
<span style="color:#9a9a9a">   9 </span>            <span style="color:#ff3030; font-weight:bold">this</span><span style="color:#555555">.</span><span style="color:#d11ced">base</span><span style="color:#555555">(</span>arguments<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  10 </span>
<span style="color:#9a9a9a">  11 </span>            <span style="color:#ff3030; font-weight:bold">var</span> main_container <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>container<span style="color:#555555">.</span><span style="color:#d11ced">Composite</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  12 </span>
<span style="color:#9a9a9a">  13 </span>            <span style="color:#ff3030; font-weight:bold">var</span> layout_manager <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>layout<span style="color:#555555">.</span><span style="color:#d11ced">Basic</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  14 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">setLayout</span><span style="color:#555555">(</span>layout_manager<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  15 </span>
<span style="color:#9a9a9a">  16 </span>            <span style="color:#ff3030; font-weight:bold">var</span> btn_size <span style="color:#555555">=</span> <span style="color:#32ba06">50</span><span style="color:#555555">;</span>
<span style="color:#9a9a9a">  17 </span>            <span style="color:#ff3030; font-weight:bold">var</span> distance <span style="color:#555555">=</span> <span style="color:#32ba06">175</span><span style="color:#555555">;</span>
<span style="color:#9a9a9a">  18 </span>            <span style="color:#ff3030; font-weight:bold">var</span> pi2 <span style="color:#555555">=</span> <span style="color:#32ba06">2</span> <span style="color:#555555">*</span> <span style="color:#32ba06">3.141592</span><span style="color:#555555">;</span>
<span style="color:#9a9a9a">  19 </span>            center <span style="color:#555555">= {</span>
<span style="color:#9a9a9a">  20 </span>                x<span style="color:#555555">:</span> <span style="color:#0000ff">Math</span><span style="color:#555555">.</span><span style="color:#0000ff">round</span><span style="color:#555555">(</span>qx<span style="color:#555555">.</span>bom<span style="color:#555555">.</span>Viewport<span style="color:#555555">.</span><span style="color:#d11ced">getWidth</span><span style="color:#555555">()/</span><span style="color:#32ba06">2</span><span style="color:#555555">)-</span>btn_size<span style="color:#555555">/</span><span style="color:#32ba06">2</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  21 </span>                y<span style="color:#555555">:</span> <span style="color:#0000ff">Math</span><span style="color:#555555">.</span><span style="color:#0000ff">round</span><span style="color:#555555">(</span>qx<span style="color:#555555">.</span>bom<span style="color:#555555">.</span>Viewport<span style="color:#555555">.</span><span style="color:#d11ced">getHeight</span><span style="color:#555555">()/</span><span style="color:#32ba06">2</span><span style="color:#555555">)-</span>btn_size<span style="color:#555555">/</span><span style="color:#32ba06">2</span>
<span style="color:#9a9a9a">  22 </span>            <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  23 </span>
<span style="color:#9a9a9a">  24 </span>            <span style="color:#ff3030; font-weight:bold">for</span> <span style="color:#555555">(</span><span style="color:#ff3030; font-weight:bold">var</span> i<span style="color:#555555">=</span><span style="color:#32ba06">0</span><span style="color:#555555">;</span> i<span style="color:#555555">&lt;</span><span style="color:#32ba06">12</span><span style="color:#555555">;</span> i<span style="color:#555555">++) {</span>
<span style="color:#9a9a9a">  25 </span>                <span style="color:#ff3030; font-weight:bold">var</span> button <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>form<span style="color:#555555">.</span><span style="color:#d11ced">Button</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;CW&quot;</span><span style="color:#555555">+(</span>i<span style="color:#555555">+</span><span style="color:#32ba06">1</span><span style="color:#555555">).</span><span style="color:#0000ff">toString</span><span style="color:#555555">());</span>
<span style="color:#9a9a9a">  26 </span>                button<span style="color:#555555">.</span><span style="color:#d11ced">setWidth</span><span style="color:#555555">(</span>btn_size<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  27 </span>                button<span style="color:#555555">.</span><span style="color:#d11ced">setHeight</span><span style="color:#555555">(</span>btn_size<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  28 </span>                <span style="color:#ff3030; font-weight:bold">var</span> dist_x <span style="color:#555555">=</span> <span style="color:#0000ff">Math</span><span style="color:#555555">.</span><span style="color:#0000ff">round</span><span style="color:#555555">(</span>distance <span style="color:#555555">*</span> <span style="color:#0000ff">Math</span><span style="color:#555555">.</span><span style="color:#0000ff">sin</span><span style="color:#555555">(-(</span>i<span style="color:#555555">/</span><span style="color:#32ba06">12</span><span style="color:#555555">+</span><span style="color:#32ba06">0.5</span><span style="color:#555555">)*</span>pi2<span style="color:#555555">));</span>
<span style="color:#9a9a9a">  29 </span>                <span style="color:#ff3030; font-weight:bold">var</span> dist_y <span style="color:#555555">=</span> <span style="color:#0000ff">Math</span><span style="color:#555555">.</span><span style="color:#0000ff">round</span><span style="color:#555555">(</span>distance <span style="color:#555555">*</span> <span style="color:#0000ff">Math</span><span style="color:#555555">.</span><span style="color:#0000ff">cos</span><span style="color:#555555">(-(</span>i<span style="color:#555555">/</span><span style="color:#32ba06">12</span><span style="color:#555555">+</span><span style="color:#32ba06">0.5</span><span style="color:#555555">)*</span>pi2<span style="color:#555555">));</span>
<span style="color:#9a9a9a">  30 </span>                main_container<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span>button<span style="color:#555555">, {</span>
<span style="color:#9a9a9a">  31 </span>                    left<span style="color:#555555">:</span> center<span style="color:#555555">.</span>x <span style="color:#555555">+</span> dist_x<span style="color:#555555">,</span>
<span style="color:#9a9a9a">  32 </span>                    <span style="color:#0000ff">top</span><span style="color:#555555">:</span> center<span style="color:#555555">.</span>y <span style="color:#555555">+</span> dist_y
<span style="color:#9a9a9a">  33 </span>                <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  34 </span>            <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  35 </span>
<span style="color:#9a9a9a">  36 </span>            <span style="color:#ff3030; font-weight:bold">var</span> application_root <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">this</span><span style="color:#555555">.</span><span style="color:#d11ced">getRoot</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  37 </span>            application_root<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span>main_container<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  38 </span>        <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  39 </span>    <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  40 </span><span style="color:#555555">});</span></code></pre>

<div id="attachment_186" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.muhuk.com/wp-content/uploads/2009/04/basic1.png"><img src="http://www.muhuk.com/wp-content/uploads/2009/04/basic1-300x187.png" alt="Basic Example" title="Basic Example" width="300" height="187" class="size-medium wp-image-186" /></a><p class="wp-caption-text">Basic Example</p></div>

<p>Nevermind the math. What is important is; this would be much harder to achieve with other, more advanced managers such as <code>Grid</code>.</p>

<h3>Canvas Layout Manager</h3>

<p><code>qx.ui.layout.Canvas</code> is a slightly advanced version of <code>Basic</code>. <code>Canvas</code> lets you define margins (of all four directions) and dimensions in percentage as well as in pixels.</p>

<p><code>Canvas</code> allows you to define all four margins. You don&#8217;t have to define all of them of course. For example if you define a <code>top</code> and <code>bottom</code> margin remaining space will be your widget&#8217;s <code>height</code><sup>1</sup>. Alternatively you can specify a <code>bottom</code> margin and a <code>height</code> for you widget. This way it will keep its position relative to container&#8217;s bottom edge.</p>

<p>One thing to keep in mind is <strong>margins are defined against container</strong>, not against a bounding box like <a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a>. Say, if you set the same <code>left</code> on two widgets, they&#8217;ll be stacked on top of each other if they happen to have the same vertical coordinates. The following example mimics a <code>Grid</code> layout using <code>Canvas</code>:</p>

<pre><span style="color:#9a9a9a">   1 </span><span style="color:#38ad24">/*</span>
<span style="color:#9a9a9a">   2 </span><span style="color:#38ad24">#asset(qooxdoolayouts/*)</span>
<span style="color:#9a9a9a">   3 </span><span style="color:#38ad24">*/</span>
<span style="color:#9a9a9a">   4 </span>qx<span style="color:#555555">.</span>Class<span style="color:#555555">.</span><span style="color:#d11ced">define</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;qooxdoolayouts.Application&quot;</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">   5 </span><span style="color:#555555">{</span>
<span style="color:#9a9a9a">   6 </span>    extend<span style="color:#555555">:</span> qx<span style="color:#555555">.</span>application<span style="color:#555555">.</span>Standalone<span style="color:#555555">,</span>
<span style="color:#9a9a9a">   7 </span>    members<span style="color:#555555">: {</span>
<span style="color:#9a9a9a">   8 </span>        main<span style="color:#555555">:</span> <span style="color:#ff3030; font-weight:bold">function</span><span style="color:#555555">(){</span>
<span style="color:#9a9a9a">   9 </span>            <span style="color:#ff3030; font-weight:bold">this</span><span style="color:#555555">.</span><span style="color:#d11ced">base</span><span style="color:#555555">(</span>arguments<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  10 </span>
<span style="color:#9a9a9a">  11 </span>            <span style="color:#ff3030; font-weight:bold">var</span> main_container <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>container<span style="color:#555555">.</span><span style="color:#d11ced">Composite</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  12 </span>
<span style="color:#9a9a9a">  13 </span>            <span style="color:#ff3030; font-weight:bold">var</span> layout_manager <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>layout<span style="color:#555555">.</span><span style="color:#d11ced">Canvas</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  14 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">setLayout</span><span style="color:#555555">(</span>layout_manager<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  15 </span>
<span style="color:#9a9a9a">  16 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span><span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>form<span style="color:#555555">.</span><span style="color:#d11ced">Button</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;Child Widget 1&quot;</span><span style="color:#555555">), {</span>
<span style="color:#9a9a9a">  17 </span>                left<span style="color:#555555">:</span> <span style="color:#32ba06">20</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  18 </span>                <span style="color:#0000ff">top</span><span style="color:#555555">:</span> <span style="color:#32ba06">10</span>
<span style="color:#9a9a9a">  19 </span>            <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  20 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span><span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>form<span style="color:#555555">.</span><span style="color:#d11ced">Button</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;Child Widget 2&quot;</span><span style="color:#555555">), {</span>
<span style="color:#9a9a9a">  21 </span>                left<span style="color:#555555">:</span> <span style="color:#32ba06">140</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  22 </span>                right<span style="color:#555555">:</span> <span style="color:#32ba06">20</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  23 </span>                <span style="color:#0000ff">top</span><span style="color:#555555">:</span> <span style="color:#32ba06">10</span>
<span style="color:#9a9a9a">  24 </span>            <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  25 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span><span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>form<span style="color:#555555">.</span><span style="color:#d11ced">Button</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;Child Widget 3&quot;</span><span style="color:#555555">), {</span>
<span style="color:#9a9a9a">  26 </span>                left<span style="color:#555555">:</span> <span style="color:#32ba06">20</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  27 </span>                <span style="color:#0000ff">top</span><span style="color:#555555">:</span> <span style="color:#32ba06">50</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  28 </span>                bottom<span style="color:#555555">:</span> <span style="color:#32ba06">10</span>
<span style="color:#9a9a9a">  29 </span>            <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  30 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span><span style="color:#ff3030; font-weight:bold">new</span> qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>form<span style="color:#555555">.</span><span style="color:#d11ced">Button</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;Child Widget 4&quot;</span><span style="color:#555555">), {</span>
<span style="color:#9a9a9a">  31 </span>                left<span style="color:#555555">:</span> <span style="color:#32ba06">140</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  32 </span>                right<span style="color:#555555">:</span> <span style="color:#32ba06">20</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  33 </span>                <span style="color:#0000ff">top</span><span style="color:#555555">:</span> <span style="color:#32ba06">50</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  34 </span>                bottom<span style="color:#555555">:</span> <span style="color:#32ba06">10</span>
<span style="color:#9a9a9a">  35 </span>            <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  36 </span>
<span style="color:#9a9a9a">  37 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">getChildren</span><span style="color:#555555">()[</span><span style="color:#32ba06">0</span><span style="color:#555555">].</span><span style="color:#d11ced">setWidth</span><span style="color:#555555">(</span><span style="color:#32ba06">100</span><span style="color:#555555">);</span>
<span style="color:#9a9a9a">  38 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">getChildren</span><span style="color:#555555">()[</span><span style="color:#32ba06">2</span><span style="color:#555555">].</span><span style="color:#d11ced">setWidth</span><span style="color:#555555">(</span><span style="color:#32ba06">100</span><span style="color:#555555">);</span>
<span style="color:#9a9a9a">  39 </span>
<span style="color:#9a9a9a">  40 </span>            <span style="color:#ff3030; font-weight:bold">var</span> application_root <span style="color:#555555">=</span> <span style="color:#ff3030; font-weight:bold">this</span><span style="color:#555555">.</span><span style="color:#d11ced">getRoot</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  41 </span>            application_root<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span>main_container<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  42 </span>
<span style="color:#9a9a9a">  43 </span>            application_root<span style="color:#555555">.</span><span style="color:#d11ced">addListener</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;resize&quot;</span><span style="color:#555555">,</span> <span style="color:#ff3030; font-weight:bold">function</span><span style="color:#555555">(</span>e<span style="color:#555555">) {</span>
<span style="color:#9a9a9a">  44 </span>                main_container<span style="color:#555555">.</span><span style="color:#d11ced">set</span><span style="color:#555555">({</span>
<span style="color:#9a9a9a">  45 </span>                    <span style="color:#1861a7">&quot;width&quot;</span><span style="color:#555555">:</span> qx<span style="color:#555555">.</span>bom<span style="color:#555555">.</span>Viewport<span style="color:#555555">.</span><span style="color:#d11ced">getWidth</span><span style="color:#555555">(),</span>
<span style="color:#9a9a9a">  46 </span>                    <span style="color:#1861a7">&quot;height&quot;</span><span style="color:#555555">:</span> qx<span style="color:#555555">.</span>bom<span style="color:#555555">.</span>Viewport<span style="color:#555555">.</span><span style="color:#d11ced">getHeight</span><span style="color:#555555">(),</span>
<span style="color:#9a9a9a">  47 </span>                <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  48 </span>            <span style="color:#555555">},</span> <span style="color:#ff3030; font-weight:bold">this</span><span style="color:#555555">);</span>
<span style="color:#9a9a9a">  49 </span>        <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  50 </span>    <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  51 </span><span style="color:#555555">});</span>
</pre>

<div id="attachment_188" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.muhuk.com/wp-content/uploads/2009/04/canvas1.png"><img src="http://www.muhuk.com/wp-content/uploads/2009/04/canvas1-300x187.png" alt="Canvas Example 1" title="Canvas Example 1" width="300" height="187" class="size-medium wp-image-188" /></a><p class="wp-caption-text">Canvas Example 1</p></div>

<p>We set two widgets&#8217; widths manually (see lines 37 &amp; 38) to get all the margins (almost) equal. The first row only has <code>top</code> margin set, but the second row has both <code>top</code> and <code>bottom</code> margins. We have given widgets in the second row <code>top</code> margins taking:</p>

<ul>
<li>Top margin of first row</li>
<li>Height of the widgets in the first row</li>
</ul>

<p>and</p>

<ul>
<li>Margin between first and second rows</li>
</ul>

<p>into account. The same thing is true for the <code>left</code> margin of second column. This is because, as I mentioned, margins are calculated relative to container edges.</p>

<p>If you need to position your controls relative to one another, like DOM positioning, you should probably look into other layout managers like <code>Grid</code>. A good example of a use case for <code>Canvas</code> can be a mapping application such as <a href="http://maps.google.com/">Google Maps</a>.</p>

<p>As I mentioned earlier <code>Canvas</code> layout accepts parameters in percentages. Following example sets vertical margins in pixels but horizontal margins in percentages:</p>

<pre><span style="color:#9a9a9a">   1 </span><span style="color:#555555">/*</span>
<span style="color:#9a9a9a">   2 </span><span style="color:#38ad24">#asset(qooxdoolayouts/*)</span>
<span style="color:#9a9a9a">   3 </span><span style="color:#555555">*/</span>
<span style="color:#9a9a9a">   4 </span>qx<span style="color:#555555">.</span>Class<span style="color:#555555">.</span><span style="color:#d11ced">define</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;qooxdoolayouts.Application&quot;</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">   5 </span><span style="color:#555555">{</span>
<span style="color:#9a9a9a">   6 </span>    extend<span style="color:#555555">:</span> qx<span style="color:#555555">.</span>application<span style="color:#555555">.</span>Standalone<span style="color:#555555">,</span>
<span style="color:#9a9a9a">   7 </span>    members<span style="color:#555555">: {</span>
<span style="color:#9a9a9a">   8 </span>        main<span style="color:#555555">:</span> <span style="color:#d11ced">function</span><span style="color:#555555">(){</span>
<span style="color:#9a9a9a">   9 </span>            this<span style="color:#555555">.</span><span style="color:#d11ced">base</span><span style="color:#555555">(</span>arguments<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  10 </span>
<span style="color:#9a9a9a">  11 </span>            var main_container <span style="color:#555555">=</span> new qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>container<span style="color:#555555">.</span><span style="color:#d11ced">Composite</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  12 </span>
<span style="color:#9a9a9a">  13 </span>            var layout_manager <span style="color:#555555">=</span> new qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>layout<span style="color:#555555">.</span><span style="color:#d11ced">Canvas</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  14 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">setLayout</span><span style="color:#555555">(</span>layout_manager<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  15 </span>
<span style="color:#9a9a9a">  16 </span>            var button <span style="color:#555555">=</span> new qx<span style="color:#555555">.</span>ui<span style="color:#555555">.</span>form<span style="color:#555555">.</span><span style="color:#d11ced">Button</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;Child Widget 1&quot;</span><span style="color:#555555">);</span>
<span style="color:#9a9a9a">  17 </span>            button<span style="color:#555555">.</span><span style="color:#d11ced">setMinWidth</span><span style="color:#555555">(</span><span style="color:#32ba06">250</span><span style="color:#555555">);</span>
<span style="color:#9a9a9a">  18 </span>            button<span style="color:#555555">.</span><span style="color:#d11ced">setMaxWidth</span><span style="color:#555555">(</span><span style="color:#32ba06">400</span><span style="color:#555555">);</span>
<span style="color:#9a9a9a">  19 </span>            main_container<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span>button<span style="color:#555555">, {</span>
<span style="color:#9a9a9a">  20 </span>                left<span style="color:#555555">:</span> <span style="color:#1861a7">&quot;30%&quot;</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  21 </span>                right<span style="color:#555555">:</span> <span style="color:#1861a7">&quot;30%&quot;</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  22 </span>                top<span style="color:#555555">:</span> <span style="color:#32ba06">40</span><span style="color:#555555">,</span>
<span style="color:#9a9a9a">  23 </span>                bottom<span style="color:#555555">:</span> <span style="color:#32ba06">40</span>
<span style="color:#9a9a9a">  24 </span>            <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  25 </span>
<span style="color:#9a9a9a">  26 </span>            var application_root <span style="color:#555555">=</span> this<span style="color:#555555">.</span><span style="color:#d11ced">getRoot</span><span style="color:#555555">();</span>
<span style="color:#9a9a9a">  27 </span>            application_root<span style="color:#555555">.</span><span style="color:#d11ced">add</span><span style="color:#555555">(</span>main_container<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  28 </span>
<span style="color:#9a9a9a">  29 </span>            application_root<span style="color:#555555">.</span><span style="color:#d11ced">addListener</span><span style="color:#555555">(</span><span style="color:#1861a7">&quot;resize&quot;</span><span style="color:#555555">,</span> <span style="color:#d11ced">function</span><span style="color:#555555">(</span>e<span style="color:#555555">) {</span>
<span style="color:#9a9a9a">  30 </span>                main_container<span style="color:#555555">.</span><span style="color:#f48c23">set</span><span style="color:#555555">({</span>
<span style="color:#9a9a9a">  31 </span>                    <span style="color:#1861a7">&quot;width&quot;</span><span style="color:#555555">:</span> qx<span style="color:#555555">.</span>bom<span style="color:#555555">.</span>Viewport<span style="color:#555555">.</span><span style="color:#d11ced">getWidth</span><span style="color:#555555">(),</span>
<span style="color:#9a9a9a">  32 </span>                    <span style="color:#1861a7">&quot;height&quot;</span><span style="color:#555555">:</span> qx<span style="color:#555555">.</span>bom<span style="color:#555555">.</span>Viewport<span style="color:#555555">.</span><span style="color:#d11ced">getHeight</span><span style="color:#555555">(),</span>
<span style="color:#9a9a9a">  33 </span>                <span style="color:#555555">});</span>
<span style="color:#9a9a9a">  34 </span>            <span style="color:#555555">},</span> this<span style="color:#555555">);</span>
<span style="color:#9a9a9a">  35 </span>        <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  36 </span>    <span style="color:#555555">}</span>
<span style="color:#9a9a9a">  37 </span><span style="color:#555555">});</span>
</pre>

<hr />

<p><strong>1</strong>: Whether your widget grows this high depends. Let&#8217;s say that height is reserved for your widget.</p>


<p>Related posts:<ol><li><a href='http://www.muhuk.com/2009/04/using-layouts-in-qooxdoo-index/' rel='bookmark' title='Permanent Link: Using Layouts In Qooxdoo &#8211; Index'>Using Layouts In Qooxdoo &#8211; Index</a></li>
<li><a href='http://www.muhuk.com/2009/05/nominate-qooxdoo-for-sourceforge-community-choice-awards/' rel='bookmark' title='Permanent Link: Nominate Qooxdoo for SourceForge Community Choice Awards'>Nominate Qooxdoo for SourceForge Community Choice Awards</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2009/04/using-layouts-in-qooxdoo-part-5-basic-canvas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
