Over 10 years of community discussion and knowledge are maintained here as a read-only archive.
import flash.display.Sprite;import mx.core.Applicationimport mx.core.IFlexDisplayObject;import mx.managers.PopUpManager;public static function openPopUpWindow( ComponentClass:Class, MediatorClass:Class ):void{ var window:IFlexDisplayObject = PopUpManager.createPopUp( Application.application as Sprite, ComponentClass, true ); ApplicationFacade.getInstance().registerMediator( new MediatorClass( window ) ); PopUpManager.centerPopUp( window );}public static function closePopUpWindow( window:IFlexDisplayObject, mediatorName:String ):void{ PopUpManager.removePopUp( window ); ApplicationFacade.getInstance().removeMediator( mediatorName );}
package com.managers.popup{ import flash.display.Sprite; import mx.core.Application; import mx.core.IFlexDisplayObject; import mx.managers.PopUpManager; import org.puremvc.user.ApplicationFacade; public class PopManager extends PopUpManager { public static function openPopUpWindow( ComponentClass:Class, MediatorClass:Class ):void { var window:IFlexDisplayObject = PopUpManager.createPopUp( Application.application as Sprite, ComponentClass, true ); ApplicationFacade.getInstance().registerMediator( new MediatorClass( window ) ); PopUpManager.centerPopUp( window ); } public static function closePopUpWindow( window:IFlexDisplayObject, mediatorName:String ):void { PopUpManager.removePopUp( window ); ApplicationFacade.getInstance().removeMediator( mediatorName ); } }}
/* PureMVC Architecture 101 Course Copyright(c) 2007 FutureScale, Inc. All rights reserved. */package org.puremvc.user.view{ import mx.controls.Alert; import flash.events.Event; import org.puremvc.interfaces.IMediator; import org.puremvc.interfaces.INotification; import org.puremvc.patterns.mediator.Mediator; import org.puremvc.patterns.observer.Notification; import org.puremvc.common.model.vo.UserVO; import org.puremvc.common.model.UserProxy; import org.puremvc.common.model.RepDetailsProxy; import org.puremvc.user.ApplicationFacade; import org.puremvc.user.view.components.NewUserForm; import org.puremvc.user.view.components.RepDetails; import org.puremvc.user.view.components.UploadForm; import com.managers.popup.PopManager; public class RepDetailsMediator extends Mediator implements IMediator { public static const NAME:String = "RepDetailsMediator"; private var userProxy:UserProxy; private var repDetailsProxy:RepDetailsProxy; private var UploadForm:Class; private var UploadFormMediator:Class; public function RepDetailsMediator( viewComponent:Object ) { super( viewComponent ); repDetails.addEventListener( RepDetails.CHECKBOX_SELECTED, onCheckBoxSelected ); repDetails.addEventListener( RepDetails.UPLOAD_POPUP, onUploadPopUp ); userProxy = facade.retrieveProxy( UserProxy.NAME ) as UserProxy; repDetailsProxy = facade.retrieveProxy( RepDetailsProxy.NAME ) as RepDetailsProxy; } private function get repDetails():RepDetails { return viewComponent as RepDetails; } override public function getMediatorName():String { return NAME; } private function onCheckBoxSelected( event:Event ) : void { trace("Here Here Data:" + repDetails.checkedData); userProxy.updateProject(repDetails.checkedData); } private function onUploadPopUp(event:Event):void { PopManager.openPopUpWindow( UploadForm, UploadFormMediator ); } override public function listNotificationInterests():Array { return [ ApplicationFacade.NEW_USER_FORM ]; } override public function handleNotification( note:INotification ):void { switch ( note.getName() ) { case ApplicationFacade.NEW_USER_FORM: repDetails.projectData = repDetailsProxy.projectData; repDetails.statesData = repDetailsProxy.statesData; repDetails._selectedDate = repDetailsProxy.getNow18Years(); } } }}
Daniele,This is a great answer to the problem of popups....Since these methods are static, I would suggest a more appropriate place to put them might be a class like: com.me.myapp.view.managers.PopupManager.-=Cliff>
public class ApplicationMediator extends Mediator implements IMediator { public static const NAME:String = 'ApplicationMediator'; public function ApplicationMediator( viewComponent:Object ) { super( NAME, viewComponent ); } override public function listNotificationInterests():Array { return [ApplicationFacade.POP_UP_VC_ADD]; } override public function handleNotification( note:INotification ):void { addToNotificationsReceived( note ); switch ( note.getName() ) { case ApplicationFacade.POP_UP_VC_ADD: this.onPopUpAdd(note.getBody()); break; } } private function onPopUpAdd(popUp):void { PopUpManager.addPopUp(popUp, this.viewComponent, true); PopUpManager.centerPopUp(popUp); }