mj-context-menu
Version:
A generic context menu
63 lines • 1.66 kB
JavaScript
import * as MenuUtil from './menu_util.js';
export class Variable {
static fromJson(_factory, { name, getter, setter }, pool) {
const variable = new this(name, getter, setter);
pool.insert(variable);
}
constructor(_name, getter, setter) {
this._name = _name;
this.getter = getter;
this.setter = setter;
this.items = [];
}
get name() {
return this._name;
}
getValue(node) {
try {
return this.getter(node);
}
catch (e) {
MenuUtil.error(e, 'Command of variable ' + this.name + ' failed.');
return null;
}
}
setValue(value, node) {
try {
this.setter(value, node);
}
catch (e) {
MenuUtil.error(e, 'Command of variable ' + this.name + ' failed.');
}
this.update();
}
register(item) {
if (this.items.indexOf(item) === -1) {
this.items.push(item);
}
}
unregister(item) {
const index = this.items.indexOf(item);
if (index !== -1) {
this.items.splice(index, 1);
}
}
update() {
this.items.forEach((x) => x.update());
}
registerCallback(func) {
this.items.forEach((x) => x.registerCallback(func));
}
unregisterCallback(func) {
this.items.forEach((x) => x.unregisterCallback(func));
}
toJson() {
return {
type: 'variable',
name: this.name,
getter: this.getter.toString(),
setter: this.setter.toString()
};
}
}
//# sourceMappingURL=variable.js.map