(Single) Object Viewer (Object Tabs) / BOR LC 7 / Usability, Windowing Bug Number: n/a Release notes (y/n): Yes For Release Nums: 7.1 This is a squash merge from the BorLc7-ObjViewer1 branch (which was, today, rebased onto the RW 7.1 head). Instead of showing a new Open Object dialog each time a simulation object is "opened," a new tab will be added to a new Object Viewer dialog for that object. This new dialog looks like an Open Object dialog, but adds a set of tabs -- one tab for each of several open objects. Provisions include: (1) The user has the ability to "tear off" (drag) an object tab into its own conventional Open Object dialog. (2) Conversely, dragging an Open Object dialog's Object Icon onto the Object Viewer will "redock" that dialog into the viewer (creating a new tab for the corresponding object). (3) The object tabs can be reordered by dragging them within the tab row. (4) A particular Simulation Object can be shown only as a tab in the Object Viewer dialog OR in its own Open Object dialog, at any given time. (5) To the right of the Object Viewer's object tabs is a drop down menu (downward-pointing arrow button) showing a selectable list of the viewer's objects. (This is exactly redundant with the object tabs, but provides better accessibility if there are more than just a few objects). (6) The menubar menus dynamically changes when switching to a different object. For example, "Element" and "Link Structure" menus will appear only when an Aggregate Object is selected within the viewer dialog. (7) Double clicking on a Workspace SimObj Icon or item in the Workspace Object List reopens the dialog containing that object (either the Object Viewer or Open Object Dialog) if such a dialog exists. Otherwise, the clicked SimObj is added to the Object Viewer as a new Object Tab. This development also provides a redesign (a simplification) of the widgets at the top of the Open Object Dialog. We are now showing a medium-sized (20x20) object icon (button) instead of the "normal" (large, 40x40), and we've removed the object TYPE description string. (That is now just a tool-tip on the object icon). This change basically changes two rows of widgets into a single row. Note: Internally, the distinction between the "Object Viewer" and "Open Object Dialogs" has been kept to a minimum. (I didn't want to significantly diverge the code base for this distinction). It would be very natural to allow the user to drag an Object Tab from one object dialog to another. This capability has been implemented, but has been DISABLED based on the first compile-time symbol shown below. When this is enabled, dragging an Object Tab or Object Icon (in another Open Object Dialog) to an Open Object Dialog effectively dynamically "promotes" that dialog to another Object Viewer instance. (This functionality has been well-tested). static const bool ENA_OPEN_OBJ_PROMOTION_TO_VIEWER (false); // 7.1: false static const bool VIEWER_TITLE_BAR_SHOWS_OBJ_COUNT (false); // 7.1: false static const bool VIEWER_TITLE_BAR_SHOWS_OBJ_NAME (false); // 7.1: false static const bool VIEWER_TABS_SHOW_OBJ_ICONS (false); // 7.1: false static const bool VIEWER_ALWAYS_SHOWS_TAB_BAR (true); // 7.1: true So, with that setting, only ONE Object Viewer dialog will ever be shown. ---