@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
149 lines • 5.27 kB
JavaScript
import { EShapeButtonLayerButtonValue } from "./e-shape-button-layer-button-value";
var EShapeButtonLayerButtonValueContainer = /** @class */ (function () {
function EShapeButtonLayerButtonValueContainer(onChange) {
this._values = [];
this._sizeX = 1;
this._margin = 2;
this._onChange = onChange;
}
Object.defineProperty(EShapeButtonLayerButtonValueContainer.prototype, "values", {
get: function () {
return this._values;
},
enumerable: false,
configurable: true
});
Object.defineProperty(EShapeButtonLayerButtonValueContainer.prototype, "margin", {
get: function () {
return this._margin;
},
set: function (margin) {
if (this._margin !== margin) {
this._margin = margin;
this._onChange();
}
},
enumerable: false,
configurable: true
});
EShapeButtonLayerButtonValueContainer.prototype.add = function (value, at) {
if (at != null) {
this._values.splice(at, 0, value);
}
else {
this._values.push(value);
}
this._onChange();
};
EShapeButtonLayerButtonValueContainer.prototype.remove = function (index) {
var values = this._values;
if (0 <= index && index < values.length) {
var result = values.splice(index, 1)[0];
this._onChange();
return result;
}
return null;
};
EShapeButtonLayerButtonValueContainer.prototype.indexOf = function (target) {
var values = this._values;
// Instance-based matching
for (var i = 0, imax = values.length; i < imax; ++i) {
var value = values[i];
if (value === target) {
return i;
}
}
// Data-based matching
for (var i = 0, imax = values.length; i < imax; ++i) {
var value = values[i];
if (value.isEquals(target)) {
return i;
}
}
return -1;
};
EShapeButtonLayerButtonValueContainer.prototype.get = function (index) {
var result = this._values[index];
if (result != null) {
return result;
}
return null;
};
EShapeButtonLayerButtonValueContainer.prototype.set = function (index, value) {
this._values[index] = value;
this._onChange();
};
EShapeButtonLayerButtonValueContainer.prototype.swap = function (indexA, indexB) {
var values = this._values;
var tmp = values[indexB];
values[indexB] = values[indexA];
values[indexA] = tmp;
this._onChange();
};
EShapeButtonLayerButtonValueContainer.prototype.size = function () {
return this._values.length;
};
EShapeButtonLayerButtonValueContainer.prototype.copy = function (source) {
// Values
var values = this._values;
var sourceValues = source._values;
var sourceValuesLength = sourceValues.length;
for (var i = 0; i < sourceValuesLength; ++i) {
values[i] = sourceValues[i];
}
if (values.length !== sourceValuesLength) {
values.length = sourceValuesLength;
}
//
this._sizeX = source._sizeX;
this._onChange();
return this;
};
EShapeButtonLayerButtonValueContainer.prototype.serialize = function (manager) {
var serialized = "";
var delimiter = "[";
var values = this._values;
for (var i = 0, imax = values.length; i < imax; ++i) {
serialized += delimiter + values[i].serizlize(manager);
delimiter = ",";
}
serialized += delimiter + this._margin + "]";
return manager.addResource(serialized);
};
EShapeButtonLayerButtonValueContainer.prototype.deserialize = function (target, manager) {
var resources = manager.resources;
if (0 <= target && target < resources.length) {
var parsed = manager.getExtension(target);
if (parsed == null) {
parsed = JSON.parse(resources[target]);
manager.setExtension(target, parsed);
}
var isChanged = false;
var values = this._values;
if (0 < values.length) {
values.length = 0;
isChanged = true;
}
for (var i = 0, imax = parsed.length - 1; i < imax; ++i) {
var value = EShapeButtonLayerButtonValue.deserialize(parsed[i], manager);
if (value != null) {
values.push(value);
}
}
var margin = parsed[parsed.length - 1];
if (this._margin !== margin) {
this._margin = margin;
isChanged = true;
}
if (0 < values.length) {
isChanged = true;
}
if (isChanged) {
this._onChange();
}
}
};
return EShapeButtonLayerButtonValueContainer;
}());
export { EShapeButtonLayerButtonValueContainer };
//# sourceMappingURL=e-shape-button-layer-button-value-container.js.map