48 lines
1.2 KiB
Haxe
Executable File
48 lines
1.2 KiB
Haxe
Executable File
package haxework.gui.popup;
|
|
|
|
import haxework.animate.IAnimate;
|
|
import haxework.gui.Root;
|
|
import haxework.gui.IGroupView;
|
|
|
|
class PopupManager {
|
|
|
|
public var showAnimateFactory(default, default):Class<IAnimate>;
|
|
public var closeAnimateFactory(default, default):Class<IAnimate>;
|
|
|
|
private var popups:Array<PopupView<Dynamic>>;
|
|
|
|
public function new() {
|
|
popups = new Array<PopupView<Dynamic>>();
|
|
}
|
|
|
|
public function show(popup:PopupView<Dynamic>):Void {
|
|
cast(Root.instance.view, IGroupView).addView(popup);
|
|
if (showAnimateFactory != null) {
|
|
Type.createInstance(showAnimateFactory, [popup]).start(null);
|
|
}
|
|
popups.push(popup);
|
|
popup.onShow();
|
|
}
|
|
|
|
public function close(popup:PopupView<Dynamic>):Void {
|
|
popups.remove(popup);
|
|
if (closeAnimateFactory != null) {
|
|
Type.createInstance(closeAnimateFactory, [popup]).start(function(_) {
|
|
cast(Root.instance.view, IGroupView).removeView(popup);
|
|
popup.onClose();
|
|
});
|
|
} else {
|
|
cast(Root.instance.view, IGroupView).removeView(popup);
|
|
popup.onClose();
|
|
}
|
|
}
|
|
|
|
public function closeTop():Bool {
|
|
if (popups.length > 0) {
|
|
close(popups[popups.length - 1]);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|