contact

Posts Tagged ‘air’

adding Mac OS X like Application Behaviour to your Air Application

Tuesday, March 31st, 2009

In Mac OS X when you close the window of an application the app usually keeps running in the dock. Wheter this is a good thing or not is totally different story, but for apps like mail and ical it certainly is since I want my mail app to keep checking for new mail without the window cluttering up my screen. So what if I want to add such behaviour to an Adobe Air Application.

 	var appIsPersistant:Boolean=false
 	var app=NativeApplication.nativeApplication
 	var window=stage.nativeWindow;

public function set appPersistant(b:Boolean):void{ // adding a simple property to your app b:Boolean whether its stays on or not
 appIsPersistant=b
 	if(b){
 		if(app!=null){
 			app.autoExit=false // preventing the app to exit if all windwows are closed
 			window.addEventListener(Event.CLOSING,hideWindow) // listening for the closing event of the main window
 			app.addEventListener(InvokeEvent.INVOKE,initWindow) // listening for the invoke event if the user clicks on the dock icon
 			app.addEventListener(Event.EXITING,appClose) // listening if the app should be terminated, to prevent the hiding of the window and allow termination
 		}
 	}else{
 		if(app!=null){
 		app.autoExit=true // if app is not persistant the app can close just as usual
 		}
 	}
 }
 public function appClose(e:Event):void{
 	window.removeEventListener(Event.CLOSING,hideWindow) // if the app should terminate with command + Q we have to remove the listener for the Closing event. Otherwise only the window will close but the app will not terminate
 }
 public function hideWindow(e:Event):void{
 	if(window.visible){ // if the window is visible the event behaviour is canceld and the window is hidden
 		e.preventDefault()
 		window.visible=false
 	}
 }
 function initWindow(e:Event=null):void{
 	window.activate() // if the user clicks on the dock icon the window commes back up
 }
 public function get appPersistant():Boolean{
 	return appIsPersistant // just the getter for the appPersistant propery
 }

by adding these few methods your app will exit just fine with command + Q but if you click the close button only the window will close and the app keeps running and comes back up if you click the dock icon