package com
{
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.controls.LinkButton;
import mx.core.Application;
import mx.managers.PopUpManager;
public class MgrSmallMenu
{
private static var _instance:MgrSmallMenu;
// Menu List for current generated menu
private static var menuList:ArrayCollection = new ArrayCollection();
public static function get instance():MgrSmallMenu
{
if(!_instance){
_instance = new MgrSmallMenu();
}
return _instance;
}
public static function createMenu(event:MouseEvent,clsType:*):*
{
var curState:Boolean=checkMenuOpen(event.currentTarget as DisplayObject,clsType);
destroyMenuChild();
if(!curState)
{
var target:DisplayObject = event.currentTarget as DisplayObject;
var myMnu:* = clsType(PopUpManager.createPopUp(target, clsType, false));
myMnu.x = event.stageX - (myMnu.width +event.localX+5);
if(myMnu.x<=5)
myMnu.x = event.stageX + (target.width - event.localX);
myMnu.y = event.stageY - (event.localY - 3);
menuList.addItem({myMenu:myMnu,curTarget:event.currentTarget,classType:clsType});
Application.application.addEventListener(MouseEvent.MOUSE_DOWN ,appMouseClickHandler);
return myMnu;
}
return new clsType();
}
public static function destroyMenuChild():void
{
for (var i:Number=0; i
PopUpManager.removePopUp(menuList[i].myMenu );
menuList.removeItemAt(i);
}
Application.application.removeEventListener(MouseEvent.MOUSE_DOWN ,appMouseClickHandler);
}
public static function appMouseClickHandler(event:MouseEvent):void
{
var lnkBtn:LinkButton=event.target as LinkButton;
if(lnkBtn)
{
if(!checkCurHitObject(lnkBtn))
destroyMenuChild();
}
else
destroyMenuChild();
}
private static function checkCurHitObject(selbtn:LinkButton):Boolean
{
for each(var itemObj:Object in menuList)
{
if(itemObj.curTarget as LinkButton)
{
var openLnkBtn:LinkButton= itemObj.curTarget as LinkButton;
if(openLnkBtn == selbtn)
{
return true;
}
}
}
return false;
}
private static function checkMenuOpen(selTarget:*,selClsType:*):Boolean
{
for each(var itemObj:Object in menuList)
{
if(itemObj.curTarget==selTarget && itemObj.classType==selClsType)
{
return true;
}
}
return false;
}
}
}
No comments:
Post a Comment