<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>SnippetRepoBrowser</title>
    <link>http://snippet.gnstudio.com/snippetrepobrowser/index</link>    
    <description>RSS Feed of SnippetRepoBrowser (Global RSS)</description>    
    <language>en-us</language>
    <pubDate>Thu, 09 Feb 2012 20:50:13 +0100</pubDate>
    <docs>SnippetRepoBrowser/index</docs>
    <generator>SnippetRepoBrowser Feed Generator</generator>
    <item>
      <title><![CDATA[DataGrid Custom Drag]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/35</link>
      <description><![CDATA[it&#39;s simple to add drag/drop feature to DataGrid, just add dragEnabled=&quot;true&quot;, but in most cases the default drag behaviour is not what you expect &#39;cause it renders the whole row during dragging operation. There are different ways to change, the one i&#39;m going to show is about extending DataGridDragProxy class, here is the summary of steps:<br />- create a custom component that extends DataGrid<br />- assign a default DataGridDragProxy via dragImage overriden method<br />- create a class that extends DataGridDragProxy<br />- override createChildren method and work within to implement your stuff<br />- use your custom comp and use the attribute dragProxy to point towards your DataGridDragProxy extended class<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">// custom component, say the name is: AssetDataGrid<br /><br />&lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;mx:DataGrid xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml&quot;&gt;" target="_blank"><a href="http://www.adobe.com/2006/mxml&quot;&gt;" target="_blank">http://www.adobe.com/2006/mxml&quot;&gt;</a></a><br /><br />	&lt;mx:Script&gt;<br />		&lt;![CDATA[<br />		import mx.controls.dataGridClasses.DataGridDragProxy;<br />		import mx.core.IUIComponent;<br /><br />		import prj.ui.*;<br /><br />		/**<br />		* @public<br />		* class to use as DragProxy image<br />		*/<br />		[Bindable]<br />		public var dragProxy:Class = DataGridDragProxy; //set the default value to the standard DataGridDragProxy class<br /><br />		override protected function get dragImage():IUIComponent {<br />			var dgdp:IUIComponent = new dragProxy();<br />			dgdp.owner = this;<br />			return dgdp;<br />		}<br />		]]&gt;<br />	&lt;/mx:Script&gt;<br />&lt;/mx:DataGrid&gt;<br /><br />// DataGridDragProxy extended class, AssetDragProxy<br /><br />package prj.ui {<br /><br />    import flash.display.*;<br /><br />    import mx.core.*;<br />    import mx.controls.*;<br />	import mx.controls.dataGridClasses.DataGridDragProxy;<br />    import mx.controls.listClasses.IListItemRenderer;<br /><br />	import prj.ui.*;<br /><br />    public class AssetDragProxy extends DataGridDragProxy {<br /><br />		[Embed(source=&quot;/../assets/stock/layout.png&quot;)]<br />		[Bindable]<br />		private var LayoutIcon:Class; // custom drag icon<br /><br />		/**<br />		 * the constructor<br />		 */<br />        public function AssetDragProxy():void {<br />            super();<br />        }<br /><br />        override protected function createChildren():void {<br /><br />        	super.createChildren();<br /><br />        	var do2dContent:* = getChildAt(0);<br /><br />        	while (do2dContent.numChildren) <br />        		do2dContent.removeChildAt(0); // remove all unuseful children, be aware of the mask concerns if your are going to put cumbersome stuff<br /><br />            var items:Array = AssetDataGrid(owner).selectedIndices;<br />            var dg:AssetDataGrid = AssetDataGrid(owner);<br /><br />			// your stuff here<br />            var item:Object = dg.dataProvider[items[0]];<br />            var label:UITextField = new UITextField();<br />            label.text = item.name;<br />            label.x = 16;<br /><br />			var bmp:Bitmap = new LayoutIcon() as Bitmap;<br />            do2dContent.addChild(bmp);<br />            do2dContent.addChild(label);<br /><br />            x = this.mouseX - 15;<br />        }<br />    }<br />}<br /><br />// demo:<br />// files: src<br />//         |_ DemoApp.mxml<br />//              |_ prj<br />//                  |_ ui<br />//                     |_ AssetDataGrid.mxml<br />//                     |_ AssetDragProxy.as<br /><br />&lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;mx:Application<br />	xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml&quot;" target="_blank"><a href="http://www.adobe.com/2006/mxml&quot;" target="_blank">http://www.adobe.com/2006/mxml&quot;</a></a><br />	xmlns:ui=&quot;prj.ui.*&quot;  width=&quot;100%&quot; height=&quot;100%&quot;&gt;<br /><br />	&lt;mx:ArrayCollection id=&quot;stubDataset&quot;&gt;<br />		&lt;mx:Object name=&quot;child_play.png&quot; width=&quot;150&quot; height=&quot;100&quot; size=&quot;35616&quot; /&gt;<br />		&lt;mx:Object name=&quot;toy.png&quot; width=&quot;480&quot; height=&quot;250&quot; size=&quot;586566&quot; /&gt;<br />		&lt;mx:Object name=&quot;playground.png&quot; width=&quot;320&quot; height=&quot;240&quot; size=&quot;135648&quot; /&gt;<br />		&lt;mx:Object name=&quot;teacher.jpg&quot; width=&quot;600&quot; height=&quot;350&quot; size=&quot;385616&quot; /&gt;<br />		&lt;mx:Object name=&quot;funny_dog.jpg&quot; width=&quot;532&quot; height=&quot;412&quot; size=&quot;412616&quot; /&gt;<br />	&lt;/mx:ArrayCollection&gt;<br /><br />	&lt;mx:Panel width=&quot;100%&quot; height=&quot;100%&quot; label=&quot;custom datagrid drag image&quot;&gt;<br />		&lt;ui:AssetDataGrid id=&quot;dgImages&quot;<br />						  dataProvider=&quot;{stubDataset}&quot;<br />						  width=&quot;100%&quot; height=&quot;100%&quot;<br />			 			  dragProxy=&quot;prj.ui.AssetDragProxy&quot;<br />						  dragEnabled=&quot;true&quot;&gt;<br />			&lt;ui:columns&gt;<br />				&lt;mx:DataGridColumn dataField=&quot;name&quot; headerText=&quot;file name&quot;/&gt;<br />				&lt;mx:DataGridColumn dataField=&quot;width&quot; headerText=&quot;width&quot; width=&quot;40&quot; /&gt;<br />				&lt;mx:DataGridColumn dataField=&quot;height&quot; headerText=&quot;height&quot; width=&quot;40&quot; /&gt;<br />				&lt;mx:DataGridColumn dataField=&quot;size&quot; headerText=&quot;size&quot; width=&quot;60&quot;/&gt;<br />			&lt;/ui:columns&gt;<br />		&lt;/ui:AssetDataGrid&gt;<br />	&lt;/mx:Panel&gt;<br />&lt;/mx:Application&gt;<br /><br />// please note that datagrid columns inherits from the custom component, don&#39;t use mx<br /><br />* inspired by: <a href="http://www.dgrigg.com/post.cfm/11/03/2006/DataGrid-Drag-Image" target="_blank"><a href="http://www.dgrigg.com/post.cfm/11/03/2006/DataGrid-Drag-Image" target="_blank">http://www.dgrigg.com/post.cfm/11/03/2006/DataGrid-Drag-Image</a></a><br /><br /></pre></div><br /><br />]]></description>
      <author>jaco</author>
      <pubDate>Fri, 16 Oct 2009 10:07:15 +0200</pubDate>
      <category>Flex 3.x</category>
      <guid>http://snippet.gnstudio.com/viewtopic/35</guid>
   </item>
  </channel>
</rss>
