<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7431072322849718400</id><updated>2012-01-03T11:50:59.385-08:00</updated><category term='List'/><title type='text'>Struts for Adobe Flex</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://strutsforflex.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://strutsforflex.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kirill Trofimov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-NjK8b3-QG0Y/AAAAAAAAAAI/AAAAAAAAC88/1ME7C_2bvFw/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7431072322849718400.post-8573543341852796931</id><published>2009-02-14T13:31:00.000-08:00</published><updated>2009-02-14T22:21:49.805-08:00</updated><title type='text'>WindowManager</title><content type='html'>package&lt;br /&gt;{&lt;br /&gt; import flash.events.Event;&lt;br /&gt;&lt;br /&gt; import mx.core.UIComponent;&lt;br /&gt; import mx.core.UIComponentGlobals;&lt;br /&gt; import mx.core.mx_internal;&lt;br /&gt; import mx.managers.FocusManager;&lt;br /&gt; import mx.managers.IFocusManagerContainer;&lt;br /&gt; import mx.managers.ILayoutManagerClient;&lt;br /&gt;&lt;br /&gt;    use namespace mx_internal;&lt;br /&gt;&lt;br /&gt; public class WindowManagerImpl&lt;br /&gt; {&lt;br /&gt;  private var _windowContainer:UIComponent;&lt;br /&gt;        private var _popups:Array = [];&lt;br /&gt;&lt;br /&gt;  public function WindowManagerImpl()&lt;br /&gt;  {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public function set windowContainer(value:UIComponent):void&lt;br /&gt;  {&lt;br /&gt;   _windowContainer = value;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public function addWindow(window:UIComponent):void&lt;br /&gt;  {&lt;br /&gt;   window.isPopUp = true;&lt;br /&gt;         _windowContainer.addChild(window);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         var fm:FocusManager = new FocusManager(window as IFocusManagerContainer, true);&lt;br /&gt;         _windowContainer.systemManager.numModalWindows++;&lt;br /&gt;&lt;br /&gt;      if (window is ILayoutManagerClient )&lt;br /&gt;      {&lt;br /&gt;          UIComponentGlobals.layoutManager.validateClient(ILayoutManagerClient (window), true);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;         window.addEventListener(Event.REMOVED, handleRemove);&lt;br /&gt;         window.setFocus();&lt;br /&gt;         _popups.push(window);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;        private function handleRemove(event:Event):void&lt;br /&gt;        {&lt;br /&gt;         var window:UIComponent = event.target as UIComponent;&lt;br /&gt;         _windowContainer.systemManager.numModalWindows--;&lt;br /&gt;         _windowContainer.systemManager.removeFocusManager(IFocusManagerContainer(window));&lt;br /&gt;         _popups.pop();&lt;br /&gt;         if (_popups.length &gt; 0)&lt;br /&gt;         {&lt;br /&gt;          var lastWindow:UIComponent = _popups[_popups.length - 1] as UIComponent;&lt;br /&gt;       lastWindow.focusManager.activate();&lt;br /&gt;         }&lt;br /&gt;         _windowContainer.setFocus();&lt;br /&gt;         window.removeEventListener(Event.REMOVED, handleRemove);&lt;br /&gt;         window.isPopUp = false;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;  public function removeWindow(window:UIComponent):void&lt;br /&gt;  {&lt;br /&gt;   _windowContainer.removeChild(window);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7431072322849718400-8573543341852796931?l=strutsforflex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://strutsforflex.blogspot.com/feeds/8573543341852796931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7431072322849718400&amp;postID=8573543341852796931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/8573543341852796931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/8573543341852796931'/><link rel='alternate' type='text/html' href='http://strutsforflex.blogspot.com/2009/02/windowmanager.html' title='WindowManager'/><author><name>Kirill Trofimov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-NjK8b3-QG0Y/AAAAAAAAAAI/AAAAAAAAC88/1ME7C_2bvFw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7431072322849718400.post-5417225013240785343</id><published>2008-03-03T12:11:00.000-08:00</published><updated>2008-06-13T00:16:33.723-07:00</updated><title type='text'>How to set a custom ToolTipManager</title><content type='html'>I needed to set a custom implementation of the ToolTipManager (more struts for our life!!!). I was looking for solution and found it. Here it is.&lt;br /&gt;&lt;br /&gt;To register your own class you should invoke Singleton.registerClass(interfaceName, clazz) method with appropriate parameters. If class with interfaceName have been registered yet you cannot override it . It means you cannot register class in creationComplete, initialize or preinitialize handlers. You should create custom Preloader class and register class in constructor and set one to the application class via MXML code:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&amp;lt;&lt;/span&gt;mx:&lt;span style="color: rgb(127, 0, 85);"&gt;Application&lt;/span&gt; xmlns:mx=&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;http&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;//&lt;/span&gt;&lt;span style="color: rgb(63, 63, 191);"&gt;www.adobe.com&lt;/span&gt;&lt;span style="color: rgb(63, 63, 191);"&gt;/2006/mxml&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt; layout=&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;absolute&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt; preloader=&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;CustomPreloader&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is the example of custom preloader class:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   &lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;class&lt;/span&gt; CustomPreloader &lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;extends&lt;/span&gt; DownloadProgressBar&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;public&lt;/span&gt; function CustomPreloader()&lt;br /&gt;       {&lt;br /&gt;           &lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;super&lt;/span&gt;();&lt;br /&gt;           Singleton.&lt;span style="color: rgb(127, 0, 85); font-weight: bold;"&gt;registerClass&lt;/span&gt;(&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;mx.managers::IToolTipManager2&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"&lt;/span&gt;,&lt;br /&gt;                                   CustomToolTipManager);&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Maybe anyone has another solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7431072322849718400-5417225013240785343?l=strutsforflex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://strutsforflex.blogspot.com/feeds/5417225013240785343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7431072322849718400&amp;postID=5417225013240785343' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/5417225013240785343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/5417225013240785343'/><link rel='alternate' type='text/html' href='http://strutsforflex.blogspot.com/2008/03/how-to-set-custom-tooltipmanager.html' title='How to set a custom ToolTipManager'/><author><name>Kirill Trofimov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-NjK8b3-QG0Y/AAAAAAAAAAI/AAAAAAAAC88/1ME7C_2bvFw/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7431072322849718400.post-3728799457143142878</id><published>2008-02-22T03:53:00.000-08:00</published><updated>2008-02-22T04:06:49.604-08:00</updated><title type='text'>SingleListener</title><content type='html'>Добаляет Listener к объекту который срабатывает только 1 раз.&lt;br /&gt;&lt;div style="overflow: auto"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public &lt;span style='color:#800000; font-weight:bold; '&gt;class&lt;/span&gt; SingleListener  &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    public static &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; wrap&lt;span style='color:#808030; '&gt;(&lt;/span&gt;target: IEventDispatcher, eventName: &lt;span style='color:#bb7977; '&gt;String&lt;/span&gt;, callback: &lt;span style='color:#800000; font-weight:bold; '&gt;Function&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;    &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        var listener: &lt;span style='color:#800000; font-weight:bold; '&gt;Function&lt;/span&gt; &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; &lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;event&lt;/span&gt;: &lt;span style='color:#800000; font-weight:bold; '&gt;Event&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;        &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;                try &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                    callback&lt;span style='color:#808030; '&gt;.&lt;/span&gt;call&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;event&lt;/span&gt;&lt;span style='color:#808030; '&gt;.&lt;/span&gt;currentTarget, &lt;span style='color:#800000; font-weight:bold; '&gt;event&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;                &lt;span style='color:#800080; '&gt;}&lt;/span&gt; finally &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;                    target&lt;span style='color:#808030; '&gt;.&lt;/span&gt;removeEventListener&lt;span style='color:#808030; '&gt;(&lt;/span&gt;eventName, listener&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;                &lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;        target&lt;span style='color:#808030; '&gt;.&lt;/span&gt;addEventListener&lt;span style='color:#808030; '&gt;(&lt;/span&gt;eventName, listener&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Пример&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color:#808030; '&gt;[&lt;/span&gt;Embed&lt;span style='color:#808030; '&gt;(&lt;/span&gt;source&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#800000; '&gt;"&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;/res/image.png&lt;/span&gt;&lt;span style='color:#800000; '&gt;"&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#808030; '&gt;[&lt;/span&gt;Bandable&lt;span style='color:#808030; '&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;private var _imageSource: &lt;span style='color:#800000; font-weight:bold; '&gt;Class&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;private var _image: Image &lt;span style='color:#808030; '&gt;=&lt;/span&gt; new Image&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;override protected &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; createChildren&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    super&lt;span style='color:#808030; '&gt;.&lt;/span&gt;createChildren&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    addChild&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;source &lt;span style='color:#808030; '&gt;=&lt;/span&gt; _imageSource;&lt;br /&gt;    workWithImageSize&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;width&lt;/span&gt;, _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;height&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;private &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; workWithImageSize&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;width&lt;/span&gt;: Number, &lt;span style='color:#bb7977; font-weight:bold; '&gt;height&lt;/span&gt;: Number&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;   trace&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;width&lt;/span&gt; &lt;span style='color:#808030; '&gt;+&lt;/span&gt; &lt;span style='color:#800000; '&gt;"&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;x&lt;/span&gt;&lt;span style='color:#800000; '&gt;"&lt;/span&gt; &lt;span style='color:#808030; '&gt;+&lt;/span&gt; &lt;span style='color:#bb7977; font-weight:bold; '&gt;height&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Output:&lt;br /&gt;0x0&lt;br /&gt;&lt;br /&gt;Но на самом деле картинка "/res/image.png" имеет размеры 640x480. Т.е. реальные данные о размере картинки мы получим после первого изменения размеров объекта _image.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;override protected &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; createChildren&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;    super&lt;span style='color:#808030; '&gt;.&lt;/span&gt;createChildren&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    addChild&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;source &lt;span style='color:#808030; '&gt;=&lt;/span&gt; _imageSource;&lt;br /&gt;    &lt;span style='color:#696969; '&gt;//use this strut&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    SingleListener&lt;span style='color:#808030; '&gt;.&lt;/span&gt;wrap&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image, ResizeEvent&lt;span style='color:#808030; '&gt;.&lt;/span&gt;RESIZE,&lt;br /&gt;       &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; &lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;event&lt;/span&gt;: &lt;span style='color:#800000; font-weight:bold; '&gt;Event&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;       &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           workWithImageSize&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;width&lt;/span&gt;, _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;height&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Output:&lt;br /&gt;640x480&lt;br /&gt;&lt;br /&gt;Если после каждого изменения source требуется обработать размеры картинки, можно поступить так.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;override protected &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; createChildren&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;    super&lt;span style='color:#808030; '&gt;.&lt;/span&gt;createChildren&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    addChild&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;addEventListener&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#800000; '&gt;"&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;sourceChanged&lt;/span&gt;&lt;span style='color:#800000; '&gt;"&lt;/span&gt;, doOnSourceChanged &lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;    _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;source &lt;span style='color:#808030; '&gt;=&lt;/span&gt; _imageSource;&lt;br /&gt;&lt;br /&gt;&lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;private fucntion doOnSourceChanged&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;event&lt;/span&gt;: &lt;span style='color:#800000; font-weight:bold; '&gt;Event&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style='color:#696969; '&gt;//use this strut here&lt;/span&gt;&lt;br /&gt;    SingleListener&lt;span style='color:#808030; '&gt;.&lt;/span&gt;wrap&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image, ResizeEvent&lt;span style='color:#808030; '&gt;.&lt;/span&gt;RESIZE,&lt;br /&gt;       &lt;span style='color:#800000; font-weight:bold; '&gt;function&lt;/span&gt; &lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;event&lt;/span&gt;: &lt;span style='color:#800000; font-weight:bold; '&gt;Event&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;: void&lt;br /&gt;       &lt;span style='color:#800080; '&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           workWithImageSize&lt;span style='color:#808030; '&gt;(&lt;/span&gt;_image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;width&lt;/span&gt;, _image&lt;span style='color:#808030; '&gt;.&lt;/span&gt;&lt;span style='color:#bb7977; font-weight:bold; '&gt;height&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style='color:#800080; '&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7431072322849718400-3728799457143142878?l=strutsforflex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://strutsforflex.blogspot.com/feeds/3728799457143142878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7431072322849718400&amp;postID=3728799457143142878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/3728799457143142878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/3728799457143142878'/><link rel='alternate' type='text/html' href='http://strutsforflex.blogspot.com/2008/02/singlelistener.html' title='SingleListener'/><author><name>Dimitry Razumovskiy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-yzxz0_pc7rA/AAAAAAAAAAI/AAAAAAAAAK0/1FHyTTF1iUI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7431072322849718400.post-6815896885740348296</id><published>2008-02-20T04:07:00.000-08:00</published><updated>2008-03-03T12:56:42.114-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='List'/><title type='text'>Custom List</title><content type='html'>List component doesn't allow to disable COPY action if Drag'n'Drop enabled. The following is a custom component that permit to disable COPY action:&lt;br /&gt;&lt;div style="overflow:auto;"&gt;&lt;br /&gt;&lt;pre&gt;package org&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;selectionLists&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;import mx&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;controls&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;List;&lt;br /&gt;import flash&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;events&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;Event&lt;/span&gt;;&lt;br /&gt;import mx&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;events&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;DragEvent;&lt;br /&gt;import mx&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;managers&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;DragManager;&lt;br /&gt;&lt;br /&gt;public &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; CustomList extends List&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    private var _dragCopyEnabled:Boolean &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    public &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; get dragCopyEnabled&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;:Boolean &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; _dragCopyEnabled;&lt;br /&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    public &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; set dragCopyEnabled&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119); font-weight: bold;"&gt;value&lt;/span&gt;:Boolean&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;:void &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;        _dragCopyEnabled &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119); font-weight: bold;"&gt;value&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    override protected &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; dragDropHandler&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;:DragEvent&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;:void &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;!_dragCopyEnabled&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;action &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; DragManager&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;MOVE;&lt;br /&gt;            DragManager&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;showFeedback&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;DragManager&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;MOVE&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        super&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;dragDropHandler&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    override protected &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; dragEnterHandler&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;:DragEvent&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;:void &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;!_dragCopyEnabled&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;ctrlKey &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        super&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;dragEnterHandler&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    override protected &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; dragOverHandler&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;:DragEvent&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;:void &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;!_dragCopyEnabled&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;ctrlKey &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        super&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;dragOverHandler&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;event&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7431072322849718400-6815896885740348296?l=strutsforflex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://strutsforflex.blogspot.com/feeds/6815896885740348296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7431072322849718400&amp;postID=6815896885740348296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/6815896885740348296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7431072322849718400/posts/default/6815896885740348296'/><link rel='alternate' type='text/html' href='http://strutsforflex.blogspot.com/2008/02/custom-list.html' title='Custom List'/><author><name>Kirill Trofimov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-NjK8b3-QG0Y/AAAAAAAAAAI/AAAAAAAAC88/1ME7C_2bvFw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
