Flex 이동식 Aler 구성 요소(DataCarriableAlert)
package component.alert
{
import flash.display.Sprite;
import flash.events.EventPhase;
import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.core.IFlexDisplayObject;
import mx.core.IFlexModule;
import mx.core.IFlexModuleFactory;
import mx.core.UIComponent;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.managers.ISystemManager;
import mx.managers.PopUpManager;
/**
* Alert control provided by flex sdk is not supportted to carry data in close handler, only a predefined closeEvent object,</br>
* you can use DataCarriableAlert to resolve this problem, you can obtain both the closeEvent object and your parameters.
* Usage example:</br>
* DataCarriableAlert.show("Are you sure to delete the selected trades?","Message",Alert.YES|Alert.NO,this,deletionConfirm,[2]);</br>
*
* </br>private function deletionConfirm(e:CloseEvent,intv:int):void{</br>
* //intv is 2 which was passed by above code</br>
* if(e.detail==Alert.NO){</br>
* return;</br>
* }</br>
* }</br>
*/
public class DataCarriableAlert extends Alert
{
public function DataCarriableAlert()
{
super();
}
public static function show(text:String = "", title:String = "",
flags:uint = 0x4 /* Alert.OK */,
parent:Sprite = null,
closeHandler:Function = null,
closeHandlerParameters:Array=null,
iconClass:Class = null,
defaultButtonFlag:uint = 0x4 /* Alert.OK */,
moduleFactory:IFlexModuleFactory = null):Alert
{
var modal:Boolean = (flags & Alert.NONMODAL) ? false : true;
if (!parent)
{
var sm:ISystemManager = ISystemManager(FlexGlobals.topLevelApplication.systemManager);
// no types so no dependencies
var mp:Object = sm.getImplementation("mx.managers.IMarshallPlanSystemManager");
if (mp && mp.useSWFBridge())
parent = Sprite(sm.getSandboxRoot());
else
parent = Sprite(FlexGlobals.topLevelApplication);
}
var alert:Alert = new Alert();
if (flags & Alert.OK||
flags & Alert.CANCEL ||
flags & Alert.YES ||
flags & Alert.NO)
{
alert.buttonFlags = flags;
}
if (defaultButtonFlag == Alert.OK ||
defaultButtonFlag == Alert.CANCEL ||
defaultButtonFlag == Alert.YES ||
defaultButtonFlag == Alert.NO)
{
alert.defaultButtonFlag = defaultButtonFlag;
}
alert.text = text;
alert.title = title;
alert.iconClass = iconClass;
/********************************override part start****************************************************************/
if (closeHandler != null){
alert.addEventListener(CloseEvent.CLOSE,
function(closeEvent:CloseEvent):void{
var parameters:Array=[];
parameters.push(closeEvent);
if(closeHandlerParameters!=null && closeHandlerParameters.length>0){
for each(var p:Object in closeHandlerParameters){
parameters.push(p);
}
}
closeHandler.apply(alert,parameters);
}
)
}
/********************************override part end*******************************************************************/
// Setting a module factory allows the correct embedded font to be found.
if (moduleFactory)
alert.moduleFactory = moduleFactory;
else if (parent is IFlexModule)
alert.moduleFactory = IFlexModule(parent).moduleFactory;
else
{
if (parent is IFlexModuleFactory)
alert.moduleFactory = IFlexModuleFactory(parent);
else
alert.moduleFactory = FlexGlobals.topLevelApplication.moduleFactory;
// also set document if parent isn't a UIComponent
if (!parent is UIComponent)
alert.document = FlexGlobals.topLevelApplication.document;
}
alert.addEventListener(FlexEvent.CREATION_COMPLETE, static_creationCompleteHandler);
PopUpManager.addPopUp(alert, parent, modal);
return alert;
}
private static function static_creationCompleteHandler(event:FlexEvent):void
{
if (event.target is IFlexDisplayObject && event.eventPhase == EventPhase.AT_TARGET)
{
var alert:Alert = Alert(event.target);
alert.removeEventListener(FlexEvent.CREATION_COMPLETE, static_creationCompleteHandler);
alert.setActualSize(alert.getExplicitOrMeasuredWidth(),
alert.getExplicitOrMeasuredHeight());
PopUpManager.centerPopUp(IFlexDisplayObject(alert));
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark에서 OpenStack Swift 기반 IBM Object Storage에 연결해 본 메모Spark와 같은 빅데이터 전제라면 로그 파일 등이 상정되는 경우도 많을 것입니다만, 일반적인 비즈니스 데이터는 피해서 통과할 수 없기 때문에 우선은 CSV, 라고 하는 것으로 CSV 주위를 조금 시험해 보았을 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.