SuperWindow
What is the SuperWindow component? In a nutshell it adds functionality for multiple windows on either Mac or Windows without having to specifically code for each operating system. It will manage NativeMenus, Dock and SystemTray icons and menus per window, ContextMenus, and Alerts.
Properties
Per Application Static variables:
MULTI_MENU_MODE = false (Mac OS X):

MULTI_MENU_MODE = true (Mac OS X):

Windows Vista shows per window menus:

SHOW_SYSDOCK_MENU=true (Mac OS X):

SHOW_SYSDOCK_MENU=true (Windows):

Per Window variables:
showContextMenu = true (Mac OS X):

showContextMenu = true (Windows):

addWindowControls = true (Mac OS X NativeMenu):

addWindowControls = true (Windows SystemTray Menu):


- native - will call the nativeWindow.notifyUser() methods when on Windows or the DockIcon.bounce() method on Mac
alertMethod=”native” (Mac OS X):

alertMethod=”native” (Windows):

- toast - will create an AlertWindow and set an icon within the window to either information or critical and will either simply animate and retreat or animate and bounce depending on the specified alertType
alertMethod=”toast” (Mac OS X - INFORMATIONAL):

alertMethod=”toast” (Windows - CRITICAL):

- icon - will alter the appearance of either the Dock or SystemTray icon by swapping either the default icon with filtered version or a custom supplied icon with a filtered version
alertMethod=”icon” (Mac OS X):

alertMethod=”icon” (Windows):

Per Window methods:
Some Sample Code creating SuperWindows with ActionScript
Window with a menu
// create main menu
var nativeMenu:NativeMenu = new NativeMenu();
// create a few menu items
var menuItem1:NativeMenuItem = new NativeMenuItem("Menu Item 1");
var menuItem2:NativeMenuItem = new NativeMenuItem("Menu Item 2");
// add menu items
nativeMenu.addItem(menuItem1);
nativeMenu.addItem(menuItem2);
// create a submenu
var subMenu:NativeMenu = new NativeMenu();
// create a submenu item
var menuItem3:NativeMenuItem = new NativeMenuItem("Menu Item 3");
// add item to submenu
subMenu.addItem(menuItem3);
// set the submenu to menuItem1
menuItem1.submenu = subMenu;
// create new MenuWindow and pass in a NativeMenu
var win = new SuperWindow();
win.title = "Example 1";
win.nm = nativeMenu;
win.width=350;
win.open();
}
Window with a menu, window controls, and context menu
// create main menu
var nativeMenu:NativeMenu = new NativeMenu();
// create a few menu items
var menuItem1:NativeMenuItem = new NativeMenuItem("Menu Item 1");
var menuItem2:NativeMenuItem = new NativeMenuItem("Menu Item 2");
// add menu items
nativeMenu.addItem(menuItem1);
nativeMenu.addItem(menuItem2);
// create a submenu
var subMenu:NativeMenu = new NativeMenu();
// create a submenu item
var menuItem3:NativeMenuItem = new NativeMenuItem("Menu Item 3");
// add item to submenu
subMenu.addItem(menuItem3);
// set the submenu to menuItem1
menuItem1.submenu = subMenu;
// create new MenuWindow and pass in a NativeMenu
var win = new SuperWindow();
win.title = "Example 1";
win.nm = nativeMenu;
win.adWindowControls = true;
win.showContextMenu = true;
win.width=350;
win.open();
}
Window with a custom icons
private var Icon16:Class;
private var bitmap16:Bitmap = new Icon16();
[Embed(source="assets/e32.png")]
private var Icon32:Class;
private var bitmap32:Bitmap = new Icon32();
[Embed(source="assets/e48.png")]
private var Icon48:Class;
private var bitmap48:Bitmap = new Icon48();
[Embed(source="assets/e128.png")]
private var Icon128:Class;
private var bitmap128:Bitmap = new Icon128();
private function openWindow():void{
var win = new SuperWindow();
win.sysDockIconBitmaps = [bitmap16.bitmapData,
bitmap32.bitmapData,
bitmap48.bitmapData,
bitmap128.bitmapData];
win.width=350;
win.open();
}
Creating SuperWindow’s with MXML
Window with a menu and toast alerts
<SuperWindow xmlns="com.everythingflex.air.components.*"
xmlns:mx="http://www.adobe.com/2006/mxml"
width="400" height="150" creationComplete="init()" title="Example 3"
nm="{nativeMenu}" showContextMenu="true" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var nativeMenu:NativeMenu = new NativeMenu();
private function init():void{
// create a few menu items
var menuItem1:NativeMenuItem = new NativeMenuItem("Menu Item 1");
var menuItem2:NativeMenuItem = new NativeMenuItem("Menu Item 2");
// add menu items
nativeMenu.addItem(menuItem1);
nativeMenu.addItem(menuItem2);
// create a submenu
var subMenu:NativeMenu = new NativeMenu();
// create a submenu item
var menuItem3:NativeMenuItem = new NativeMenuItem("Menu Item 3");
// add item to submenu
subMenu.addItem(menuItem3);
// set the submenu to menuItem1
menuItem1.submenu = subMenu;
}
]]>
</mx:Script>
<mx:Button click="this.startAlert('Something important is happening')"
x="130" y="65" label="Start "toast" Alert"/>
</SuperWindow>
Window with a menu, context menu, window controls, custom icons, altered icons, and icon alerts
<SuperWindow xmlns="com.everythingflex.air.components.*"
xmlns:mx="http://www.adobe.com/2006/mxml"
width="400" height="150" creationComplete="init()" title="Icon Alert 3"
nm="{nativeMenu}" showContextMenu="true" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var nativeMenu:NativeMenu = new NativeMenu();
[Embed(source="assets/e16.png")]
private var Icon16:Class;
private var bitmap16:Bitmap = new Icon16();
[Embed(source="assets/e32.png")]
private var Icon32:Class;
private var bitmap32:Bitmap = new Icon32();
[Embed(source="assets/e48.png")]
private var Icon48:Class;
private var bitmap48:Bitmap = new Icon48();
[Embed(source="assets/e128.png")]
private var Icon128:Class;
private var bitmap128:Bitmap = new Icon128();
[Embed(source="assets/e16_2.png")]
private var Icon16_2:Class;
private var bitmap16_2:Bitmap = new Icon16_2();
[Embed(source="assets/e32_2.png")]
private var Icon32_2:Class;
private var bitmap32_2:Bitmap = new Icon32_2();
[Embed(source="assets/e48_2.png")]
private var Icon48_2:Class;
private var bitmap48_2:Bitmap = new Icon48_2();
[Embed(source="assets/e128_2.png")]
private var Icon128_2:Class;
private var bitmap128_2:Bitmap = new Icon128_2();
private function init():void{
// create a few menu items
var menuItem1:NativeMenuItem = new NativeMenuItem("Menu Item 1");
var menuItem2:NativeMenuItem = new NativeMenuItem("Menu Item 2");
// add menu items
nativeMenu.addItem(menuItem1);
nativeMenu.addItem(menuItem2);
// create a submenu
var subMenu:NativeMenu = new NativeMenu();
// create a submenu item
var menuItem3:NativeMenuItem = new NativeMenuItem("Menu Item 3");
// add item to submenu
subMenu.addItem(menuItem3);
// set the submenu to menuItem1
menuItem1.submenu = subMenu;
this.alertMethod = "icon";
this.alertType = NotificationType.CRITICAL;
this.showContextMenu = true;
this.addWindowControls = true;
this.sysDockIconBitmaps = [bitmap16.bitmapData,
bitmap32.bitmapData,
bitmap48.bitmapData,
bitmap128.bitmapData];
this.alteredSysDockIconBitmaps = [bitmap16_2.bitmapData,
bitmap32_2.bitmapData,
bitmap48_2.bitmapData,
bitmap128_2.bitmapData];
}
]]>
</mx:Script>
<mx:Button click="this.startAlert('Something important is happening')"
x="130" y="65" label="Start "icon" Alert"/>
</SuperWindow>


