Skip to search.
flexcoders · RIA Development with Adobe Flex

Group Information

  • Members: 9019
  • Category: Development
  • Founded: Mar 17, 2004
  • Language: English
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Real people. Real stories. See how Yahoo! Groups impacts members worldwide.

Messages

  Messages Help
Advanced
Am I within the folder or outside the folder?   Message List  
Reply Message #80677 of 165211 |
Re: Am I within the folder or outside the folder?

I took the Red Pill.............

I saw your code and I wanted to offer mine based on your suggestion.
The business rule: Don't allow courses to be "orphaned". All courses
must be contained in a folder.

A message signifies where I should stop the drop from happening.
That's the next, easy, step. Thank you for your help.

Precia



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">

<mx:Script>
<![CDATA[
import mx.core.DragSource;
import mx.managers.DragManager;
import mx.events.*;
import mx.containers.Canvas;
import mx.containers.HBox;
import mx.controls.Tree;
import mx.managers.DragManager;
import mx.core.DragSource;
import mx.core.ClassFactory;
import flash.display.DisplayObject;
import mx.controls.treeClasses.TreeItemRenderer;
import mx.events.DragEvent;
import mx.events.TreeEvent;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.Event;
import mx.events.ListEvent;
import flash.events.TimerEvent;
import mx.utils.ObjectUtil;
import mx.effects.Fade;
import mx.core.mx_internal;
import mx.collections.XMLListCollection;
import mx.events.EffectEvent;
import mx.controls.treeClasses.TreeItemRenderer;
import mx.collections.*;



[Bindable]
public var selectedNode:Object;

public function treeChanged(event:Event):void {
selectedNode=event.currentTarget.selectedItem;
}

private function dragIt(event:MouseEvent,
text:String, format:String):void{

if (selectedNode != null){

var dragInitiator:Tree=Tree
(event.currentTarget);
var ds:DragSource = new DragSource();
ds.addData(text, format);

var hboxProxy:HBox = new HBox();
hboxProxy.width = 85;
hboxProxy.height = 20;
hboxProxy.setStyle('backgroundColor',
dragInitiator.getStyle('backgroundColor'));

DragManager.doDrag(dragInitiator, ds,
event, hboxProxy);
}
}

private function dragger(event:DragEvent):void{
if(tree1.indexToItemRenderer
(tree1.calculateDropIndex(event)) != null)
{
var currTree:Tree = Tree
(event.currentTarget);
var currNodeOver:Object;
var rowindex:int =
currTree.calculateDropIndex(event);
var tattlerStr:String = new
String();
var hoverTarget:Object =
currTree.indexToItemRenderer(rowindex).data;
var halfRow:int =
currTree.rowHeight/2;
var certerRowY:int =
(rowindex*currTree.rowHeight)+halfRow;
var bottomRowY:int =
(rowindex+1)*currTree.rowHeight;

currNodeOver =
currTree.indexToItemRenderer(rowindex).data;

tattlerStr
= "Selected Item: " +
selectedNode.@level
+ "\n" + "Over
Target: " + hoverTarget.@level
+ "\n" + "Target
Parent: " + hoverTarget.parent().@level
+ "\n"
+ "calculateDropIndex " + rowindex
+ "\n" + "halfRow " +
halfRow.toString()
+ "\n"
+ "certerRowY " + certerRowY.toString()
+ "\n"
+ "bottomRowY " + bottomRowY.toString()
+ "\n" + "mouseY " +
currTree.mouseY.toString()
+ "\n"
+ "isItemOpen " + currTree.isItemOpen(currNodeOver).toString()
+ "\n" + "\n";

if
(hoverTarget.@level == 'Cert')
{
tattlerStr =
tattlerStr + "\n" + hoverTarget.parent().@label;
}


if
(selectedNode.@level == 'Course')
{
if
(hoverTarget.@level == 'Cert')
{
if
(certerRowY <= currTree.mouseY && currTree.mouseY <= bottomRowY)
{

//tattlerStr = tattlerStr + "\n" + "YOU ARE OUTSIDE THE
CERTIFICATE";

tattlerStr = "YOU ARE OUTSIDE THE CERTIFICATE";
}
}


}else{
tattlerStr =
tattlerStr + "\n" + "STOP DRAGGING THE CERTIFICATE";
}

/* if
(tree1.indexToItemRenderer(rowindex).data.@level == 'Course' ||
(tree1.indexToItemRenderer(rowindex).data.@level == 'Cert' &&
currTree.isItemOpen(currNodeOver) == true))
{
tattlerStr =
tattlerStr + "\n" + "WITHIN CERTIFICATE";
}else{
tattlerStr =
tattlerStr + "\n" + "DO NOT DROP!";
} */

tattler.text = tattlerStr;
}else{
tattler.text = "YOU ARE
OUTSIDE THE CERTIFICATE";
}
}

private function doDragEnter(event:DragEvent):void{
var dropTarget:Canvas = Canvas
(event.currentTarget);
DragManager.acceptDragDrop(dropTarget);

}

private function doDragDrop(event:DragEvent):void{
tattler.text = event.currentTarget.id + " x:"
+ event.currentTarget.valueOf().mouseX + " y:"
+event.currentTarget.valueOf().mouseY;
var data:Object =
event.dragSource.dataForFormat('color');
canvasDragTarget.setStyle("backgroundColor",
data);
}

private function doCurriculumTreeDragEnter
(event:DragEvent):void{
var dropTarget:Tree = Tree
(event.currentTarget);
DragManager.acceptDragDrop(dropTarget);
}

private function doCurriculumTreeDragDrop
(event:DragEvent):void{
tattler.text = tree1.dataProvider.toString();

}

private function showTreeData
(event:CollectionEvent):void{
switch(event.kind) {
case CollectionEventKind.ADD:
tattler.text =
tree1.dataProvider.toString();
break;
case CollectionEventKind.REMOVE:
tattler.text =
tree1.dataProvider.toString();
break;
case CollectionEventKind.REPLACE:
tattler.text =
tree1.dataProvider.toString();
break;
case CollectionEventKind.UPDATE:
tattler.text =
tree1.dataProvider.toString();
break;
}
}
]]>
</mx:Script>

<mx:XMLListCollection id="treeData"
collectionChange="showTreeData(event)">
<mx:XMLList>
<node label="Curriculum" level="Curr" >
<node label="cert1" level="Cert">
<node label="c1" level="Course"
type="prereq"/>
<node label="c2" level="Course"
type="prereq"/>
</node>
<node label="cert2" level="Cert">
<node label="c3" level="Course"
type="prereq"/>
<node label="c4" level="Course"
type="prereq"/>
<node label="c5" level="Course"
type="elective"/>
<node label="c6" level="Course"
type="elective"/>
</node>
<node label="cert3" level="Cert">
<node label="c7" level="Course"
type="prereq"/>
<node label="c8" level="Course"
type="prereq"/>
<node label="c9" level="Course"
type="elective"/>
</node>
</node>
</mx:XMLList>
</mx:XMLListCollection>

<mx:Canvas x="88" y="24" width="452" height="395"
backgroundColor="#f3d7ab" id="canvasDragTarget"
borderColor="#000000" borderStyle="outset"
dragEnter="doDragEnter(event)"
dragDrop="doDragDrop(event)">
<mx:Tree id="tree1" width="154" height="361"
backgroundAlpha="0.29"
dataProvider="{treeData}"
mouseDown="treeChanged(event)"
fontWeight="bold" color="#000000"
dragEnabled="true" dragOver="dragger(event)"
dragMoveEnabled="true"
dropEnabled="true"
labelField="@label" wordWrap="true"
fontSize="8" variableRowHeight="true"
dragEnter="doCurriculumTreeDragEnter(event)"
dragDrop="//doCurriculumTreeDragDrop(event)"
showRoot="false" x="41" y="20"/>
</mx:Canvas>
<mx:TextArea x="88" y="462" width="452" height="316"
id="tattler"/>

</mx:Application>





Wed Jul 11, 2007 10:27 pm

app.developer
Offline Offline
Send Email Send Email

Message #80677 of 165211 |
Expand Messages Author Sort by Date

Using the following coder, you can tell if you are what you are hovering over in a tree. What would I call to know if I'm inside or outside the a folder? I...
app.developer Offline Send Email Jul 9, 2007
9:02 pm

Sorry, no solution here, but I hope someone will have one. The Tree still leaves a bit to be desired. I have yet to find a way to insert a child node into an...
Tracy Spratt
nts333rd Offline Send Email
Jul 10, 2007
7:25 pm

Tracy, I understand what I'm hoovering over, but I don't know what I'm hovering between. This is one of those moments I would like to have breeze so I could...
app.developer Offline Send Email Jul 10, 2007
7:30 pm

You could just check a property, like the label, of the drop target, right? A trivial check in dragger() would be: var parent: Object =...
Doug Lowder
douglowder Offline Send Email
Jul 10, 2007
9:41 pm

Let me make sure I understand you. You are saying get the current and ancestor nodes? Will this tell me where my cursor is between "leaves"? Last night I...
app.developer Offline Send Email Jul 11, 2007
4:03 pm

I see the case you're talking about and you're right, it isn't being accounted for. I think it *can* be done, but it won't be easy. Based on the framework...
Doug Lowder
douglowder Offline Send Email
Jul 11, 2007
6:17 pm

OK, here's a dragger() function that (I think) does what you want. There is a check, based on row height, mouse position, and drop index, to see if the drop...
Doug Lowder
douglowder Offline Send Email
Jul 11, 2007
7:24 pm

I took the Red Pill............. I saw your code and I wanted to offer mine based on your suggestion. The business rule: Don't allow courses to be "orphaned"....
app.developer Offline Send Email Jul 11, 2007
10:32 pm
Advanced

Copyright © 2010 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines NEW - Help