Optimizing GUI Apps to Run in BUI
In BBj 13.0 and above, the default BUI BBjListButton and BBjListEdit controls are custom objects with the same behavior as the GUI versions. In previous releases of BBj, these BUI controls were implemented using native HTML select elements (now available as a configuration option, using STBL("!OPTIONS","NATIVE_BROWSER_LIST=TRUE")). HTML dropdown select objects don't allow for "no item selected", and that's how the native version of the BUI BBjListButton works by default. Some applications, including BASIS b-commerce, depend on being able to deselect all items. If this is important for your application, a special compatibility setting has been added to insert a special blank item at the top of the list to act as the "deselected" value. This is transparent to the application, so no code needs to be changed. To enable this option, add the following line to your config.bbx file:
The browser always has a title for a given browser window or tab. Since GUI does not have this concept, BUI borrows the BBj application name. The BBjAppConfig object has a method setBBjApplicationName(). Setting the application name with this method causes that name to appear when no window is currently selected. The default title is "BBj BUI Application" if no application name is set.
- To save on browser resources and to more closely follow the Web paradigm, BUI uses a "tabbed" window manager. Much like modern browsers, individual top level SYSGUI windows appear as tabs within the browser client area. The tabs will almost always appear for most applications. There are some cases where a developer might want to eliminate the tabs. The BUI window manager will not show the tab bar if the following conditions hold:
There is only one non-dialog window visible at a time.
That window either has the "No Titlebar" flag set ($01000000$), or the window does not specify the closeable flag ($00000002$) or the maximizable/minimizable flag ($00000080$).
To cause a window to float on top of the browser's client area, use the Dialog behavior flag ($00080000$).
All BUI applications in a single web browser share a license and all GUI applications on a desktop share a second license. A BUI application will not share a license with a GUI application. For example, if a customer is using an application via BASIS thin-client and a BUI application, a total of two users from their license are in use. Subsequent invocations of thin-client and/or BUI sessions would collapse under existing users (i.e. a second BASIS thin-client session and a second BUI session in the same browser will still only require the original two-users).
Touch-oriented environments like iOS and Android do not generate the same mouse events as desktop browsers. Pay particular attention to double click and right click events, as they are never generated. For example, if you double click a list to edit a specific item, you may need to add a button to edit the selected item. Also, touch-centric devices have no concept of "hovering", so mouse move events should not be relied upon.
Some browsers may leave open processes in BBj. In our testing, we've found that Chrome works correctly but Safari and Firefox may leave open processes for up to an hour after the browser is shutdown. Running the following in an autorun program will allow you to set the timeout to whatever value you like (in this case, 60 seconds):
BUI What's Not Yet Implemented