Compile Time Changes

Support Changes

Updated AO specific classes relating to Accessory system changes. Removed the updateSupport() method from Worksurface in favor of the new updateAccessory() method on AccessoryEnv.

Removed the includeNeighbors parameter from getAllSupports(). This method should only give supports that this surface owns or manages. Neighbor supports are gathered in a seperate call by the AccessoryGenBehavior via those surfaces getAllSupports() calls.

The following classes have been deprecated. AOWksfSelectSupportVessel, AOWksfSuppPosSelectVessel, AOWksfSelectSupportForRemovalVessel

New SIF abstract

We have moved all of the SIF code and rs over to cm.abstract.sif which is shipped by cm.abstract extension.

The following classes / functions have a new name:

Old: public class AOSifExport extends TextExporter;
New: public class ASifExport extends TextExporter; 

Old: public str aoSifExportEOL();
New: public str aSifExportEOL();

public Image aoIcon(str image);
public Image absSifIcon(str image);

The following SIF clases have been moved to cm.abstract.sif with a different class hierarchy:

Old: public class CustomSIFExport extends AOSifExport : inherit constructors;
New: public class CustomSIFExport extends ASifExport : inherit constructors;

Old: public class GenSifExport extends AOSifExport;
New: public class GenSifExport extends ASifExport;

The following SIF clases / functions have been moved to cm.abstract.sif:

public <str, str>[] getDefaultSIF();
public void initDefaultSIFSettings();
public void initDefaultSIFSettings();
public str removeUnits(Object value, str original);
public <str, str>[] getColumnToIDs();
public bool checkForValidCodes(<str, str>[] columnToID);
public bool checkAndAppendSIF(ArticleGridWindow gw, DropDownMenu temp, PartColumn column);

public TextExporter customSifExport();

public class ExportEditSubWindow extends SubWindow;

public const str sifUserSettingKey;
public const str sifLocalSettings;
public const str partNumberLabel;
public const str optionCodeLabel;
public const str optionUpchargeLabel;
public const str articleCodeLabel;
public const str optionKeyLabel;
public const str descriptionColumnLabel;
public const str optionDescriptionLabel;
public const str optionDescription2Label;
public const str optionListPriceLabel;

public class SIFControlRow extends ControlRow;

public str[] dexImportFilter();
public str->str colKeyToSIFCode();
public SIFSettingsDialog getSIFSettingsDialog();
public void makeSIFSettingsDialog(Window win);
public class SIFSettingsDialog extends DialogWindow;

public SingleCodeDialog getSingleCodeDialog();
public void makeSingleCodeDialog(Window parent, str column, pointI origin=(-1, -1), str label="Dialog");
public class SingleCodeDialog extends DialogWindow;

Runtime/Behavior Changes

Office Snapper Manager

OfficeSnapperManagerRedView3D now will call getDialog().updateCoreProperties() when the selection is changed in the view.

Made fixes/improvements to the dialog and OfficeSnapperManager in regards to its support for G2 quick properties.

Panel Skin Animations

Updated how last values are handled for PanelSkinInsertAnimation.

Fix a graphical issue with the PanelSkinArrowVessel where it wasn't properly rotated


beginSideStretch(Connector c) now calls pickedUp() after stretchDisconnectInGroup().

New SIF abstract

If you have used SIF rs in your extension and they are now missing, you have the following options:

  1. Move all SIF functionality to its own pacakge, then specify next rs package in your extension's init.
    putNextRsPkg("custom.yourExtension.sif", "cm.abstract.sif")
  2. Explicitly call getRs specifying the cm.abstract.sif package.
    Old: $sifFilesFilter;
    New: getRs("sifFilesFilter", "cm.abstract.sif");

Lazy startup of and removal of implicit part columns registration will no longer always startup for users that do not require it, as part of core package dependency cleanup and performance optimization. Previously, starting cm.abstract.dataSymbol will always result in the startup of

This may result in some PartColumns from cm.abstract.part not being registered automatically at all times as before, manifesting in the form of a crash for extensions that do not directly depend on

Suggested fix is to explicitly declare and register the part columns you need in your custom extensions by calling registerPartColumn(). You may get warnings if the column have already been registered by other extensions, but it should able to be ignored safely.


AOComponent now has it's propdefs set as cached=true.

Fixed a bug where you couldn't set an AOComponent's parent to null via the propdef.

Typical Blocks

Fixed a bug where spanned stack frames could cause panels to go below the floor due to snapping lower then expected.