<?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>maliboo blog &#187; mxml</title>
	<atom:link href="http://maliboo.pl/blog/category/mxml/feed/" rel="self" type="application/rss+xml" />
	<link>http://maliboo.pl</link>
	<description>Po prostu kulsko!</description>
	<lastBuildDate>Fri, 30 Apr 2010 10:18:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Listy, itemRenderer i RadioButton</title>
		<link>http://maliboo.pl/blog/2007/08/08/listy-itemrenderer-i-radiobutton/</link>
		<comments>http://maliboo.pl/blog/2007/08/08/listy-itemrenderer-i-radiobutton/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 21:10:21 +0000</pubDate>
		<dc:creator>maliboo</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[mxml]]></category>

		<guid isPermaLink="false">http://maliboo.pl/blog/2007/08/08/listy-itemrenderer-i-radiobutton/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->Flex i jego item renderery to fajna sprawa, ale dzisiaj w robocie natrafiliśmy na niezłą zagwozdkę. Tak jak w przypadku check boxów nie ma problemu, żeby zmienić wartość aktualnego obiektu (dostęp poprzez właściwość data), tak w przypadku radio sprawy się komplikują. Każda lista może mieć aktualnie zaznaczony tylko jeden przycisk radio, wiadomo. Tak jak dużym [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p><a href="http://www.adobe.com/go/flex">Flex</a> i jego <a href="http://www.adobe.com/devnet/flex/quickstart/using_item_renderers/">item renderery</a> to fajna sprawa, ale dzisiaj w robocie <abbr title="Jeszcze liczba mnoga ;-(">natrafiliśmy</abbr> na niezłą zagwozdkę. Tak jak w przypadku <a href="http://livedocs.adobe.com/flex/2/langref/mx/controls/CheckBox.html">check boxów</a> nie ma problemu, żeby zmienić wartość aktualnego obiektu (dostęp poprzez właściwość <code>data</code>), tak w przypadku <a href="http://livedocs.adobe.com/flex/2/langref/mx/controls/RadioButton.html">radio</a> sprawy się komplikują. Każda lista może mieć aktualnie zaznaczony tylko jeden przycisk radio, wiadomo. Tak jak dużym problemem nie jest przekazanie do itemrenderera wspólnej grupy <a href="http://livedocs.adobe.com/flex/2/langref/mx/controls/RadioButtonGroup.html"><code>RadioButtonGroup</code></a>, to sprawy komplikują się przy zarządzaniu kolekcją danych. Aktualny element przypisany <a href="http://www.adobeauthorizations.com/livedocs/flex/2/langref/mx/controls/listClasses/IListItemRenderer.html">item rendererowi</a> możemy łatwo zmienić przy pomocy interfejsu <a href="http://www.adobeauthorizations.com/livedocs/flex/2/langref/mx/core/IDataRenderer.html"><code>IDataRenderer</code></a> w następujący sposób: <code>data.pole = wartość</code>, ale kto zmieni poprzednio zaznaczoną? Ponieważ tu leżał główny problem.</p>
<p>W pracy mocno przekombinowałem z zewnętrznymi plikami klas, podczas gdy na spokojnie, w domu udało się to przepisać do jednego pliku <a href="http://en.wikipedia.org/wiki/MXML" title="Wstyd! Nie ma polskiej wersji...">MXML</a>. Ok, może też trochę przegiąłem, bo trochę się tu kaszany zrobiło, ale tak jak w przypadku <a href="/blog/2007/03/21/malifox/">dwudziestopięcio linijkowej przeglądarki</a> i tu chciałem upchnąć wszystko w jednym pliku, żeby można było łatwo stosować metodę <abbr title="Ctrl+C, Ctrl+V">kopiego-pejsta</abbr>.</p>
<p>Przy okazji było to też małe ćwiczonko do <a href="http://www.adobeauthorizations.com/livedocs/flex/2/langref/mxml/component.html">inline'owych komponentów</a>. Całkiem miłe to, chociaż trochę mniej wydajne, niż "prawdziwy" komponent we własnym pliku AS. Cały sekret leży w MXMLowym komponencie, który dziedziczy po <code>RadioButtonGroup</code> i nadpisuje jej metodę <code>setSelection</code>. Niestety jakoś nie mogę go zmusić do zobaczenia przestrzeni nazw <code>mx_internal</code> z frameworka, dlatego musiałem użyć "hacka":
<div class="igBar"><span id="lactionscript-2"><a href="#" onclick="javascript:showPlainTxt('actionscript-2'); return false;">PLAIN TEXT</a></span></p>
</div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-2">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">namespace mx_internal = <span style="color: #ff0000;">"http://www.adobe.com/2006/flex/mx/internal"</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Może ktoś ma lepszy pomysł? W każdym razie całość poniżej:</p>
<p><em>[Kod <a href="http://maliboo.pl/wp-content/2007/08/radiogroup.zip" title="RadioButton ItemRenderer">RadioButton ItemRenderer MXML</a> w załączniku, bo jak zwykle się coś sra z kolorowaniem składni]</em></p>
<p>Przy okazji, gdyby okazało się , że przekombinowałem i da się to łatwiej zrobić to proszę o info na mejla, lub w komentarzu.</p>
]]></content:encoded>
			<wfw:commentRss>http://maliboo.pl/blog/2007/08/08/listy-itemrenderer-i-radiobutton/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

