Hi Peter,

Could you please update version to 0.9.0 in the comments.

Thanks, Piotr

2017-06-29 17:20 GMT+02:00 <p...@apache.org>:

> Repository: flex-asjs
> Updated Branches:
>   refs/heads/tlf c89b3a11e -> 38d7d38a5
>
>
> Made the SingleSelectionDragSourceBead and SingleSelectionDropTargetBead a
> bit more generic to work with DataGrid as well as List. Added
> dragStartObject to DragMouseController and dropTargetObject to
> DropMouseController.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/38d7d38a
> Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/38d7d38a
> Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/38d7d38a
>
> Branch: refs/heads/tlf
> Commit: 38d7d38a5087b90179d6807ae05ce805820904e1
> Parents: c89b3a1
> Author: Peter Ent <p...@apache.org>
> Authored: Thu Jun 29 11:20:31 2017 -0400
> Committer: Peter Ent <p...@apache.org>
> Committed: Thu Jun 29 11:20:31 2017 -0400
>
> ----------------------------------------------------------------------
>  .../html/beads/SingleSelectionDragSourceBead.as |  97 +++++++--------
>  .../html/beads/SingleSelectionDropTargetBead.as | 119 +++++++++----------
>  .../beads/controllers/DragMouseController.as    |  12 ++
>  .../beads/controllers/DropMouseController.as    |  13 ++
>  4 files changed, 125 insertions(+), 116 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 38d7d38a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDragSourceBead.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDragSourceBead.as
> b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/
> SingleSelectionDragSourceBead.as
> index 72b0a00..c911651 100644
> --- a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDragSourceBead.as
> +++ b/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDragSourceBead.as
> @@ -101,39 +101,30 @@ package org.apache.flex.html.beads
>                 {
>                         trace("SingleSelectionDragSourceBead received the
> DragStart");
>
> -                       var downPoint:Point = new Point(event.clientX,
> event.clientY);//PointUtils.localToGlobal(new Point(event.clientX,
> event.clientY), _strand);
> -                       //trace("Dragging from this point:
> "+downPoint.x+", "+downPoint.y);
> -                       //trace("-- find the itemRenderer this object is
> over");
> +                       if (DragMouseController.dragStartObject == null)
> return; // not interested in empty things
>
> -                       if (itemRendererParent != null) {
> -                               var n:Number = itemRendererParent.
> numElements;
> -                               for (var i:int=0; i < n; i++) {
> -                                       var child:UIBase =
> itemRendererParent.getElementAt(i) as UIBase;
> -                                       if (child != null) {
> -                                               var childPoint:Point =
> PointUtils.localToGlobal(new Point(child.x,child.y), itemRendererParent);
> -                                               //trace("-- child "+i+":
> "+childPoint.x+" - "+(childPoint.x+child.width)+" x "+childPoint.y+" -
> "+(childPoint.y+child.height));
> -                                               var rect:Rectangle = new
> Rectangle(childPoint.x, childPoint.y, child.width, child.height);
> -                                               if
> (rect.containsPoint(downPoint)) {
> -                                                       var
> ir:IItemRenderer = child as IItemRenderer;
> -
> -                                                       //trace("--
> dragging this child, " + i + ", at "+childPoint.x+", "+childPoint.y);
> -                                                       indexOfDragSource
> = i;
> -
> -                                                       var
> dragImage:UIBase = new Group();
> -
>  dragImage.className = "DragImage";
> -                                                       dragImage.width =
> child.width;
> -                                                       dragImage.height =
> child.height;
> -                                                       var label:Label =
> new Label();
> -                                                       label.text =
> ir.data.toString();
> -
>  dragImage.addElement(label);
> -
> -
>  DragEvent.dragSource = ir.data;
> -
>  DragEvent.dragInitiator = this;
> -
>  DragMouseController.dragImage = dragImage;
> -                                                       break;
> -                                               }
> -                                       }
> -                               }
> +                       var startHere:Object = DragMouseController.
> dragStartObject;
> +                       while( !(startHere is IItemRenderer) && startHere
> != null) {
> +                               startHere = startHere.parent;
> +                       }
> +
> +                       if (startHere is IItemRenderer) {
> +                               var ir:IItemRenderer = startHere as
> IItemRenderer;
> +
> +                               var p:UIBase = (ir as UIBase).parent as
> UIBase;
> +                               indexOfDragSource = p.getElementIndex(ir);
> +
> +                               var dragImage:UIBase = new Group();
> +                               dragImage.className = "DragImage";
> +                               dragImage.width = (ir as UIBase).width;
> +                               dragImage.height = (ir as UIBase).height;
> +                               var label:Label = new Label();
> +                               label.text = ir.data.toString();
> +                               dragImage.addElement(label);
> +
> +                               DragEvent.dragSource = ir.data;
> +                               DragEvent.dragInitiator = this;
> +                               DragMouseController.dragImage = dragImage;
>                         }
>                 }
>
> @@ -144,28 +135,26 @@ package org.apache.flex.html.beads
>                         trace("Accepting drop of type "+type);
>                         if (dragType == "copy") return;
>
> -                       if (itemRendererParent != null) {
> -                               var dataProviderModel:IDataProviderModel
> = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
> -                               if (dataProviderModel.dataProvider is
> Array) {
> -                                       var dataArray:Array =
> dataProviderModel.dataProvider as Array;
> -
> -                                       // remove the item being selected
> -                                       dataArray.splice(
> indexOfDragSource,1);
> -
> -                                       // refresh the dataProvider model
> -                                       var newArray:Array =
> dataArray.slice()
> -                                       dataProviderModel.dataProvider =
> newArray;
> -                               }
> -                               else if (dataProviderModel.dataProvider
> is ArrayList) {
> -                                       var dataList:ArrayList =
> dataProviderModel.dataProvider as ArrayList;
> -
> -                                       // remove the item being selected
> -                                       dataList.removeItemAt(
> indexOfDragSource);
> -
> -                                       // refresh the dataProvider model
> -                                       var newList:ArrayList = new
> ArrayList(dataList.source);
> -                                       dataProviderModel.dataProvider =
> newList;
> -                               }
> +                       var dataProviderModel:IDataProviderModel =
> _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
> +                       if (dataProviderModel.dataProvider is Array) {
> +                               var dataArray:Array =
> dataProviderModel.dataProvider as Array;
> +
> +                               // remove the item being selected
> +                               dataArray.splice(indexOfDragSource,1);
> +
> +                               // refresh the dataProvider model
> +                               var newArray:Array = dataArray.slice()
> +                               dataProviderModel.dataProvider = newArray;
> +                       }
> +                       else if (dataProviderModel.dataProvider is
> ArrayList) {
> +                               var dataList:ArrayList =
> dataProviderModel.dataProvider as ArrayList;
> +
> +                               // remove the item being selected
> +                               dataList.removeItemAt(indexOfDragSource);
> +
> +                               // refresh the dataProvider model
> +                               var newList:ArrayList = new
> ArrayList(dataList.source);
> +                               dataProviderModel.dataProvider = newList;
>                         }
>                 }
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 38d7d38a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDropTargetBead.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDropTargetBead.as
> b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/
> SingleSelectionDropTargetBead.as
> index 9f85fef..e4ee58a 100644
> --- a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDropTargetBead.as
> +++ b/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/SingleSelectionDropTargetBead.as
> @@ -104,80 +104,75 @@ package org.apache.flex.html.beads
>
>                 private function handleDragDrop(event:DragEvent):void
>                 {
> -                       var myX:Number = event.clientX;
>                         trace("SingleSelectionDropTargetBead received
> DragDrop!");
>
> -                       var downPoint:Point = new Point(event.clientX,
> event.clientY);
> -                       //trace("Dropping at this point: "+downPoint.x+",
> "+downPoint.y);
> -                       //trace("-- find the itemRenderer this object is
> over");
> +                       if (DropMouseController.dropTargetObject == null)
> return;
>
>                         var targetIndex:int = -1; // indicates drop beyond
> length of items
>
> -                       if (itemRendererParent != null) {
> -                               var n:Number = itemRendererParent.
> numElements;
> -                               for (var i:int=0; i < n; i++) {
> -                                       var child:UIBase =
> itemRendererParent.getElementAt(i) as UIBase;
> -                                       if (child != null) {
> -                                               var childPoint:Point = new
> Point(child.x, child.y);
> -                                               //trace("-- child "+i+":
> "+childPoint.x+" - "+(childPoint.x+child.width)+" x "+childPoint.y+" -
> "+(childPoint.y+child.height));
> -                                               var rect:Rectangle = new
> Rectangle(childPoint.x, childPoint.y, child.width, child.height);
> -                                               if
> (rect.containsPoint(downPoint)) {
> -                                                       var
> ir:IItemRenderer = child as IItemRenderer;
> -                                                       targetIndex = i;
> -                                                       //trace("-- Found
> this item: "+i);
> -                                                       break;
> -                                               }
> -                                       }
> -                               }
> -
> -                               if (targetIndex == (n-1)) { // special
> case when drop on last item
> -                                       targetIndex--;
> -                               }
> +                       var startHere:Object = DropMouseController.
> dropTargetObject;
> +                       while( !(startHere is IItemRenderer) && startHere
> != null) {
> +                               startHere = startHere.parent;
> +                       }
> +
> +                       if (startHere is IItemRenderer) {
> +                               var ir:IItemRenderer = startHere as
> IItemRenderer;
> +                               trace("-- dropping onto an existing
> object: "+ir.data.toString());
>
> -                               // Let the dragInitiator know that the
> drop was accepted so it can do
> -                               // whatever it needs to do to prepare the
> data or structures.
> -                               if (DragEvent.dragInitiator) {
> -                                       
> DragEvent.dragInitiator.acceptingDrop(_strand,
> "object");
> -                               }
> +                               var p:UIBase = (ir as UIBase).parent as
> UIBase;
> +                               targetIndex = p.getElementIndex(ir);
> +                       }
> +                       else  {
> +                               trace("-- dropping after the last item");
> +                       }
> +
> +                       var downPoint:Point = new Point(event.clientX,
> event.clientY);
> +                       //trace("Dropping at this point: "+downPoint.x+",
> "+downPoint.y);
> +                       //trace("-- find the itemRenderer this object is
> over");
> +
> +                       // Let the dragInitiator know that the drop was
> accepted so it can do
> +                       // whatever it needs to do to prepare the data or
> structures.
> +                       if (DragEvent.dragInitiator) {
> +                               DragEvent.dragInitiator.acceptingDrop(_strand,
> "object");
> +                       }
>
> -                               var dragSource:Object =
> DragEvent.dragSource;
> +                       var dragSource:Object = DragEvent.dragSource;
>
> -                               var dataProviderModel:IDataProviderModel
> = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
> -                               if (dataProviderModel.dataProvider is
> Array) {
> -                                       var dataArray:Array =
> dataProviderModel.dataProvider as Array;
> +                       var dataProviderModel:IDataProviderModel =
> _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
> +                       if (dataProviderModel.dataProvider is Array) {
> +                               var dataArray:Array =
> dataProviderModel.dataProvider as Array;
>
> -                                       // insert the item being dropped
> -                                       if (targetIndex == -1) {
> -                                               // append to the end
> -                                               dataArray.push(dragSource);
> -                                       } else {
> -                                               // insert before
> targetIndex
> -
>  dataArray.splice(targetIndex, 0, dragSource);
> -                                       }
> -
> -                                       var newArray:Array =
> dataArray.slice()
> -                                       dataProviderModel.dataProvider =
> newArray;
> -                               }
> -                               else if (dataProviderModel.dataProvider
> is ArrayList) {
> -                                       var dataList:ArrayList =
> dataProviderModel.dataProvider as ArrayList;
> -
> -                                       // insert the item being dropped
> -                                       if (targetIndex == -1) {
> -                                               // sppend to the end
> -
>  dataList.addItem(dragSource);
> -                                       } else {
> -                                               // insert before target
> index
> -
>  dataList.addItemAt(dragSource, targetIndex);
> -                                       }
> -
> -                                       var newList:ArrayList = new
> ArrayList(dataList.source);
> -                                       dataProviderModel.dataProvider =
> newList;
> +                               // insert the item being dropped
> +                               if (targetIndex == -1) {
> +                                       // append to the end
> +                                       dataArray.push(dragSource);
> +                               } else {
> +                                       // insert before targetIndex
> +                                       dataArray.splice(targetIndex, 0,
> dragSource);
>                                 }
>
> -                               // Let the dragInitiator know the drop has
> been completed.
> -                               if (DragEvent.dragInitiator) {
> -                                       
> DragEvent.dragInitiator.acceptedDrop(_strand,
> "object");
> +                               var newArray:Array = dataArray.slice()
> +                               dataProviderModel.dataProvider = newArray;
> +                       }
> +                       else if (dataProviderModel.dataProvider is
> ArrayList) {
> +                               var dataList:ArrayList =
> dataProviderModel.dataProvider as ArrayList;
> +
> +                               // insert the item being dropped
> +                               if (targetIndex == -1) {
> +                                       // sppend to the end
> +                                       dataList.addItem(dragSource);
> +                               } else {
> +                                       // insert before target index
> +                                       dataList.addItemAt(dragSource,
> targetIndex);
>                                 }
> +
> +                               var newList:ArrayList = new
> ArrayList(dataList.source);
> +                               dataProviderModel.dataProvider = newList;
> +                       }
> +
> +                       // Let the dragInitiator know the drop has been
> completed.
> +                       if (DragEvent.dragInitiator) {
> +                               DragEvent.dragInitiator.acceptedDrop(_strand,
> "object");
>                         }
>                 }
>         }
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 38d7d38a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DragMouseController.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DragMouseController.as
> b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/
> controllers/DragMouseController.as
> index e9451fa..6d560a1 100644
> --- a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DragMouseController.as
> +++ b/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DragMouseController.as
> @@ -134,6 +134,16 @@ package org.apache.flex.html.beads.controllers
>           *  @productversion FlexJS 0.0
>           */
>          public static var defaultThreshold:int = 4;
> +
> +               /**
> +                * The object under the mouse when the dragStart is
> dispatched.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.8
> +                */
> +               public static var dragStartObject:Object;
>
>                 /**
>                  *  constructor.
> @@ -213,6 +223,8 @@ package org.apache.flex.html.beads.controllers
>                  if (Math.abs(event.screenX - mouseDownX) > threshold ||
>                      Math.abs(event.screenY - mouseDownY) > threshold)
>                  {
> +                                       DragMouseController.dragStartObject
> = event.target;
> +
>                      trace("DRAG-MOUSE: sending dragStart");
>                      dragEvent = DragEvent.createDragEvent("dragStart",
> event);
>                                         dragEvent.clientX = mouseDownX;
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 38d7d38a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DropMouseController.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DropMouseController.as
> b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/
> controllers/DropMouseController.as
> index 72e54aa..025a8db 100644
> --- a/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DropMouseController.as
> +++ b/frameworks/projects/DragDrop/src/main/flex/org/
> apache/flex/html/beads/controllers/DropMouseController.as
> @@ -85,6 +85,17 @@ package org.apache.flex.html.beads.controllers
>          */
>         public class DropMouseController extends EventDispatcher
> implements IBead
>         {
> +
> +               /**
> +                * The object under the mouse when the drop was executed.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.8
> +                */
> +               public static var dropTargetObject:Object;
> +
>                 /**
>                  *  constructor.
>                  *
> @@ -178,6 +189,8 @@ package org.apache.flex.html.beads.controllers
>          {
>              trace("DROP-MOUSE: dragEnd received for event:
> "+event.target.toString());
>              var dragEvent:DragEvent;
> +
> +                       DropMouseController.dropTargetObject =
> event.target;
>
>                         var screenPoint:Point = new Point(event.screenX,
> event.screenY);
>                         var newPoint:Point = 
> PointUtils.globalToLocal(screenPoint,
> _strand);
>
>

Reply via email to