Stretch Media
home services Solutions news about us Blog contact us

Double click to edit DataGrid/List

After some brief searching on this topic I pulled up an entry from FlexCoders back in August of 2007 where Chris Huyler had figured out and put together a custom DataGrid to listen for a double click event rather than the default single click for itemEditor instances.

I needed both DataGrid and List support using this feature, so using Chris' example for DG, I modified for List as well.

All credit goes to Chris for figuring this out, and my thanks... here's an example of each below:

DataGrid

package com.bm.custom_components
{
import flash.events.MouseEvent;
import flash.geom.Point;

import mx.controls.DataGrid;
import mx.controls.listClasses.IListItemRenderer;
import mx.events.DataGridEvent;

public class DoubleClickEditDataGrid extends DataGrid
{
public function DoubleClickEditDataGrid() {
super();
}

private var triggeredEditable:Boolean = false;

public function triggerItemEditor(event:MouseEvent):void
{
var r:IListItemRenderer = mouseEventToItemRenderer(event);
var p:Point = itemRendererToIndices(r);
if ( columns[p.x].editable != false )
{
if (!editable)
{
editable=true;
triggeredEditable = true;
addEventListener(DataGridEvent.ITEM_EDIT_END,
triggeredEditorEnd);
}
var dEvent:DataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING,
false,
false,
p.x,
null,
p.y,
null,
r,
p.y);
dispatchEvent(dEvent);
}
}

private function triggeredEditorEnd(event:DataGridEvent):void
{
if ( triggeredEditable )
{
editable = false;
triggeredEditable = false;
removeEventListener( DataGridEvent.ITEM_EDIT_END, triggeredEditorEnd);
}
}
}
}

List

package com.bm.custom_components
{
import flash.events.MouseEvent;
import flash.geom.Point;
import mx.controls.List;
import mx.controls.listClasses.IListItemRenderer;
import mx.events.ListEvent;
public class DoubleClickEnabledList extends List
{
public function DoubleClickEnabledList(){}

private var triggeredEditable:Boolean = false;

public function triggerItemEditor(event:MouseEvent):void
{
var r:IListItemRenderer = mouseEventToItemRenderer(event);
var p:Point = itemRendererToIndices(r);
if (!editable)
{
editable=true;
triggeredEditable = true;
addEventListener(ListEvent.ITEM_EDIT_END, triggeredEditorEnd);
}
var dEvent:ListEvent = new ListEvent(ListEvent.ITEM_EDIT_BEGINNING,
false,
false,
-1,
p.y,
null,
null); dispatchEvent(dEvent);
}

private function triggeredEditorEnd(event:ListEvent):void
{
if ( triggeredEditable )
{
editable = false;
triggeredEditable = false;
removeEventListener( ListEvent.ITEM_EDIT_END, triggeredEditorEnd);
}
}
}
}

Comments
Comments are not allowed for this entry.
BlogCFC was created by Raymond Camden. This blog is running version 5.5.1.