Displaying pop-ups and modals above other content in Feathers UI
Feathers UI includes a
PopUpManager that allows content to be displayed over the rest of the application. It provides options to make the pop-up modal, meaning that mouse and touch events will be prevented from reaching the rest of the application unless the pop-up is removed. Additionally, if focus management is enabled, modal pop-ups will be given exclusive access to focus while they are open, and focus cannot be passed to components below the modal overlay.
Add a pop-up
PopUpManager.addPopUp() may be used to add any UI component as a pop-up over the rest of the application.
var panel = new Panel(); panel.header = new Header("Warning"); panel.addChild(new Label("This is a very important message")); panel.addChild(new Button("OK")); PopUpManager.addPopUp(panel, parent, true, true);
The first argument is the display object that should be added as a pop-up. It is not required to be a Feathers UI component, and it may include any type of simple OpenFL display object, such as a
Sprite or a
The second argument is the origin display object that the pop-up should be associated with. This argument is used to determine which
Stage the pop-up should be added to. This becomes important when multiple windows are open in desktop applications.
The third argument is an optional
Bool value that determines if the pop-up is modal or not. When a pop-up is modal, mouse and touch events cannot be passed to the rest of the application below, and keyboard focus changes will be kept within the modal pop-up. If a pop-up is not modal, the user may interact with the rest of the application normally.
The fourth argument an optional
Bool value that determines if the pop-up should be centered within the stage bounds. When a pop-up is centered in this way, the
PopUpManager will automatically reposition the pop-up if the stage (or the pop-up itself) resizes.
Remove a pop-up
To remove a pop-up, call
To remove all pop-ups, call
Center a pop-up
There are two different ways to center pop-ups, depending on your needs.
The first way to center a pop-up is to pass a value of
true to the fourth argument of
PopUpManager.addPopUp(). In this case, the pop-up will be centered immediately when it is added to the display list. Then, if the stage resizes or if the pop-up itself resizes, the pop-up will be repositioned in order to remain centered.
The pop-up manager can only detect when the pop-up resizes if it is a Feathers UI component. Simple OpenFL display objects, such as
Shape, do not dispatch any event to indicate that they have been resized.
If you choose not to center a pop-up when you call
PopUpManager.addPopUp(), you can center it manually by calling
PopUpManager.centerPopUp(). This will center the pop-up immediately. However, if the pop-up resizes or the stage resizes, you will need to call
PopUpManager.centerPopUp() again to reposition it so that it remains centered.