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.
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.
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().
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.
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.