blob: 9ff4bd9916c949b507e3a644996b3b5381d805b3 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="300" dockIconMenu="{compContext}" systemTrayIconMenu="{compContext}" windowComplete="create()">
<mx:Script>
<![CDATA[
import mx.events.FlexNativeMenuEvent;
import flash.ui.Keyboard;
public function create():void{
var icon:BitmapData = new BitmapData(16,16,true,0x00FF0000);
NativeApplication.nativeApplication.icon.bitmaps = [icon];
}
[Bindable]
private var foodData:XMLList =
<>
<menuitem myLabel="Fruit" myEnabled="true">
<menuitem myLabel="Strawberry" myToggled="true" myEnabled="false"/>
<menuitem myLabel="Banana" type="fruit"/>
<menuitem type="separator" myEnabled="false"/>
<menuitem myLabel="Citrus"/>
<menuitem myLabel="Orange">
<menuitem myLabel="Blood" myToggled="false"/>
<menuitem myLabel="Navel" myToggled="true"/>
<menuitem myLabel="Valencia" myToggled="false"/>
</menuitem>
<menuitem myLabel="Grapefruit">
<menuitem myLabel="Ruby Red" type="check" myToggled="true"/>
</menuitem>
<menuitem myLabel="Peach" changeMe="one"/>
</menuitem>
<menuitem myLabel="Meat">
<menuitem myLabel="Chicken"/>
<menuitem myLabel="Beef"/>
<menuitem myLabel="Lamb"/>
<menuitem myLabel="Pork"/>
</menuitem>
</>;
[Bindable]
private var pastaData:XMLList =
<>
<menuitem label="Pasta" keys="1">
<menuitem label="elbow macaroni" underscore="2" keys="M" />
<menuitem label="cavatappi" underscore="1" keys="C"/>
<menuitem label="rotini" keys="R" shiftKey="true"/>
<menuitem label="spaghetti" keys="COMMA"/>
</menuitem>
<menuitem type="separator" underscore="3" keys="DELETE"/>
<menuitem label="Candy" underscore="0" keys="BACKSPACE" cmdKey="true" ctrlKey="true">
<menuitem label="Rock" cmdKey="true"/>
<menuitem label="Caramel" altKey="true"/>
<menuitem label="Taffy" underscore="3" ctrlKey="true"/>
</menuitem>
</>;
[Bindable]
private var mnemonicData:XMLList =
<>
<menuitem label="G_eneric">
<menuitem label="hone_y"/>
<menuitem label="1234_567"/>
<menuitem label="strawberryjamandpeanutbuttersandwic_h"/>
<menuitem label="012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678_9"/>
<menuitem label="thequickbrownfoxjumpsoverthelazydogthequickbrownf_oxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog"/>
<menuitem label="!@#$%^&*(()_+="/>
</menuitem>
<menuitem label="G_eneric">
<menuitem label="te_a"/>
<menuitem label="glas_s"/>
<menuitem label="bees__wax"/>
<menuitem label="honey_s"/>
<menuitem label="roses"/>
<menuitem label="_water"/>
</menuitem>
</>;
[Bindable]
public var japaneseData:XMLList =
<>
<menuitem label="_コンテンツストア" 忘年会向けの="ト">
<menuitem label="グルメ" data="10" 忘年会向けの="グ" スポーツ="ル"/>
<menuitem label="保_険" data="10" 忘年会向けの="保" スポーツ="険"/>
<menuitem label="求人" data="0" 忘年会向けの="求" スポーツ="人"/>
</menuitem>
<menuitem label="ボランティア" >
<menuitem label="政治" data="10" 忘年会向けの="政" スポーツ="治"/>
<menuitem label="旅行" data="5" 忘年会向けの="行" スポーツ="政"/>
<menuitem type="separator" />
<menuitem label="翻訳" data="0" 忘年会向けの="翻" スポーツ="訳"/>
<menuitem label="ブログ" data="0" 忘年会向けの="ブ" スポーツ="P"/>
</menuitem>
</>;
[Bindable]
public var cakeData:XMLList =
<>
<menuitem label="Frosting" keys="1">
<menuitem label="Whipped Creme" data="10" keys="W" aKey="C"/>
<menuitem label="Fondant" data="10" keys="O" aKey="D"/>
<menuitem label="None" data="0" keys="N" aKey="E"/>
</menuitem>
<menuitem label="Decorations" >
<menuitem label="Flowers" data="10" keys="F" aKey="W"/>
<menuitem label="Candy" data="5" keys="C" aKey="Y"/>
<menuitem type="separator" />
<menuitem label="Ribbon" data="0" keys="B" aKey="R"/>
<menuitem label="Topper" data="0" keys="T" aKey="P"/>
</menuitem>
</>;
[Bindable]
public var cakeDataArray:Array =
[{label:"Frosting", keys:"1", children: [
{label:"Whipped Creme", data:"10", keys:"W", aKey:"C"},
{label:"Fondant", data:"10", keys:"O", aKey:"D"},
{label:"None", data:"0", keys:"N", aKey:"E"}
]},
{label:"Decorations", children: [
{label:"Flowers", data:"10", keys:"F", aKey:"W"},
{label:"Candy", data:"10", keys:"C", aKey:"Y"},
{type:"separator"},
{label:"Ribbon", data:"0", keys:"B", aKey:"1"},
{label:"Topper", data:"0", keys:"T", aKey:"2"}
]}
];
private function myMnemonicFn(item:Object):int
{
var key:int = -1;
key = (item.@myLabel.toString().length - 1);
trace("Key: " + key);
trace("item: " + item.@myLabel.toString().length, item);
return key;
}
private function myLabelFn(item:Object):String
{
var newLabel:String;
newLabel = item.@myLabel.toString() + "_1";
return newLabel;
}
private function getKeyEquivalentField(item:Object):String
{
if(item.@data > 5)
{
return item.@keys;
}
else
{
return item.@aKey;
}
}
private function getKeyEquivalentField2(item:Object):String
{
if(item.data > 5)
{
return item.keys;
}
else
{
return item.aKey;
}
}
public function setKeyFunction(fnm:FlexNativeMenu, i:int): void
{
if(i==0)
{
fnm.keyEquivalentFunction = getKeyEquivalentField;
}
else
{
fnm.keyEquivalentFunction = getKeyEquivalentField2;
}
}
private function getModifiers(item:Object):Array
{
var myOS:String = Capabilities.os;
var newArray:Array = [];
if(item.@data == "0")
{
newArray.push(Keyboard.SHIFT);
}
else
{
newArray.push(Keyboard.SHIFT);
if(myOS.indexOf('Windows', 0) != -1)
{
newArray.push(Keyboard.CONTROL);
}
else if(myOS.indexOf('Mac', 0) != -1)
{
newArray.push(Keyboard.COMMAND);
}
newArray.push(Keyboard.ALTERNATE);
}
return newArray;
}
public function setModifierFunction(fnm:FlexNativeMenu):void
{
fnm.keyEquivalentModifiersFunction = getModifiers;
}
]]>
</mx:Script>
<mx:menu>
<mx:FlexNativeMenu id="fnm_1" dataProvider="{foodData}" labelField="@myLabel" labelFunction="myLabelFn" mnemonicIndexFunction="myMnemonicFn"/>
</mx:menu>
<mx:flexContextMenu>
<mx:FlexNativeMenu id="mainContext" dataProvider="{foodData}" labelFunction="myLabelFn"/>
</mx:flexContextMenu>
<mx:MenuBar dataProvider="{foodData}" labelField="@myLabel" />
<mx:FlexNativeMenu id="compContext" dataProvider="{pastaData}" labelField="@label" mnemonicIndexField="@underscore" keyEquivalentField="@keys"/>
<mx:FlexNativeMenu id="underlineContext" dataProvider="{mnemonicData}" labelField="@label"/>
<mx:FlexNativeMenu id="keyfunctions" dataProvider="{cakeData}" labelField="@label" keyEquivalentFunction="getKeyEquivalentField"
keyEquivalentModifiersFunction="getModifiers" />
<mx:FlexNativeMenu id="jpMenus" dataProvider="{japaneseData}" labelField="@label" keyEquivalentField="@忘年会向けの"/>
<mx:FlexNativeMenu id="emptyFNM" />
<mx:VBox id="myVBox" borderStyle="solid" flexContextMenu="{compContext}">
<mx:Label text="My VBox"/>
</mx:VBox>
<mx:VBox id="anotherVBox" borderStyle="solid" flexContextMenu="{underlineContext}">
<mx:Label text="My VBox"/>
</mx:VBox>
<mx:VBox id="VBox3" borderStyle="solid" flexContextMenu="{keyfunctions}">
<mx:Label text="My VBox"/>
</mx:VBox>
<mx:VBox id="jpVBox" borderStyle="solid" flexContextMenu="{jpMenus}">
<mx:Label text="My VBox"/>
</mx:VBox>
<mx:VBox id="VBox4" borderStyle="solid" >
<mx:Label text="My VBox"/>
</mx:VBox>
</mx:WindowedApplication>