Enhancements in MasterStudio 1.0.3

In addition to numerous new improvements, this release implements items 74 and 8k of the original MasterStudio Function Points list.
  1. If a non-text column in a schema class allows #NULL values (i.e., its $nonull attribute is kFalse), then MasterStudio will accept 0 (zero) as a valid value if that column is mandatory.
  2. Keyboard shortcut for "hyperlinks": When the cursor is in a joined field, the user can now press <Alt>-<Return> (Option-Return on the Mac) to open the corresponding pick list.
  3. Context menus in Master-Detail windows now include a "Revert Record" option, allowing users to revert changes to an individual record (rather than always having to revert all changes by clicking the Cancel button).
  4. When opening a pick list from a schema's <VIEW> tag, MasterStudio always used context "MdWindowContext", unless you overrode the default in the class factory. The <VIEW> tag now accepts attribute "CONTEXT" allowing you to have the schema use a custom window context: <VIEW CONTEXT="MyWindowContextClass">MyEntityDelegate</VIEW>.
  5. Master-Detail windows now offer smoother redraws when browsing through records, and when entering values into foreign fields.
  6. Improved handling of the first modification in a field: The fields manager will now properly handle a change in a field. You can now select other commands without first having to tab out of the entry field.
  7. A new pane selector type, kMoPaneSelectorInvisible, was added. This pane selector type can be used to implement "invisible" pane selectors that are managed by your own code. Pane selectors now also support a number of delegate methods (see below). If a pane selector is instantiated by a frameset controller, then the frameset delegate is also used as the delegate for the subpane selectors.
  8. After deleting the last record in a list, the list manager now selects the first available record rather than the last line (which is empty).
  9. The MasterStudio session superclass, which acts as a facade over the Omnis dam session object, now implements $emptyDateAsNull. So you no longer need to use ...sessionObject.$damSessionObject to set this new Omnis DAM attribute.
  10. The generic fields manager now properly handles masked entry fields in addition to normal entry fields and multi-line entry fields. Note that you must manually calculate the $text attribute of masked entry fields in their $construct method. A masked entry field was added to the MasterStudio Component Store to reflect this.
  11. The $gotoData method in the list manager will no longer activate the "Select" command if a unique record was found.
  12. The "Erase" button now remains visible if "Find mode" is available in a window.
  13. The radio buttons in the MasterStudio component store no longer use the kEFright attribute.
  14. The Oracle database session object no longer uses the TRUNC() function if no decimals were typed into the search criteria by the user.

New Methods in MasterStudio 1.0.3

(See the Book Addenda for a listing of these new features per chapter of the Developer Manual)
  1. Entity Delegate/$showPreviousNext: By returning kFalse from this method, a developer can remove the "Previous" and "Next" commands from the entity's window.
  2. Entity Delegate/$showAppend: By returning kFalse from this method, you can remove the "Append" option from Find mode. Users will no longer be able to append records found to the previous result set.
  3. Entity Delegate/$sqlAndConditionFromRow: This delegate method allows you to change each SQL "AND" condition that is added by the list manager after the user enters a search value for a column in Find mode. You can replace the default condition by your own, or you can omit the condition entirely. See the source code for parameters and other details.
  4. Entity Delegate/$sqlAppendConditionsForRow: This delegate method allows you to append your own search conditions to the default SQL where clause. You can also modify or replace the default AND-conditions that were generated by the list manager. See the source code for parameters and other details.
  5. List Manager/$addJoinColumn now has an optional fifth parameter pkCouldBeNull_opt. Pass kTrue if #NULL is a valid value for the joined column. If you do not pass any parameter, then this value is automatically derived from the column's $nonull setting in the schema.
  6. Entity Table/$mdShouldCommit: This template method is called right before changes are committed to the database, i.e. right before the transaction is finished. You could use this method to call a stored procedure in the database, or to calculate custom list columns to reflect the new records. Return kTrue if the commit may take place. Return kFalse if you want a rollback to occur.
  7. New Pane Selector delegate methods were created and added to a new superclass, MoControllerPaneSelectorDelegateSuperclass: $subpaneSelectorInitialized, $subpaneInitialized, $subpaneActivated, $subPaneDeactivated. These new delegate methods give developers fine-grained control over pane selectors: You can now add code right when a pane selector controller is initialized, when each subpane is initialized, when a subpane is activated, and when a subpane is deactivated. A frameset delegate (and thus each entity delegate) automatically becomes the delegate for each pane selector initialized by that frameset. Note that these delegate methods receive a reference to the corresponding pane controller, allowing you to access any of their attributes (including their pane id, $paneId).
  8. Notification condition MoConstants.kMoConditionCommand was added. This condition is raised before any command is executed by the command controller.
  9. Notification coalescing option kMoNotificationCoalesceKeepFirst was added to the notification center. This allows notifications to be coalesced, whereby the first notification is sent rather than the last one. To activate this function, add MoConstants.kMoNotificationCoalesceKeepFirst to any of the other coalescing modes.
  10. A new optional MODE attribute was added to the BATCH tag in the schema class. If MODE="0" or if you omit this attribute, a window that is based on a table that has the <BATCH> tag will open in Find mode. If you do not want the window to initially open in Find mode, add MODE="1" to the tag, as in: <BATCH MODE="1">500</BATCH>

Bugfixes in MasterStudio 1.0.3
  1. A bug was fixed, where MasterStudio would not properly set the current line after clicking on a line in a complex grid in $enterable mode.
  2. A bug was fixed, where MasterStudio did not properly redraw foreign fields after entering a value in a joined field and tabbing out of that field.
  3. A bug was fixed, where MasterStudio did not properly fetch values into a foreign field if the user exits the field by activating a command or by leaving Find mode by hitting the Enter key.
  4. A bug was fixed in MoViewExpandingText that caused large dialog messages to extend beyond the bottom of the screen.
  5. A bug was fixed in the pane selector: The cursor is now correctly placed into the first pane.
  6. A bug was fixed where the "default button" (the one with the kBMok attribute) lost its highlighting after a different window had been to the top.
New book errata for MasterStudio 1.0.3

(These are newly discovered errors since version 1.0.2. See Book Errata for the full listing.)
  • Page 81, first line: The reference to chapter "fi" should be chapter "4.3".
  • Page 251, Master-Detail UML Diagram: The aggregate relationship between an entity controller and its grid controller(s) is 1:n. Thus the line between MdEntityController and MdEntityGridControllerGeneric should have an "*" instead of a "1".

Back to General Release Notes

Copyright © 2014 Master Object AB Terms of Use