Hello,
I built an extension to the tree component but I'm having problems when
adding it to the stage under a viewstack it tells me viewstack is not a
valid parent for that kind of item.
Heres the component below, Thanks:
package com.EIPTasks
{
import mx.controls.Tree;
import mx.controls.Button;
import mx.events.ListEvent;
import flash.events.MouseEvent;
import mx.controls.Alert;
import com.events.ObjectEvt;
import flash.events.KeyboardEvent;
import mx.events.CloseEvent;
import mx.core.ClassFactory;
import com.EIPTask.classes.TIRFolderLines;
import mx.core.UIComponent;
[Event(name="treeAddBtnEvt", type="
com.events.ObjectEvt")]
[Event(name="treeDeleteBtnEvt", type="
com.events.ObjectEvt")]
[Event(name="treeClickEvt", type="
com.events.ObjectEvt")]
[Event(name="treeChangeEvt", type="
com.events.ObjectEvt")]
public class EIPTree extends Tree
{
private var addButton:Button;
private var deleteButton:Button;
[Inspectable] [Bindable] public var
treeType:String = "";
[Inspectable] [Bindable] public var
dataField:String = "@data";
public function EIPTree():void
{
super();
this.addEventListener(ListEvent.ITEM_CLICK, enableButtons);
this.itemRenderer = new
ClassFactory(TIRFolderLines);
}
protected override function
createChildren():void
{
super.createChildren();
// Create add Button
addButton = new
Button();
addButton.label = "Add";
addButton.enabled =
false;
addChild(addButton);
// Create Delete Button
deleteButton = new
Button();
deleteButton.label =
"Delete";
deleteButton.enabled =
false;
addChild(deleteButton);
// Event Listeners
addButton.addEventListener(MouseEvent.CLICK, addButton_clickHandler);
deleteButton.addEventListener(MouseEvent.CLICK,
deleteButton_clickHandler);
this.addEventListener(KeyboardEvent.KEY_DOWN, keyboard_keyHandler);
this.addEventListener(MouseEvent.CLICK, broadcast_clickHandler);
this.addEventListener(ListEvent.CHANGE, broadcast_changeHandler);
}
protected override function
updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight-25);
deleteButton.setActualSize(unscaledWidth/2, 22);
deleteButton.move(0, unscaledHeight-22);
addButton.setActualSize(unscaledWidth/2, 22);
addButton.move(unscaledWidth/2, unscaledHeight-22);
}
private function
enableButtons(event:ListEvent):void
{
addButton.enabled =
true;
deleteButton.enabled =
true;
}
private function
deleteConfirm(event:CloseEvent):void
{
if(event.detail ==
Alert.YES)
{
dispatchEventData("treeDeleteBtnEvt");
}
}
private function
dispatchEventData(type:String):void
{
dispatchEvent(new
ObjectEvt(this.selectedItem[dataField], type));
}
// Event Handlers
private function
addButton_clickHandler(event:MouseEvent):void
{
dispatchEventData("treeAddBtnEvt");
}
private function
deleteButton_clickHandler(event:MouseEvent):void
{
Alert.show("Do you want
to delete this " + treeType + " ?", "Delete " + treeType + " (" +
[EMAIL PROTECTED] + ")", 3, this, deleteConfirm);
}
private function
keyboard_keyHandler(event:KeyboardEvent):void
{
if(event.keyCode == 46
&& this.selectedItem != null)
Alert.show("Do you want to delete this " + treeType + " ?", "Delete " +
treeType + " (" + [EMAIL PROTECTED] + ")", 3, this,
deleteConfirm);
else if (event.keyCode
== 45 && this.selectedItem != null)
dispatchEventData("treeAddBtnEvt");
}
private function
broadcast_clickHandler(event:MouseEvent):void
{
dispatchEventData("treeClickEvt");
}
private function
broadcast_changeHandler(event:ListEvent):void
{
dispatchEventData("treeChangeEvt");
}
}
}
-----------------------------------------
Under Florida law, e-mail addresses are public records. If you do
not want your e-mail address released in response to a public
records request, do not send electronic mail to this entity.
Instead, contact this office by phone or in writing.