<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><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" version="2.0">

<channel>
	<title>Go!Verla Flex блог</title>
	
	<link>http://tearaway-tea.com/blog</link>
	<description>от Евгения Тютюнника</description>
	<pubDate>Mon, 29 Sep 2008 18:48:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/goverlaflexblog" type="application/rss+xml" /><item>
		<title>Шестая встреча UAFPUG, глазами глазовидца</title>
		<link>http://tearaway-tea.com/blog/2008/09/%d1%88%d0%b5%d1%81%d1%82%d0%b0%d1%8f-%d0%b2%d1%81%d1%82%d1%80%d0%b5%d1%87%d0%b0-uafpug-%d0%b3%d0%bb%d0%b0%d0%b7%d0%b0%d0%bc%d0%b8-%d0%b3%d0%bb%d0%b0%d0%b7%d0%be%d0%b2%d0%b8%d0%b4%d1%86%d0%b0/</link>
		<comments>http://tearaway-tea.com/blog/2008/09/%d1%88%d0%b5%d1%81%d1%82%d0%b0%d1%8f-%d0%b2%d1%81%d1%82%d1%80%d0%b5%d1%87%d0%b0-uafpug-%d0%b3%d0%bb%d0%b0%d0%b7%d0%b0%d0%bc%d0%b8-%d0%b3%d0%bb%d0%b0%d0%b7%d0%be%d0%b2%d0%b8%d0%b4%d1%86%d0%b0/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 12:09:41 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=108</guid>
		<description><![CDATA[Моё долгое пребывание в командировке во Львове закончилось посещением главной (и возможно единственной) тусовки флешеров и флексеров Украины. Мой новый сотрудник Сергей Павленко рассказал о Cairngorm, Ростислав Сирык о Mate, ещё один паренёк про PureMVC. Суть встречи была подчеркнута противостоянием этих фреймворков, но, лично я против всех этих «ворков» и процитирую Максима Гринёва:
Кожний фреймворк має [...]]]></description>
			<content:encoded><![CDATA[<p>Моё долгое пребывание в командировке во Львове закончилось посещением главной (и возможно единственной) тусовки флешеров и флексеров Украины. Мой новый сотрудник <a href="http://flexpower.in.ua/">Сергей Павленко</a> рассказал о <em>Cairngorm</em>, <a href="http://flash-ripper.com/">Ростислав Сирык</a> о <em>Mate</em>, ещё один паренёк про <em>PureMVC</em>. Суть встречи была подчеркнута противостоянием этих фреймворков, но, лично я против всех этих <em>«ворков»</em> и процитирую <a href="http://lostincuba.livejournal.com/">Максима Гринёва</a>:</p>
<blockquote><p>Кожний фреймворк має вирішувати свою певну задачу. Поглянем на світ <em>Java</em>, там <em>Hibernate</em> вирішує питання маппінгу <em>СУБД</em> і об´єктної моделі, <em>Spring</em> чудовий фреймворк для створення незалежних компонентів і т.п. Якщо ж ви бачите в використанні флекс фреймворків так званий «<em>silver bullet</em>», який позбавить вас всіх проблем, то наврядчи досягнете успіхів. Створення програм — це нетривіальний процес незалежно від технічних засобів.</p></blockquote>
<p>Неофициальная часть в баре <em>«Роберта Домса»</em> запомнится мне очень надолго. Особенно тот волшебный танец с Ростом, особенно новость о том что уже 22:28 (поезд отправлялся в 22:47), особенно тот факт, что я забыл свои вещи в камере хранения на Львовском вокзале (теперь думаю как их вернуть) — в общем, всё было очень особенно.</p>
<p>Спасибо за отличную компанию всем участникам. А также, отдельная признательность <a href="http://jabbypanda.com/">Андрею Панасу</a>, который, по словам авторитетов, был основным инициатором создания <a href="http://fpug.org.ua/">украинской FPUG</a>.</p>
<p>UPD: Рюкзак мне сегодня довёз тру-флексер (который на конфе задавал больше всего вопросов) — <a href="http://shishpipi.livejournal.com/">Сергей Шичинов</a>. Честь и уважение.</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/09/%d1%88%d0%b5%d1%81%d1%82%d0%b0%d1%8f-%d0%b2%d1%81%d1%82%d1%80%d0%b5%d1%87%d0%b0-uafpug-%d0%b3%d0%bb%d0%b0%d0%b7%d0%b0%d0%bc%d0%b8-%d0%b3%d0%bb%d0%b0%d0%b7%d0%be%d0%b2%d0%b8%d0%b4%d1%86%d0%b0/feed/</wfw:commentRss>
		</item>
		<item>
		<title>To Flex or not to Flex</title>
		<link>http://tearaway-tea.com/blog/2008/09/to-flex-or-not-to-flex/</link>
		<comments>http://tearaway-tea.com/blog/2008/09/to-flex-or-not-to-flex/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 09:52:13 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=91</guid>
		<description><![CDATA[Суть данной статьи заключается в изложении моего опыта по разработке приложений на технологии Flex в разрезе принятий решений о выборе или не выборе онной на конкретных проектах. Да, именно так, очень часто возникают ситуации, когда использование Flex не только невыгодно по временным ограничениям, но и губительно для проекта.

Быстро рассмотрим типы приложений, что бы составить план [...]]]></description>
			<content:encoded><![CDATA[<p>Суть данной статьи заключается в изложении моего опыта по разработке приложений на технологии Flex в разрезе принятий решений о выборе или не выборе онной на конкретных проектах. Да, именно так, очень часто возникают ситуации, когда использование Flex не только невыгодно по временным ограничениям, но и губительно для проекта.</p>
<p><span id="more-91"></span></p>
<p>Быстро рассмотрим типы приложений, что бы составить план обзора и поиска благоприятной почвы для старта разработки на Flex. По-видимому, все интересующие нас приложения уже можно разделить на вебтопные и десктопные. Веб-приложения могут быть обычными или <em>RIA</em>, и каждые из них могут иметь как <em>front-end</em> — собственно внешний сайт, так и <em>back-end</em> — админку. Не забудем так же и о том, что они могут быть как internet — для обычных обывателей сети, так и intranet — для корпоративных пользователей. С помощью механизма <em>Adobe AIR</em>, Flex стал доступен и на десктопе, но там его использование подчинено сходным требованиям как и в вебе.</p>
<h3>Веб-приложения, которые не RIA</h3>
<p>Flex практически никогда не нужен при разработке классических сайтов. Классическими я называю: домашние странички, сайты-визитки, новостные сервисы, форумы, блоги, порталы, социальные сети и т.п. Все, кто пытался реализовать их не на связке <em>HTML</em>+<em>JS</em>, в результате получал негибкую, тяжелую поделку, которая плохо индексируется, плохо рендерит текст, не поддерживает стандартную взаимосвязь с броузером и т.п.</p>
<p>Я участвовал в разработке подобного проекта в компании <a href="http://sonopia.com/">Sonopia</a>. Мы разрабатывали социальную сеть на Flex, которую изначально, под впечатлением тезисов <em>RIA</em>, руководство хотело позиционировать как насыщеную медиа контентом и прочими ультра-штучками. В результате мы получили набор стандартных сервисов: <em>Dashboard</em>, <em>Profile</em>, <em>Photos</em>, <em>Guestbook</em>, которые выглядели как минимум нелепо. В гостевой книге пользователи не могли вставлять теги форматирования текста и ссылки на фотки или флеш виджеты. Перемещение по разделам нормально не синхронизировалось с кнопкой <em>«Back»</em> в броузере. Выполняя минимальный функционал приложение весило 1,5 Мб. В какой-то момент, все заметили что скорость разработки того, что должно быть не Flex, где-то в два раза дольше чем на <em>HTML</em> и большую часть проекта дописывали уже используя стандартные технологии. В результате нам добавилось проблем с синхронизацией обоих частей проекта. Затем команду Flex разработчиков расформировали, а чуть позже старт-ап провалился.</p>
<p>Ещё один пример — портал top4top.ru, пусть он и писался, предусмотрительно, на чистом <em>Action Script</em>, тем не менее это хрестоматийный пример неправильного позиционирования технологии (не говоря уже об <a href="http://flash-ripper.com/archives/002573.php">общей идейной направленности</a>).</p>
<p>Для персонального интереса, во время изучения Flex, я сделал на нём пару стандартных сайтов для группы <a href="http://etwasunders.com/">Etwas Unders</a> (<a href="http://tearaway-tea.com/blog/2007/04/etwasunderscom/">есть описание</a>) и для <a href="http://jmak.com.ua/">студии JMAK</a>. Так как количество разделов и контента было не велико, то они выглядели сносно. Хотя многие посетители недоумевали, зачем там вообще Flex? Согласен — ни к чему. Единственный выигрыш — отсутствие проблем с версткой под основные броузеры (не отрицаю, что для кого-то это будет ключевой бонус).</p>
<p><img class="alignnone size-full wp-image-102" title="Etwas Unders" src="http://tearaway-tea.com/blog/wp-content/uploads/2008/09/etwasunders.jpg" alt="" width="500" height="350" /></p>
<p>Не так давно попалась ссылка на сайт <a href="http://xoalt.com/">http://xoalt.com/</a>, интернет-каталог товаров. Подобные проекты, как и интернет магазины или просто справочники чего-либо вообще запрещено разрабатывать на Flex. Самый главный критерий таких проектов — это высокая доступность поисковым машинам, с чем Flex, как и все флеш-приложения традиционно слабы.</p>
<p><img class="alignnone size-full wp-image-105" title="xoalt" src="http://tearaway-tea.com/blog/wp-content/uploads/2008/09/xoalt.jpg" alt="" width="500" height="350" /></p>
<p>Разработка админок, которые в последнее время часто делают на Flex, так же под вопросом. Если нужна гибкая работа с текстом — будут проблемы, если же вывод табличных данных с необходимостью редактирования, то Flex с <code>AdvancedDataGrid</code> компонентом может помочь быстро справиться с заданием. <em>Drag-n-drop</em> возможен и на <em>JS</em>, но, не спорю, на Flex это можно сделать быстрее и проще.</p>
<h3>RIA</h3>
<p>Как это ни странно, Flex рулит далеко не всегда и в этом лагере тоже. Иногда кажется, что в общем случае флеш плэер используется только для проигрования видео и музыки. Но, скоро ожидается повсемесное использование <em>HTML 5</em> с поддержкой данных штучек, что же, получается Flex так и не найдёт свою стабильную нишу и всегда будет только альтернативой? К счастью не всё так, и есть ряд критериев, при которых Flex просто необходим. Я опишу приблизительные тексты технического задания при котором можно смело выбирать Flex:</p>
<p><em>«Нужно разработать большую кросс-браузерную веб-систему, по мониторингу/управлению/статистике определённых процессов определённого предприятия или продукта. В системе ожидается много иерархических или табличных данных которые нужно сортировать, групировать и редактировать. Нужно запрограммировать более десятка разнообразных форм ввода и изменения данных. Код должен реализовывать практики ООП и быть самодокументированным так как проект долгий и текучка кадров неизбежна.»</em></p>
<p><em>«Нам нужна on-line система по обработке видеосигналов с нескольких источников, а так же соотвествующий UI по базовому редактированию и сохранению контента на сервер.»</em></p>
<p>Можно придумать ещё несколько подобных условий задач, но их будет объединять общий схожий мотив, который и есть ключевым коньком Flex. </p>
<blockquote><p>Flex – это наилучшее средство для разработки веб-приложений с большим количеством форм включая наборы нестандартных контролов ввода, с возможностью их скинования, включая все мультимедийные фичи флеш плеера, на основе легко сопровождаемого объектно-ориентированного программного кода.</p></blockquote>
<p>Так как подобные критерии чаще всего удовлетворяют корпоративные системы, мы и не видим очень много популярных Flex приложений среди известных пользовательских интернет-сервисов. Разве что он-лайн фотошопы и видео-редакторы.</p>
<p>Сейчас, я как раз и занят разработкой подобной корпоративной системы по управлению рекламным контентом на телевидении. Вместо долгих описаний, я приведу пару UI-заготовок, которые должны быть реализованы в сжатые сроки:</p>
<p><img class="alignnone size-full wp-image-93" title="WO" src="http://tearaway-tea.com/blog/wp-content/uploads/2008/09/wideorbit-1.jpg" alt="" width="500" height="325" /></p>
<p><img class="alignnone size-full wp-image-94" title="WO" src="http://tearaway-tea.com/blog/wp-content/uploads/2008/09/wideorbit-2.jpg" alt="" width="500" height="325" /></p>
<p>Думаю, коментарии, почему в данном случае выбран именно Flex излишни. По-сути, вся данная статья — один большой коментарий вызванный данным проектом.</p>
<p>В заключении можно всё резюмировать банальными фразами. Ваша цель как программиста взвесить многие факторы будущего приложения и основываясь на них не выбрать (чаще всего) или выбрать Flex. Если же вас принимают на вакансию Flex программиста в проект, где его роль сомнительна или абсурдна, подумайте обстоятельно, что бы исскуственно не стать <em>«слабым звеном»</em> в глазах нахальных жавистов или гордых сишарпщиков — сотрудников по проекту (и такое на моём опыте бывало).</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/09/to-flex-or-not-to-flex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>5 копеек о Mate Flex Framework</title>
		<link>http://tearaway-tea.com/blog/2008/09/5-%d0%ba%d0%be%d0%bf%d0%b5%d0%b5%d0%ba-%d0%be-mate-flex-framework/</link>
		<comments>http://tearaway-tea.com/blog/2008/09/5-%d0%ba%d0%be%d0%bf%d0%b5%d0%b5%d0%ba-%d0%be-mate-flex-framework/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 14:21:36 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=31</guid>
		<description><![CDATA[До последнего момента я очень скептически относился ко всем существующим фреймворкам для Flex. Я, конечно, не уделял особого внимания изучениям подробностей Cairngorm или PureMVC, но тем не менее мне было известно их основное устройство. Например я презираю глобальную доступность View из любого места кода в Cairngorm. Так же, меня напрягло количество абстрактных классов PureMVC, которые нужно наследовать, а код разбухает как на дрожжах. Имеено по-этому я никогда ничем не пользовался кроме [...]]]></description>
			<content:encoded><![CDATA[<p>До последнего момента я очень скептически относился ко всем существующим фреймворкам для <em>Flex</em>. Я, конечно, не уделял особого внимания изучениям подробностей <a href="http://opensource.adobe.com/wiki/display/cairngorm/">Cairngorm</a> или <a href="http://puremvc.org/">PureMVC</a>, но тем не менее мне было известно их основное устройство. Например я презираю глобальную доступность <em>View</em> из любого места кода в <em>Cairngorm</em>. Так же, меня напрягло количество абстрактных классов <em>PureMVC</em>, которые нужно наследовать, а код разбухает как на дрожжах. Имеено по-этому я никогда ничем не пользовался кроме базовой компонентно-событийной системы Flex Framework.</p>
<p>Поддавшись на восторженые отзывы риа-гуру я решил разобратся что и к чему. Не надейтесь, я не собирась тут расписывать по-русски о модели работы <a href="http://mate.asfusion.com/">Mate</a>, я опишу несколькими предложениями. Это действительно круто! И я отвечаю за свои слова.</p>
<p>Я считаю, успех <em>Mate</em> связан с тем, что это не портированый фреймворк, а написаный именно под <em>Flex</em>. Он использует основные (возможно и не очень правильные) принципы и особенности <em>Flex</em> фреймворка, такие как:</p>
<ul>
<li>наследование всех классов от <code>EventDispatcher</code>, которое позволяет использовать bubbling-события, как основные носители сообщений между <em>View</em>, <em>Model</em> и прочими сущностями;</li>
<li>довольно идентичную особенность биндинга, с помощью которой <em>Mate</em> наладило ненавязчивый <em>IOC</em> (Inversion of Controls);</li>
<li>разметку <em>mxml</em> для описания деклараций связующих механизмов приложения в простой и понятной форме.</li>
</ul>
<p>И все это работает поверх сущностей вашего приложения, без необходимости наследования утомляющих абстрактных классов команд, медиаторов, моделей и пр. Ну и на десерт, <em>Mate</em> фреймворк отлично расширяется путем наследования ваших дополнений от базовых управляющих классов.</p>
<p>В общем, листая документацию сайта, можно получить первое впечатление не более чем за час. Просмотр исходного кода подтвердает подозрения, что авторы проекта — отличные профессионалы, которые обернули нюансы <em>Flex</em> в бонусы. Нужно пользоваться!</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/09/5-%d0%ba%d0%be%d0%bf%d0%b5%d0%b5%d0%ba-%d0%be-mate-flex-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Устроился на постоянную работу в офис</title>
		<link>http://tearaway-tea.com/blog/2008/08/%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b8%d0%bb%d1%81%d1%8f-%d0%bd%d0%b0-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%bd%d1%83%d1%8e-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%83-%d0%b2-%d0%be%d1%84%d0%b8%d1%81/</link>
		<comments>http://tearaway-tea.com/blog/2008/08/%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b8%d0%bb%d1%81%d1%8f-%d0%bd%d0%b0-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%bd%d1%83%d1%8e-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%83-%d0%b2-%d0%be%d1%84%d0%b8%d1%81/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 13:51:49 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=26</guid>
		<description><![CDATA[В связи с окончательным разочарованием по-поводу удаленной работы на дому, я решил устроиться на стабильную офисную должность. В даный момент я уже работаю в компании EPAM на позиции Lead Software Engineer.
Скорее всего, я буду формировать еще одну команду флексеров (в уже существующей ключевую позицию занимает, также бывший сонопиец, Сергей Шичинов). По-этому, если кто-то заинтересован по-сотрудничать [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с окончательным разочарованием по-поводу удаленной работы на дому, я решил устроиться на стабильную офисную должность. В даный момент я уже работаю в компании <a href="http://www.epam.com/">EPAM</a> на позиции <em>Lead Software Engineer</em>.</p>
<p>Скорее всего, я буду формировать еще одну команду флексеров (в уже существующей ключевую позицию занимает, также бывший сонопиец, <a href="http://shishpipi.livejournal.com/">Сергей Шичинов</a>). По-этому, если кто-то заинтересован по-сотрудничать со мной лично, обращайтесь. Так как в Киеве хорошо подготовленых флексеров с надежными знаниями ООП не так и много, по-этому набирать будем даже начинающих или тех, кто заинтересован в <em>Flex</em> будучи, например, <em>C#</em> или <em>Java</em> программистом.</p>
<p>В общем, я социализировался :-).</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/08/%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b8%d0%bb%d1%81%d1%8f-%d0%bd%d0%b0-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%bd%d1%83%d1%8e-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%83-%d0%b2-%d0%be%d1%84%d0%b8%d1%81/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Пару слов о MacroContent Builder</title>
		<link>http://tearaway-tea.com/blog/2008/07/%d0%bf%d0%b0%d1%80%d1%83-%d1%81%d0%bb%d0%be%d0%b2-%d0%be-macrocontent-builder/</link>
		<comments>http://tearaway-tea.com/blog/2008/07/%d0%bf%d0%b0%d1%80%d1%83-%d1%81%d0%bb%d0%be%d0%b2-%d0%be-macrocontent-builder/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 14:09:24 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=72</guid>
		<description><![CDATA[На моей последней работе в голландской компании KZOO webcreatie я разрабатывал AIR приложение для визуального построения шаблонов к некоему серверному движку, которым владеет компания. Приложение предоставляет пользователям набор элементов (список, елемент, контент) для построения гибкой древовидной структуры. Результатом работы есть XML файл, в котором содержится как некоторая скриптовая логика, так и структура БД, а так [...]]]></description>
			<content:encoded><![CDATA[<p>На моей последней работе в голландской компании <a href="http://kzoo.nl/">KZOO webcreatie</a> я разрабатывал <em>AIR </em>приложение для визуального построения шаблонов к некоему серверному движку, которым владеет компания. Приложение предоставляет пользователям набор элементов (список, елемент, контент) для построения гибкой древовидной структуры. Результатом работы есть <em>XML</em> файл, в котором содержится как некоторая скриптовая логика, так и структура БД, а так же и <em>HTML</em> представление. Серверный движок на основе этого файла реализует связь с БД и генерирует конечную <em>HTML</em> страницу. Система довольно универсальная, но, конечно же, не может покрыть узкопрофильные решения, только типовые сайты.</p>
<p><script src="http://tearaway-tea.com/js/swfobject.js" type="text/javascript"></script> <script type="text/javascript"><!--
	var flashvars = {airversion: "1.0", appname: "MacroContent Builder", appurl: "http://tearaway-tea.com/blog/wp-content/uploads/2008/09/mc-builder.air", appid: "com.majoca.Puzzle", imageurl: "http://tearaway-tea.com/blog/wp-content/uploads/2008/09/mc-builder-badge.jpg", hidehelp: "true", str_err_airswf: "Running locally? The AIR proxy swf wont load properly when this demo is run from the local file system."	};
	swfobject.embedSWF("http://tearaway-tea.com/bin/AIRInstallBadge.swf", "mcbuilderairbadgecontent", "215", "180", "9.0.115", "http://tearaway-tea.com/bin/expressinstall.swf", flashvars, {bgcolor : "#FFFFFF"});
// --></script></p>
<div id="mcbuilderairbadgecontent"><strong>Hello, you either have JavaScript turned off or an old version of Adobe’s Flash Player. <a href="http://www.macromedia.com/go/getflashplayer/">Get the latest Flash player</a>.</strong> Application link: <a href="http://tearaway-tea.com/blog/wp-content/uploads/2008/09/mc-builder.air">http://tearaway-tea.com/blog/wp-content/uploads/2008/09/mc-builder.air</a>.</div>
<p> <br />
Программа доступна для ознакомительной установки. Наврядли удастся как-то использовать на практике, без соответствующего ПО для серверной стороны.</p>
<p>Некоторые детали: <span id="more-72"></span></p>
<p>Интерфейс программы выполнен без дополнительного «скинования». Я не использовал никаких фреймворков. Поддерживается <em>undo</em>/<em>redo</em> для всех операций. Из интересных архитектурных моментов могу описать процесс декларации метаданных для передачи информации в редактор свойств выбранного элемента в дереве.</p>
<p>По-сути, каждый элемент дерева это наследник базового класса <code>TreeNode</code>, в котором объявлены специфические для его типа свойста, например:</p>
<pre style="color:#000000;background:#ffffff;"><span style="color:#800000; font-weight:bold; ">public</span> <span style="color:#800000; font-weight:bold; ">class</span> PagesBaseNode <span style="color:#800000; font-weight:bold; ">extends</span> TreeNode <span style="color:#800080; ">{</span>

        <span style="color:#808030; ">[</span>Bindable<span style="color:#808030; ">]</span>
        <span style="color:#808030; ">[</span>Serializable<span style="color:#808030; ">]</span>
        <span style="color:#808030; ">[</span>Editable<span style="color:#808030; ">(</span>group<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">General</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> dependentGroup<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">Page</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> editor<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">CheckBoxEditor</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span>
            label<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">page</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> bindable<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">true</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> index<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">5</span><span style="color:#800000; ">"</span><span style="color:#808030; ">)</span><span style="color:#808030; ">]</span>
        <span style="color:#800000; font-weight:bold; ">public</span> function get page<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#808030; ">:</span> Boolean <span style="color:#800080; ">{</span>
            <span style="color:#800000; font-weight:bold; ">return</span> _page<span style="color:#808030; ">;</span>
        <span style="color:#800080; ">}</span>

        <span style="color:#800000; font-weight:bold; ">public</span> function set page<span style="color:#808030; ">(</span>value <span style="color:#808030; ">:</span> Boolean<span style="color:#808030; ">)</span> <span style="color:#808030; ">:</span> <span style="color:#800000; font-weight:bold; ">void</span> <span style="color:#800080; ">{</span>
            _page <span style="color:#808030; ">=</span> value<span style="color:#808030; ">;</span>
        <span style="color:#800080; ">}</span>

        <span style="color:#808030; ">[</span>Serializable<span style="color:#808030; ">]</span>
        <span style="color:#808030; ">[</span>Editable<span style="color:#808030; ">(</span>group<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">Page</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> editor<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">StringEditor</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> label<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">start template:</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> index<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">0</span><span style="color:#800000; ">"</span><span style="color:#808030; ">)</span><span style="color:#808030; ">]</span>
        <span style="color:#800000; font-weight:bold; ">public</span> function get startTemplate<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#808030; ">:</span> String <span style="color:#800080; ">{</span>
            <span style="color:#800000; font-weight:bold; ">return</span> _startTemplate<span style="color:#808030; ">;</span>
        <span style="color:#800080; ">}</span>

        <span style="color:#800000; font-weight:bold; ">public</span> function set startTemplate<span style="color:#808030; ">(</span>value <span style="color:#808030; ">:</span> String<span style="color:#808030; ">)</span> <span style="color:#808030; ">:</span> <span style="color:#800000; font-weight:bold; ">void</span> <span style="color:#800080; ">{</span>
            _startTemplate <span style="color:#808030; ">=</span> value<span style="color:#808030; ">;</span>
        <span style="color:#800080; ">}</span>

        <span style="color:#808030; ">[</span>Serializable<span style="color:#808030; ">]</span>
        <span style="color:#808030; ">[</span>Editable<span style="color:#808030; ">(</span>group<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">Page</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> editor<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">CollectionEditor</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> label<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">aliases:</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span>
            itemsEditor<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">TwoStringsEditor</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> itemsClass<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">PageAliasEntry</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span>
            itemField1<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">alias</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> itemField2<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">target</span><span style="color:#800000; ">"</span><span style="color:#808030; ">,</span> index<span style="color:#808030; ">=</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">1</span><span style="color:#800000; ">"</span><span style="color:#808030; ">)</span><span style="color:#808030; ">]</span>
        <span style="color:#800000; font-weight:bold; ">public</span> function get pageAliases<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#808030; ">:</span> ArrayCollection <span style="color:#800080; ">{</span>
            <span style="color:#800000; font-weight:bold; ">if</span> <span style="color:#808030; ">(</span>_pageAliases <span style="color:#808030; ">==</span> <span style="color:#0f4d75; ">null</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span>
                _pageAliases <span style="color:#808030; ">=</span> <span style="color:#800000; font-weight:bold; ">new</span> ArrayCollection<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span><span style="color:#808030; ">;</span>
            <span style="color:#800080; ">}</span>
            <span style="color:#800000; font-weight:bold; ">return</span> _pageAliases<span style="color:#808030; ">;</span>
        <span style="color:#800080; ">}</span>

        <span style="color:#800000; font-weight:bold; ">private</span> <span style="color:#800000; font-weight:bold; ">var</span> _page <span style="color:#808030; ">:</span> Boolean<span style="color:#808030; ">;</span>

        <span style="color:#800000; font-weight:bold; ">private</span> <span style="color:#800000; font-weight:bold; ">var</span> _startTemplate <span style="color:#808030; ">:</span> String<span style="color:#808030; ">;</span>

        <span style="color:#800000; font-weight:bold; ">private</span> <span style="color:#800000; font-weight:bold; ">var</span> _pageAliases <span style="color:#808030; ">:</span> ArrayCollection;
    <span style="color:#800080; ">}</span></pre>
<p>С помощью метаданных <code>Serializable</code> я указываю какое значение нужно сохранять в результирующем <em>XML</em>, блок <code>Editable</code> описывает тип редактора, подпись, позицию в наборе, а также, если свойство имеет списочный тип — класс элементов списка и названия полей в которые будут сохранятся значения.</p>
<p>Данное решение очень удобно тем, что при наличии более 10 типов элементов дерева в среднем с 5 уникальными свойствами в каждом из них, я избегаю разработки массы различных форм с разными наборами идентичных контролов для редактирования. При каждом выборе элемента дерева, редактор свойств, используя <code>Repeater</code>, генерирует набор из стандартных, предварительно запрограммированных редакторов: <code>StringEditor</code>, <code>CheckboxEditor</code>, <code>CollectionEditor</code>, <code>TwoStringsEditor </code>etc.</p>
<p><img class="size-full wp-image-73" title="editors" src="http://tearaway-tea.com/blog/wp-content/uploads/2008/09/editors.png" alt="TreeNode Properties Editor" width="439" height="318" /></p>
<p>Cчитывание метаданных из объекта — дело техники, это не сложно.</p>
<p>Я подумывал о том, что-бы вычленить базовые классы <code>TreeEditor</code>, <code>TreeArrow </code>и <code>TreeNode </code>как отдельную <em>open source</em> библиотеку. А так же, можно добавить код по обработке метаданных элементов дерева и редактора свойств туда же. Если в коментариях отпишется хотя-бы один человек, кому бы это пригодилось — я это сделаю.</p>
<p>На разработку, в общей сложности и в одиночку, я потратил 6 месяцев. Первые четыре на программирование, вторые два на исправление ошибок. Заказчик очень доволен и не хочет останавливаться на достигнутом. Я, правда, не уверен буду ли я учавствовать в этом продолжении.</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/07/%d0%bf%d0%b0%d1%80%d1%83-%d1%81%d0%bb%d0%be%d0%b2-%d0%be-macrocontent-builder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Работа на полторы недели для Flex программиста</title>
		<link>http://tearaway-tea.com/blog/2008/04/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d0%bd%d0%b0-%d0%bf%d0%be%d0%bb%d1%82%d0%be%d1%80%d1%8b-%d0%bd%d0%b5%d0%b4%d0%b5%d0%bb%d0%b8-%d0%b4%d0%bb%d1%8f-flex-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc/</link>
		<comments>http://tearaway-tea.com/blog/2008/04/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d0%bd%d0%b0-%d0%bf%d0%be%d0%bb%d1%82%d0%be%d1%80%d1%8b-%d0%bd%d0%b5%d0%b4%d0%b5%d0%bb%d0%b8-%d0%b4%d0%bb%d1%8f-flex-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 14:20:26 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=13</guid>
		<description><![CDATA[В связи с личной занятостю никак немогу (и не успею) выполнить небольшой проект для своего же заказчика из Голландии. Тому, кто возьмётся за выполнение оплата будет $15 за 1 час работы, по моим оценкам разработка потянет на 4-6 рабочих дней (со всеми рисками включительно). Проект очень простой.
Краткое описание: нужно создать swf компонент, который представляет из [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с личной занятостю никак немогу (и не успею) выполнить небольшой проект для своего же <a title="KZOO" href="http://kzoo.nl/">заказчика из Голландии</a>. Тому, кто возьмётся за выполнение оплата будет <strong>$15 за 1 час</strong> работы, по моим оценкам разработка потянет на 4-6 рабочих дней (со всеми рисками включительно). Проект очень простой.</p>
<p>Краткое описание: нужно создать swf компонент, который представляет из себя игру - разгадку кроссворда. Поле (матрица) слов всегда одинаковая, выглядит так</p>
<p><img src="http://tearaway-tea.com/temp/pazzle.gif" alt="" width="596" height="530" /></p>
<p>Компонент подгружает из сервера набор слов и описывающих их предложений (задача кроссворда), а также массив номеров ячеек из которых формируется ответ. После решения компонент отправляет на сервер емейл, дату, правильность решения. Подробности, после соглашения на разработку, можно будет обсудить с заказчиком (или мной если проблемы с английским).<script src="http://tearaway-tea.com/js/swfobject.js" type="text/javascript"></script> <script type="text/javascript"><!--
	var flashvars = {airversion: "1.0", appname: "Dagpuzzel", appurl: "http://kzoomail.nl/dagpuzzel/bin/puzzle.air", appid: "com.majoca.Puzzle", imageurl: "http://kzoomail.nl/dagpuzzel/images/badge.png", hidehelp: "true", str_err_airswf: "Running locally? The AIR proxy swf wont load properly when this demo is run from the local file system."	};
	swfobject.embedSWF("http://kzoomail.nl/dagpuzzel/bin/AIRInstallBadge.swf", "airbadgecontent", "215", "180", "9.0.115", "http://kzoomail.nl/dagpuzzel/bin/expressinstall.swf", flashvars, {bgcolor : "#FFFFFF"});
// --></script></p>
<div id="airbadgecontent"><strong>Hello, you either have JavaScript turned off or an old version of Adobe&#8217;s Flash Player. <a href="http://www.macromedia.com/go/getflashplayer/">Get the latest Flash player</a>.</strong> Application link: <a href="http://kzoomail.nl/dagpuzzel/bin/puzzle.air">http://kzoomail.nl/dagpuzzel/bin/puzzle.air</a>.</div>
<p> <br />
UPD: Проект выполнен и закрыт. Готовую работу можно увидеть по адрессу <a href="http://kzoomail.nl/dagpuzzel/">http://kzoomail.nl/dagpuzzel/</a>. Также, можно установить себе опубликованную выше AIR-версию.</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/04/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d0%bd%d0%b0-%d0%bf%d0%be%d0%bb%d1%82%d0%be%d1%80%d1%8b-%d0%bd%d0%b5%d0%b4%d0%b5%d0%bb%d0%b8-%d0%b4%d0%bb%d1%8f-flex-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Моя презентация с UA WEB 2008</title>
		<link>http://tearaway-tea.com/blog/2008/03/%d0%bc%d0%be%d1%8f-%d0%bf%d1%80%d0%b5%d0%b7%d0%b5%d0%bd%d1%82%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-ua-web-2008/</link>
		<comments>http://tearaway-tea.com/blog/2008/03/%d0%bc%d0%be%d1%8f-%d0%bf%d1%80%d0%b5%d0%b7%d0%b5%d0%bd%d1%82%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-ua-web-2008/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 15:07:48 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=12</guid>
		<description><![CDATA[На Первой украинской конференции веб-разработчиков UA WEB 2008 я рассказал о последнем релизе Adobe AIR, его API и показал пару примеров использования этой чудесной вещи. Слайды презентации можно глянуть прямо здесь (кликать, что-бы перейти на следующий слайд):
 
[Для показа нужно установить Flash Player]
От конференции остались самые положительные эмоции. Особенно, от того факта, что я сэкономил [...]]]></description>
			<content:encoded><![CDATA[<p>На <a href="http://uaweb.in.ua/">Первой украинской конференции веб-разработчиков UA WEB 2008</a> я рассказал о последнем релизе <a href="http://www.adobe.com/products/air/">Adobe AIR</a>, его <em>API</em> и показал пару примеров использования этой чудесной вещи. Слайды презентации можно глянуть прямо здесь (кликать, что-бы перейти на следующий слайд):</p>
<p><script src="http://tearaway-tea.com/js/swfobject.js" type="text/javascript"></script> <script type="text/javascript"><!--
swfobject.embedSWF("http://tearaway-tea.com/blog/wp-content/uploads/2008/04/UAWEB_AdobeAir.swf", "flashcontent", "500", "375", "9.0.0");
// --></script></p>
<div id="flashcontent" style="border: 2px solid;">[Для показа нужно установить Flash Player]</div>
<p>От конференции остались самые положительные эмоции. Особенно, от того факта, что я сэкономил $200 на вход :-).</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/03/%d0%bc%d0%be%d1%8f-%d0%bf%d1%80%d0%b5%d0%b7%d0%b5%d0%bd%d1%82%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-ua-web-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>А почему, собственно, Go!Verla?</title>
		<link>http://tearaway-tea.com/blog/2008/03/%d0%b0-%d0%bf%d0%be%d1%87%d0%b5%d0%bc%d1%83-%d1%81%d0%be%d0%b1%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be-goverla/</link>
		<comments>http://tearaway-tea.com/blog/2008/03/%d0%b0-%d0%bf%d0%be%d1%87%d0%b5%d0%bc%d1%83-%d1%81%d0%be%d0%b1%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be-goverla/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 14:42:34 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Go!Verla]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=38</guid>
		<description><![CDATA[Дело в том, что я постигал премудрости Flex в американском стартапе Sonopia. Мне на редкость повезло, так как в команду попали личности, которых еще нужно поискать: дотошный, педантичный, но ужасно веселый Сергей Ковалев, супер-специалист и ООП мыслитель Гринев Максим, энергичный Стас Заярский и толковый Мыкола Палиенко. Все эти парни поучавствовали в создании Flex Library для [...]]]></description>
			<content:encoded><![CDATA[<p>Дело в том, что я постигал премудрости <em>Flex</em> в американском стартапе <a href="http://www.sonopia.com/">Sonopia</a>. Мне на редкость повезло, так как в команду попали личности, которых еще нужно поискать: дотошный, педантичный, но ужасно веселый <a href="http://skovalyov.livejournal.com/">Сергей Ковалев</a>, супер-специалист и ООП мыслитель <a href="http://dyob.livejournal.com/">Гринев Максим</a>, энергичный Стас Заярский и толковый <a href="http://blog.smartweb.com.ua/">Мыкола Палиенко</a>. Все эти парни поучавствовали в создании <em>Flex Library</em> для проэкта, работавшего в рамках портала <a href="http://www.sonopia.com/">sonopia.com</a>. Так как все были против использования <em>Cairngorm</em>, библиотеку решили в будущем опубликовать как фреймворк <em>Go!Verla</em>. Но будущее было иным.</p>
<p>После того как стартап прогорел и флексеров разогнали, мы с Максимом решили позаботиться о коде, который был довольно проектно-независим, выделив его отдельный open-source набор полезных классов. Так и образовалась <a href="http://code.google.com/p/goverla/">Go!Verla Flex Library</a>, которая, по-видимому, навсегда останется в alpha-версии, без документации, понятной только нескольким людям — нам.</p>
<p>Но, вы, конечно, можете также присоединиться к нашей мечте.</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/03/%d0%b0-%d0%bf%d0%be%d1%87%d0%b5%d0%bc%d1%83-%d1%81%d0%be%d0%b1%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be-goverla/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Компонент ResizeableLayoutBox</title>
		<link>http://tearaway-tea.com/blog/2008/03/%d0%ba%d0%be%d0%bc%d0%bf%d0%be%d0%bd%d0%b5%d0%bd%d1%82-orggoverlacontainersresizeablelayoutbox/</link>
		<comments>http://tearaway-tea.com/blog/2008/03/%d0%ba%d0%be%d0%bc%d0%bf%d0%be%d0%bd%d0%b5%d0%bd%d1%82-orggoverlacontainersresizeablelayoutbox/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 13:09:46 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Go!Verla]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=7</guid>
		<description><![CDATA[
(пример)
Компонент org.goverla.containers.ResizeableLayoutBox предназначен для построения оконных интерфейсов типа dockable IDE. В связке с ним нужно использовать контейнер org.goverla.containers.CollapsablePanel, который предоставляет возможность сжимать и разворачивать панели.
В данной реализации можно использовать как вертикальное (по типу Accordion), так и горизонтальное позиционирование панелей. Для того что-бы изменить размер панели, нужно мышкой  тянуть за её заголовок. При растягивании принимаются [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tearaway-tea.com/projects/goverla/resizable-layout/"><img title="Resizable Layout" src="http://tearaway-tea.com/blog/wp-content/uploads/2008/04/resizable-layout.gif" alt="" width="300" height="300" /><br />
(пример)</a></p>
<p>Компонент <code>org.goverla.containers.ResizeableLayoutBox</code> предназначен для построения оконных интерфейсов типа dockable <em>IDE</em>. В связке с ним нужно использовать контейнер <code>org.goverla.containers.CollapsablePanel</code>, который предоставляет возможность сжимать и разворачивать панели.</p>
<p>В данной реализации можно использовать как вертикальное (по типу <em>Accordion</em>), так и горизонтальное позиционирование панелей. Для того что-бы изменить размер панели, нужно мышкой  тянуть за её заголовок. При растягивании принимаются в расчет параметры <code>minWidth, maxWidth, minHeight, maxHeight</code>.</p>
<p>Классы можно взять из библиотеки <a href="http://code.google.com/p/goverla/">Go!Verla</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2008/03/%d0%ba%d0%be%d0%bc%d0%bf%d0%be%d0%bd%d0%b5%d0%bd%d1%82-orggoverlacontainersresizeablelayoutbox/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Возврат к DragManagerImpl в AIR-приложениях</title>
		<link>http://tearaway-tea.com/blog/2007/12/%d0%b2%d0%be%d0%b7%d0%b2%d1%80%d0%b0%d1%82-%d0%ba-dragmanagerimpl-%d0%b2-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f%d1%85-%d0%b4%d0%bb%d1%8f-air/</link>
		<comments>http://tearaway-tea.com/blog/2007/12/%d0%b2%d0%be%d0%b7%d0%b2%d1%80%d0%b0%d1%82-%d0%ba-dragmanagerimpl-%d0%b2-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f%d1%85-%d0%b4%d0%bb%d1%8f-air/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 12:27:28 +0000</pubDate>
		<dc:creator>tearaway_Tea</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tearaway-tea.com/blog/?p=6</guid>
		<description><![CDATA[Наши дорогие индуские программисты сделали весьма много гадостей в релизе Flex Beta 3. Одна из самых неприятных — это использование по умолчанию NativeDragManagerImpl в DragManager. Причем, нет никакой возможности использовать DragManagerImpl, как было раньше.
Впринципе их можно понять, ведь в приложениях написаных для AIR нужна поддержка drag-n-drop с ОС, но не давать возможности выбирать, это, как всегда, [...]]]></description>
			<content:encoded><![CDATA[<p>Наши дорогие индуские программисты сделали весьма много гадостей в релизе <em>Flex Beta 3</em>. Одна из самых неприятных — это использование по умолчанию <code>NativeDragManagerImpl</code> в <code>DragManager</code>. Причем, нет никакой возможности использовать <code>DragManagerImpl</code>, как было раньше.</p>
<p>Впринципе их можно понять, ведь в приложениях написаных для <em>AIR</em> нужна поддержка drag-n-drop с ОС, но не давать возможности выбирать, это, как всегда, плохо. Существует очень грязный хак: нужно присоединить исходники <em>Flex Framework</em> к нашему проекту <em>Project Preferences -&gt; Flex Build Path -&gt; Source Path</em>, которые находятся в <em>/Applications/Adobe Flex Builder 3 Plug-in/sdks/3.0.0/frameworks/projects/framework/src</em>. После этого мы можем поменять в классе <code>SystemManager</code> функцию <code>docFrameHandler()</code>, нужно оставить только данный код:</p>
<p><code>Singleton.registerClass("mx.managers::IDragManager",<br />
Class(getDefinitionByName("mx.managers::DragManagerImpl")));</code></p>
<p>После перекомпиляции мы получим <code>DragManager</code> который использует <code>DragManagerImpl</code> по умолчанию.</p>
]]></content:encoded>
			<wfw:commentRss>http://tearaway-tea.com/blog/2007/12/%d0%b2%d0%be%d0%b7%d0%b2%d1%80%d0%b0%d1%82-%d0%ba-dragmanagerimpl-%d0%b2-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f%d1%85-%d0%b4%d0%bb%d1%8f-air/feed/</wfw:commentRss>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 1.542 seconds --><!-- Cached page served by WP-Cache -->
