Added a CommandMenu, which is a pop-up menu that submits configured
CommandEvents for selected items. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4282 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
package com.threerings.mx.controls {
|
||||||
|
|
||||||
|
import flash.display.DisplayObjectContainer;
|
||||||
|
|
||||||
|
import mx.controls.Menu;
|
||||||
|
import mx.core.mx_internal;
|
||||||
|
import mx.events.MenuEvent;
|
||||||
|
|
||||||
|
import com.threerings.mx.events.CommandEvent;
|
||||||
|
|
||||||
|
public class CommandMenu extends Menu
|
||||||
|
{
|
||||||
|
public function CommandMenu ()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
|
||||||
|
iconFunction = getIconFor;
|
||||||
|
labelFunction = getLabelFor;
|
||||||
|
|
||||||
|
addEventListener(MenuEvent.ITEM_CLICK, itemClicked);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method to create a command menu.
|
||||||
|
*
|
||||||
|
* @param parent The parent of this menu.
|
||||||
|
* @param items an array of menu items, where each item is another array
|
||||||
|
* with the following format: [ text, iconClass, command, arg ]. Arg is
|
||||||
|
* optional.
|
||||||
|
*/
|
||||||
|
public static function createMenu (
|
||||||
|
parent :DisplayObjectContainer, items :Array) :CommandMenu
|
||||||
|
{
|
||||||
|
var menu :CommandMenu = new CommandMenu();
|
||||||
|
menu.tabEnabled = false;
|
||||||
|
menu.showRoot = true;
|
||||||
|
Menu.popUpMenu(menu, parent, items);
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for MenuEvent.ITEM_CLICK.
|
||||||
|
*/
|
||||||
|
protected function itemClicked (event :MenuEvent) :void
|
||||||
|
{
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
var element :Array = (event.item as Array);
|
||||||
|
mx_internal::parentDisplayObject.dispatchEvent(
|
||||||
|
new CommandEvent(String(element[2]), element[3]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// our function for retrieving a label for a menu entry
|
||||||
|
protected function getLabelFor (obj :Object) :String
|
||||||
|
{
|
||||||
|
var element :Array = (obj as Array);
|
||||||
|
return String(element[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// our function for retrieving an icon for a menu entry
|
||||||
|
protected function getIconFor (obj :Object) :Class
|
||||||
|
{
|
||||||
|
var element :Array = (obj as Array);
|
||||||
|
return Class(element[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user