환경 : flex sdk 3.0 이상
데스크탑에서 사용하는 위젯을 만들었는데,
최소화 하면 상태표시줄에서 없애고 트레이에 아이콘을 삽입해서보여주고 트레이 아이콘을 누르면 화면같은 메뉴가 나오도록 구성.
[Embed(source="/assets/icons/upa16.png")]
[Bindable]
private var Icon16:Class;
/**
* 마우스 오른쪽버튼 메뉴와 시스템트레이 메뉴생성
*
* @Author: chaeya@gmail.com
*/
//마우스오른쪽버튼 메뉴생성, TrayMenu 생성
private function CreateMenu():void {
var bitmap16:Bitmap = new Icon16();
NativeApplication.nativeApplication.icon.bitmaps =[bitmap16.bitmapData];
var trayMenu:NativeMenu = new NativeMenu();
var minimizeManu:NativeMenuItem = new NativeMenuItem("Minimize");
var maximizeManu:NativeMenuItem = new NativeMenuItem("Maximize");
var restoreMenu:NativeMenuItem = new NativeMenuItem("Restore");
var closeMenu:NativeMenuItem = new NativeMenuItem("Close");
minimizeManu.addEventListener(Event.SELECT, handleMenuClick);
maximizeManu.addEventListener(Event.SELECT,handleMenuClick);
restoreMenu.addEventListener(Event.SELECT,handleMenuClick);
closeMenu.addEventListener(Event.SELECT,handleMenuClick);
trayMenu.addItem(minimizeManu);
trayMenu.addItem(restoreMenu);
trayMenu.addItem(maximizeManu);
trayMenu.addItem(closeMenu);
if(NativeApplication.supportsSystemTrayIcon)
{
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = trayMenu;
SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip = "UPA Widget";
SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, undock);
}
//마우스오른쪽클릭시 메뉴
this.contextMenu = trayMenu;
}
public function undock(evt:Event):void {
stage.nativeWindow.visible = true;
stage.nativeWindow.orderToFront();
NativeApplication.nativeApplication .icon.bitmaps = [];
}
private function handleMenuClick(e:Event):void
{
var menuItem:NativeMenuItem = e.target as NativeMenuItem;
if(menuItem.label == "Minimize") {
this.minimize();
this.stage.nativeWindow.visible = false;
}
if(menuItem.label == "Maximize") this.maximize();
if(menuItem.label == "Restore") {
this.restore();
this.stage.nativeWindow.visible = true;
}
if(menuItem.label == "Close") this.close();
}