Pop-up Windows and Screen Rendering in aXes-TS2
Over the years various 5250 pseudo window techniques have been utilized by 5250 developers. There are some important things you need to understand about them:
- In no viable way are they really desktop windows - or even particularly viable substitutes for Windows desktop windows (in the sense of the full Windows API capabilities).
- In new application design terms you should always view 5250 windows as the poor cousins of real Windows desktop windows (and even many other windows controls when used for field prompting).
These 5250 pseudo windows come in three basic forms:
- Imitations: the developer creates the appearance of a box using characters such as . : _ | (or a space with a background colour) to create a border. Recognising and dealing with windows of this type is not covered here.
- DDS(-defined) windows: the developer uses the DDS WINDOW keyword to define the window and the operating system uses graphics characters to draw the window on the terminal.
- Degraded DDS windows: the developer has defined the window in DDS but failed to leave space around it for the attribute bytes to turn graphics characters on/off. In this scenario, the operating system will draw it like a window imitation.
On most terminal emulators, degraded DDS windows look quite different to properly defined DDS windows so they should be easy to identify.
URL Popups Parameter
Until Version 2.1 aXes-TS2 treated every screen as a new screen and rendered it from scratch.
In aXes-TS2 V2.1 a new parameter popups has been introduced to the aXes URL to identify and handle degraded DDS windows and to provide the option of keeping the previous screen background unchanged when a popup window is drawn over it.
Recognising Degraded DDS Windows
Until Version 2.1 aXes-TS2 did not recognise degraded DDS windows. This means they were not drawn in boxes with borders with shadows that make the windows stand out clearly. aXes was also unable to prevent user interaction with the background.
To address this issue the aXes-TS2 engine has been modified to identify degraded DDS windows. It checks the details of the DDS record formats of the frontmost window sent by the aXesTS server, and if a record format of type “window” exists, but the screen contains no windows, aXes knows that a degraded DDS window exists and it can create one.
This behaviour is enabled by default. The developer can use the URL popups parameter to instruct aXes to disable degraded DDS window detection:
See URL Parameters.
If a degraded DDS window is drawn on top of another similar window, this technique cannot tell if it is a new window or the same window and will replace the currently rendered window.
Degraded DDS windows cannot be identified in TELNET/PASSTHRU sessions because DDS level record format information is not available.
Keeping the Background Customizations
Prior to version 2.1, when a window is drawn over the current window, any customizations applied to the background window are lost because aXes redraws the screen from scratch and the background is redrawn as uncustomized. This is not a functional problem but the changes in the background window may be confusing to the user.
Therefore aXes-TS2 screen rendering has been modified so that instead of automatically redrawing the screen from scratch, it can check if the virtual device has any windows. It compares the number found with the number currently rendered, deletes any excess (i.e. if the previous screen had a window now closed) and then redraws the topmost window. This way, the background along with any customizations remains intact.
In the majority of situations the background should be kept. This is the default behavior. However, to allow for special circumstances the developer can use the popups parameter to instruct aXes to not keep the background:
It should be noted that when the screen background is kept, there is a possibility of screen level eXtensions interfering with each other in unexpected ways. A window is seen as a new screen and, when customized, gets its own set of screen eXtensions. Where extensions were previously applied to a “clean slate”, they are now being applied on top of the extensions from one or more previous screens. This may produce some unexpected results.
See URL Parameters.
When I start customizing a popup screen, it completely covers the whole screen, is this normal?
Yes. Popup screens will only show the previous screen in the area surrounding the popup if the popup screen is uncustomized. Once you start to customize a popup screen, it will cover up the surrounding area.
I have customized a screen (screen A) that can invoke a popup (screen B). When the popup appears, what was shown in the background is the original uncustomized screen A instead of the customized one. What should I do?
From version 2.1.11 onwards aXes-TS2 will keep the background customizations. Check that this has not been turned off with the popups parameter of the axes URL. See Keeping the Background Customizations.
In aXes-TS1 make the popup screen (screen B) into a customized screen - even when you don’t change anything in the popup screen.
See the FAQ item above – when a popup screen (screen B) is customized, it will completely cover the whole screen & the previous screen (screen A) will not show in the background anymore.
My popup is making use of the cursor to allow the user to select an item from a list, how will this work after the screen has been customized as the cursor does not show anymore?
If your popup allows the user to select a value by displaying a list of values, and the user selects one by putting the cursor on the list entry and pressing enter, then the best alternative is to customize the popup screen and add a hyperlink extension to the first field in the popup's list, as explained in the section above (Example – Working with 5250 Cursor).
You could also enable the limitedCursorSupport option on the popup screen, though visually, the first option is much better. Note that the limited cursor support is meant as a temporary measure only and should not be used as a permanent solution.
If you are enabling the limitedCursorSupport, make sure that you set the keepPopupLocation property of the popup screen to true.
You can use the axPopupWindow extension to customize the position, size and style of a 5250 window in TS2. You may want to use the extension for example when you have a customised background that has rearranged the screen and you also need to move the initial position of popups.