Overview

Query Dialog Sidebar and Model Import

The product-part Query implementation now supplies its import support through a specialized QueryPartImportTabBehavior. This keeps part file import and option drag/drop behavior while integrating it with the new Query dialog sidebar.

Part Dimensions and Special Creation

Physical dimensions, generic codes, and XML export hooks are being moved toward the common part APIs so non-data-symbol parts can participate in the same SIF and OFDA workflows. Product-part creators now share the option-processing implementation used for override and addition specials.

Compile Time Changes

Query Dialog Sidebar and Model Import

The part import window has been renamed and now derives from the tab-window API:

Old: public class ProdPartQueryImportWindow extends QueryImportWindow
New: public class QueryProdPartImportTabWindow extends QueryPartImportTabWindow

Update references and subclasses to use QueryProdPartImportTabWindow.

Part import customization has moved from ProdPartQueryDialogBehavior to the new QueryProdPartImportTabBehavior:

Added: public QueryProdPartImportTabBehavior prodPartImportTabBehavior()
Added: public class QueryProdPartImportTabBehavior extends QueryPartImportTabBehavior

Removed: public SubWindow initImportWindow(QueryDialog dialog, Url url=null) // from ProdPartQueryDialogBehavior
Added: public QueryPartImportTabBehavior queryPartImportTabBehavior() //  to ProdPartQueryDialogBehavior

Overrides of getImporterEnv(), beginGridDragAnimation(), or getValidDragRanges() must move to a QueryProdPartImportTabBehavior subclass. Return that behavior from an overridden ProdPartQueryDialogBehavior.queryPartImportTabBehavior().

Part Dimensions and Special Creation

The following physical-measurement methods are now defined on AbsPart:

Added: extend public double volume()
Added: extend public double depth()
Added: extend public double height()
Added: extend public double width()

These methods return meters and are distinct from the renamed Part.maxDepth() hierarchy method documented under cm.core.part.

ProdPartCreator has a new optional constructor argument and extension points:

Old: public constructor(PartData data, PartOption[] options=null)
New: public constructor(PartData data, PartOption[] options=null,
                        customizationType optionHandling=customizationType.none)

Added: public customizationType optionHandling
Added: extend public void processOverrideOptions(ProdPart part)
Added: extend public void processAdditionOptions(ProdPart part)
Added: extend public CustomOptionSpecial createCustomOptionSpecial(Part part, PartOptionItem opt)
Added: public bool containsAnySpecials(PropObj s)

ProdPartQueryDialogBehavior.queryPartImportTabBehavior() now requires a QueryDialog argument, matching the corresponding cm.core.part.query API.

Runtime/Behavior Changes

Part Dimensions and Special Creation

ProdPartCreator now copies the supplied option sequence. Later changes to the caller's original sequence no longer change the creator's options.

ProdPart.internal_generateConfiguraSifRows() now includes weight, volume, width, depth, height, source/package code, and generic code. A stored or adjusted generic code is emitted as CG; TAG2 is used for CG only when no generic code is available.

ProdPartAddition and ProdPartOverride now select their behavior through ProdPartCreator.optionHandling. Existing streamed instances that lack this field are migrated to addition or override respectively when loaded.