@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
248 lines • 8.43 kB
JavaScript
import { DInputLabel, DInputText, DLayoutHorizontal, DLayoutSpace, DSelect } from "@wcardinal/wcardinal-ui";
import { EShapeActionExtensionInputType } from "../extension/e-shape-action-extension-input";
var EDialogActionExtension = /** @class */ (function () {
function EDialogActionExtension(extension, dialog, condition, layout) {
this._extension = extension;
this._dialog = dialog;
this._condition = condition;
this._layout = layout;
}
Object.defineProperty(EDialogActionExtension.prototype, "select", {
get: function () {
var result = this._select;
if (result === undefined) {
result = this.newSelect();
this._select = result;
}
return result;
},
enumerable: false,
configurable: true
});
EDialogActionExtension.prototype.newSelect = function () {
var extensionItems = this._extension.items;
if (extensionItems != null && 0 < extensionItems.length) {
var result = new DSelect({
weight: 1,
value: extensionItems[0].type,
menu: {
items: this.newSelectMenuItems(extensionItems)
}
});
return result;
}
return null;
};
EDialogActionExtension.prototype.newSelectMenuItems = function (items) {
var result = [];
for (var i = 0, imax = items.length; i < imax; ++i) {
var item = items[i];
result.push({
value: item.type,
text: {
value: item.label
}
});
}
return result;
};
Object.defineProperty(EDialogActionExtension.prototype, "selectLayout", {
get: function () {
var result = this._selectLayout;
if (result === undefined) {
result = this.newSelectLayout();
if (result != null) {
var layout = this._layout;
var conditionIndex = layout.getChildIndex(this._condition);
if (0 <= conditionIndex) {
layout.addChildAt(result, conditionIndex);
}
else {
layout.addChild(result);
}
}
this._selectLayout = result;
}
return result;
},
enumerable: false,
configurable: true
});
EDialogActionExtension.prototype.newSelectLayout = function () {
var select = this.select;
if (select != null) {
return this.newLabeled("", select);
}
return null;
};
Object.defineProperty(EDialogActionExtension.prototype, "inputs", {
get: function () {
var result = this._inputs;
if (result === undefined) {
result = this.newInputs();
this._inputs = result;
}
return result;
},
enumerable: false,
configurable: true
});
EDialogActionExtension.prototype.newInputs = function () {
var result = [];
var extensionInputs = this._extension.inputs;
if (extensionInputs != null) {
for (var i = 0, imax = extensionInputs.length; i < imax; ++i) {
var input = extensionInputs[i];
switch (input.type) {
case EShapeActionExtensionInputType.TEXT:
var inputText = this.newInputText();
result.push(inputText);
break;
}
}
}
return result;
};
EDialogActionExtension.prototype.newInputText = function () {
var _this = this;
return new DInputText({
weight: 1,
on: {
enter: function () {
_this.ok();
}
}
});
};
EDialogActionExtension.prototype.newLabel = function (label) {
return new DInputLabel({
width: 60,
text: {
value: label
}
});
};
EDialogActionExtension.prototype.newSpace = function () {
return new DLayoutSpace({
width: 60
});
};
EDialogActionExtension.prototype.newLabeled = function (label, input) {
return new DLayoutHorizontal({
width: "padding",
height: "auto",
children: [
label != null ? this.newLabel(label) : this.newSpace(),
input,
this.newSpace()
]
});
};
Object.defineProperty(EDialogActionExtension.prototype, "inputLayouts", {
get: function () {
var result = this._inputLayouts;
if (result === undefined) {
result = this.newInputLayouts();
this._inputLayouts = result;
}
return result;
},
enumerable: false,
configurable: true
});
EDialogActionExtension.prototype.newInputLayouts = function () {
var result = [];
var inputs = this.inputs;
var layout = this._layout;
var extensionInputs = this._extension.inputs;
if (extensionInputs != null) {
var conditionIndex = layout.getChildIndex(this._condition);
for (var i = 0, imax = inputs.length; i < imax; ++i) {
var labeled = this.newLabeled(extensionInputs[i].label, inputs[i]);
result.push(labeled);
if (0 <= conditionIndex) {
layout.addChildAt(labeled, conditionIndex + 1 + i);
}
else {
layout.addChild(labeled);
}
}
}
return result;
};
Object.defineProperty(EDialogActionExtension.prototype, "value", {
get: function () {
return this._extension.toValue(this.select, this._condition.input, this.inputs);
},
set: function (value) {
if (value != null) {
this._extension.fromValue(value, this.select, this._condition.input, this.inputs);
}
},
enumerable: false,
configurable: true
});
EDialogActionExtension.prototype.show = function () {
// Select
var selectLayout = this.selectLayout;
if (selectLayout != null) {
selectLayout.show();
}
// Inputs
var inputLayouts = this.inputLayouts;
if (0 < inputLayouts.length) {
var extension = this._extension;
if (extension.onShow != null) {
extension.onShow(inputLayouts);
}
else {
for (var i = 0, imax = inputLayouts.length; i < imax; ++i) {
inputLayouts[i].show();
}
}
}
};
EDialogActionExtension.prototype.hide = function () {
// Select
var selectLayout = this._selectLayout;
if (selectLayout != null) {
selectLayout.hide();
}
// Inputs
var inputLayouts = this._inputLayouts;
if (inputLayouts != null) {
for (var i = 0, imax = inputLayouts.length; i < imax; ++i) {
inputLayouts[i].hide();
}
}
};
EDialogActionExtension.prototype.reset = function () {
// Select
var select = this._select;
if (select) {
var items = this._extension.items;
if (items != null && 0 < items.length) {
select.value = items[0].type;
}
else {
select.value = null;
}
}
// Inputs
var inputs = this._inputs;
if (inputs) {
var extensionInputs = this._extension.inputs;
if (extensionInputs != null) {
for (var i = 0, imax = inputs.length; i < imax; ++i) {
inputs[i].value = extensionInputs[i].initial || "";
}
}
}
};
EDialogActionExtension.prototype.ok = function () {
this._dialog.ok();
};
return EDialogActionExtension;
}());
export { EDialogActionExtension };
//# sourceMappingURL=e-dialog-action-extension.js.map