Ext.air.SystemTray = function(){
       
var app = air.NativeApplication.nativeApplication;
       
var icon, isWindows = false, bitmaps;
       
       
// windows
       
if(air.NativeApplication.supportsSystemTrayIcon) {
        icon
= app.icon;
                isWindows
= true;
   
}
   
       
// mac
   
if(air.NativeApplication.supportsDockIcon) {
                icon
= app.icon;
   
}
       
       
return {
               
                setIcon
: function(icon, tooltip, initWithIcon){
                       
if(!icon){ // not supported OS
                               
return;
                       
}
                       
var loader = new air.Loader();
                        loader
.contentLoaderInfo.addEventListener(air.Event.COMPLETE, function(e){
                                bitmaps
= new runtime.Array(e.target.content.bitmapData);
                               
if (initWithIcon) {
                                        icon
.bitmaps = bitmaps;
                               
}
                       
});
                loader
.load(new air.URLRequest(icon));
                       
if(tooltip && air.NativeApplication.supportsSystemTrayIcon) {
                                app
.icon.tooltip = tooltip;
                       
}
               
},
               
                bounce
: function(priority){
                        icon
.bounce(priority);
               
},
               
                on
: function(eventName, fn, scope){
                        icon
.addEventListener(eventName, function(){
                                fn
.apply(scope || this, arguments);
                       
});
               
},
               
                hideIcon
: function(){
                       
if(!icon){ // not supported OS
                               
return;
                       
}
                        icon
.bitmaps = [];
               
},
               
                showIcon
: function(){
                       
if(!icon){ // not supported OS
                               
return;
                       
}
                        icon
.bitmaps = bitmaps;
               
},
               
                setMenu
: function(actions, _parentMenu){
                       
if(!icon){ // not supported OS
                               
return;
                       
}
                       
var menu = new air.NativeMenu();
                       
                       
for (var i = 0, len = actions.length; i < len; i++) {
                               
var a = actions[i];
                               
if(a == '-'){
                                        menu
.addItem(new air.NativeMenuItem("", true));
                               
}else{
                                       
var item = menu.addItem(Ext.air.MenuItem(a));
                                       
if(a.menu || (a.initialConfig && a.initialConfig.menu)){
                                                item
.submenu = Ext.air.SystemTray.setMenu(a.menu || a.initialConfig.menu, menu);
                                       
}
                               
}
                               
                               
if(!_parentMenu){
                                        icon
.menu = menu;
                               
}
                       
}
                       
                       
return menu;
               
}
       
};      
}();