您的位置:首页 > 其它

flex 右键菜单管理工具类

2009-12-23 19:58 381 查看
/*============使用==========*/


var contextmenu:ContextMenuManager=new ContextMenuManager();

contextmenu.add("最大化",menuHandle);//menuHandle处理函数

 

/**==================ContextMenuManager.as==========================*/


package file

{

    import flash.display.InteractiveObject;

    import flash.events.*;

    import flash.errors.IllegalOperationError;

    import flash.ui.*;

    import flash.utils.getQualifiedClassName;

    public class ContextMenuManager extends EventDispatcher

    {

        protected var menu:ContextMenu;

        protected var target:InteractiveObject;

        public function ContextMenuManager(target:InteractiveObject,hideBuiltInItems:Boolean=true)

        {

            this.target=target;

            menu=new ContextMenu();

            if(hideBuiltInItems)

            {

                menu.hideBuiltInItems();

            }

            this.target.contextMenu=menu;

            menu.addEventListener(ContextMenuEvent.MENU_SELECT,passEvent);

        }

        public function add(caption:String,handler:Function,separatorBefore:Boolean=false,enabled:Boolean=true,visible:Boolean=true):ContextMenuItem

        {

            var result:ContextMenuItem=createItem(caption,handler,separatorBefore,enabled,visible);

            menu.customItems.push(result);

            return result;

        }

        public function insert(id:*,caption:String,handler:Function,separatorBefore:Boolean=false,enabled:Boolean=true,visible:Boolean=true):ContextMenuItem

        {

            var result:ContextMenuItem=createItem(caption,handler,separatorBefore,enabled,visible);

            var index:int=id is String?getIndexByCaption(id):id as int;

            (menu.customItems as Array).splice(index,0,result);

            return result;

        }

        public function remove(id:*):void

        {

            if(id is String)

            {

                id=getIndexByCaption(id);

            }

            customItems.splice(id as Number,1);

        }

        public function hideBuiltInItems():void

        {

            menu.hideBuiltInItems();

        }

        public function getItem(id:*):ContextMenuItem

        {

            if(id is String)

            {

                id=getIndexByCaption(id);

            }

            return menu.customItems[id];

        }

        public function get customItems():Array

        {

            return menu.customItems;

        }

        public function get builtInItems():ContextMenuBuiltInItems

        {

            return menu.builtInItems;

        }

        public function get contextMenu():ContextMenu

        {

            return menu;

        }

        /**         *@private         */

        protected function createItem(caption:String,handler:Function,separatorBefore:Boolean=false,enabled:Boolean=true,visible:Boolean=true):ContextMenuItem

        {

            var result:ContextMenuItem=new ContextMenuItem(caption,separatorBefore,enabled,visible);

            result.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,handler);

            result.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,passEvent);

            return result;

        }

        /**         *@private         */

        protected function getIndexByCaption(caption:String):int

        {

            for(var i:uint=0;i<menu.customItems.length;i++)

            {

                if(menu.customItems[i].caption==caption)

                {

                    return i;

                }

            }

            return-1;

        }

        /**         * @private         */

        protected function passEvent(event:ContextMenuEvent):void

        {

            dispatchEvent(new ContextMenuEvent(event.type,event.bubbles,event.cancelable,event.mouseTarget,event.contextMenuOwner));

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息