For the file manager I am writing I am having an issue with dispatching a
custom event. I have a tree on the left with a custom tree item renderer. In
that renderer I have setup a context menu so the user can rename/remove/add
directories easily.

        private function renameDirectory(event:ContextMenuEvent):void {
            _renamedir = new RenameDirectory
            _renamedir.oldDirectoryName = data.name;
            _renamedir.parentPath = data.parent;
            //add modal window

PopUpManager.addPopUp(_renamedir,DisplayObject(Application.application),true);
            //center modal window
            PopUpManager.centerPopUp(_renamedir);
        }

My RenameDirectory component works well and does the renaming just fine. The
problem I am having is once the folder is renamed i need to refresh the tree
to show the changes. I figured for all of my options (add/remove/delete)
would just dispatch a custom event. Here is my RenameDirectory.mxml That is
dispatching my custom event.

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
title="Rename Directory" width="300" height="125"
    showCloseButton="true" creationComplete="centerWindow()"
close="closeWindow()">

    <mx:Metadata>
        [Event(name="refreshTree",type="events.RefreshTreeEvent")]
    </mx:Metadata>

    <mx:Script>
        <![CDATA[
            import mx.rpc.remoting.mxml.RemoteObject;
            import mx.controls.Alert;
            import mx.managers.PopUpManager;
            import events.RefreshTreeEvent;

            public var parentPath:String;
            public var oldDirectoryName:String;

            private var ro:RemoteObject = new RemoteObject();

            private function centerWindow():void {
                PopUpManager.centerPopUp(this);
            }

            private function closeWindow():void {
                PopUpManager.removePopUp(this);
            }
            private function renameDirectory(event:Event):void {
                var _old = parentPath + "\\" + oldDirectoryName;
                var _new = parentPath + "\\" + newDirectoryName.text;
                if(_new != _old) {
                    // rename the directory
                    ro.destination = "ColdFusion";
                    ro.source = "FFManager.src.cfc.FileManager";
                    ro.renameDirectory(_old,_new);
                    ro.showBusyCursor = true;

                    dispatchEvent(new RefreshTreeEvent("refreshTree"));
                    closeWindow();
                }
            }
       ]]>

    </mx:Script>

    <mx:HBox verticalCenter="0" horizontalCenter="0">
        <mx:TextInput id="newDirectoryName" text="{oldDirectoryName}"
width="200"/>
        <mx:Button label="Save" click="renameDirectory(event)"/>
    </mx:HBox>

</mx:TitleWindow>

And my custom event.
package events {

    import flash.events.Event;

    public class RefreshTreeEvent extends Event {

        public static const REFRESH_TREE:String = "refreshTree";

        public function RefreshTreeEvent(type:String, bubbles:Boolean=false,
cancelable:Boolean=false) {
            super(type, bubbles, cancelable);
        }

    }
}


**************** The problem I am having is that I am unable to listen for
this event in my main application. If I add

this.addEventListener(RefreshTreeEvent.REFRESH_TREE,reloadTree);

The reloadTree method is never called. What am I doing wrong?

Thanks again..

Reply via email to