package com.intellij.flex.uiDesigner.mxml;
import com.intellij.flex.uiDesigner.io.ByteRange;
import java.util.ArrayList;
import java.util.List;
class AddItems extends OverrideBase {
private final List<DynamicObjectContext> itemDeferredInstances;
private boolean autoDestruction;
AddItems(ByteRange dataRange, DynamicObjectContext itemDeferredInstance, boolean autoDestruction) {
super(dataRange);
this.autoDestruction = autoDestruction;
itemDeferredInstances = new ArrayList<>();
addItemDeferredInstance(itemDeferredInstance);
}
@Override
void write(BaseWriter writer, StateWriter stateWriter) {
writer.objectHeader(stateWriter.ADD_ITEMS);
writer.getBlockOut().append(dataRange);
if (autoDestruction) {
writer.classOrPropertyName("destructionPolicy");
writer.stringReference("auto");
writer.property(stateWriter.ITEMS_FACTORY).typeMarker(AmfExtendedTypes.TRANSIENT_ARRAY_OF_DEFERRED_INSTANCE_FROM_BYTES);
}
else {
writer.property(stateWriter.ITEMS_FACTORY).typeMarker(AmfExtendedTypes.PERMANENT_ARRAY_OF_DEFERRED_INSTANCE_FROM_BYTES);
}
writer.getOut().write(itemDeferredInstances.size());
for (DynamicObjectContext itemDeferredInstance : itemDeferredInstances) {
stateWriter.writeDeferredInstance(itemDeferredInstance);
}
writer.endObject();
}
public void addItemDeferredInstance(DynamicObjectContext itemDeferredInstance) {
itemDeferredInstance.overrideUserCount++;
itemDeferredInstances.add(itemDeferredInstance);
}
public List<DynamicObjectContext> getItemDeferredInstances() {
return itemDeferredInstances;
}
public boolean isAutoDestruction() {
return autoDestruction;
}
public void setAutoDestruction(boolean autoDestruction) {
this.autoDestruction = autoDestruction;
}
}