General Interface is an open source project hosted by the Dojo Foundation

Migration Steps to Migrate from 3.2 or 3.3 to 3.4

The following steps are required for updating your 3.2 and 3.3 project to 3.4:

  1. Update the project for changes to class loading.
  2. Review Changes in Behavior in 3.4 to see if your applications are affected by changes to General Interface 3.4.
  3. If your application creates a LayoutGrid - Side/Side component programmatically using the constructor instead of being deserialized from an XML file, call the setCols() method and pass an asterisk as the parameter to match the 3.3 behavior: setCols("*"). Otherwise, an extra row will be added to the layout. Note that the setDimensionArray() method has been deprecated in 3.4 and is replaced with the setCols() and setRows() methods.
  4. Optional Rewrite any JavaScript code that uses deprecated APIs. See Deprecated APIs in General Interface Release Notes.
  5. Optional Replace any Block components that use an iframe with the new IFrame component.

Class Loading

There are two changes to class loading in 3.4:

  • The At Lt Init and At Full Init Auto Load options are no longer supported. If your project uses these class loading options, see Auto Load Options.
  • The jsxlt parameter is no longer supported. If your deployed projects use jsxlt="false", see jsxlt Parameter. If your project uses jsxlt="true", no changes are needed.

Auto Load Options

The Auto Load options for JavaScript files, At Lt Init and At Full Init, are no longer supported. If you've used these settings in your project, you need to reset the JavaScript file to Auto Load (At Init).

To change the Auto Load setting to At Init, complete these steps:

  1. Right-click the JavaScript file in the Project Files palette.
  2. Choose Auto Load from the context menu. The file name now displays in a bold font in the Project Files palette.

jsxlt Parameter

The jsxlt launch parameter is no longer available as of 3.4. All applications now load in the jsxlt="true" mode. If you deployed your project using jsxlt="false", use jsx3.require() to explicitly load classes, so that the project is compatible with dynamic class loading. See jsx3.require() Method.

Changes in Behavior in 3.4

To see if any of these changes affect your applications, run your applications in General Interface 3.4 and check the following behaviors. Then modify your applications as needed.

  • Menu
    • Menu positioning and cascading may be different. See GI-63 in General Interface Release Notes.
    • Long menus now render with auto-scroll arrows instead of with scroll bars.
  • TabbedPane
    • Provides an automatic right and left scrolling mechanism for navigating through tabs that are hidden when they exceed the viewable space.
  • Tree
    • Support for range selection using Shift+click and multiple selection using Ctrl+click.
    • Support for drag-and-drop of multiple records.
    • Drag-and-drop insertion between nodes and insertion as last child of node.
    • Context menu can operate on multiple rows.
  • Dialog
    • When deserialized a dialog box top-left position could be at a negative position if the min-width and min-height were larger than the client window and no top-left positions were defined. Left and top are now never less than zero. However, since the resize control is in the bottom right, call constrainPosition(true) if there is a chance that the dialog is larger than its parent.
  • Form elements
    • All form elements now inherit font color from an ancestor block.
  • setValue() and Matrix
    • If a Matrix is a single selection and the passed value is an array with more than one element, an illegal argument exception is now thrown.
  • jsx3.app.Model.getChild() returns null instead of undefined. Unless specifically documented, application should be careful about checking against undefined or null value returned by General Interface functions. Developer should check against known value.
    For example, instead of this:
    if (objJSX.getChild('block') == null)

    or

    if ( typeof(objJSX.getChild('block')) == 'undefined' )

    Do this instead:

    if ( !(objJSX.getChild('block') instanceof jsx3.app.Model) )

    or

    if ( ! (objJSX.getChild('block') )

    For more information on new features, changes in functionality, and known and closed issues, see General Interface Release Notes.

Contents

Searching General Interface Docs

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.