mirror of
https://github.com/tengge1/ShadowEditor.git
synced 2026-01-25 15:08:11 +00:00
109 lines
3.6 KiB
JavaScript
109 lines
3.6 KiB
JavaScript
import BaseEvent from '../BaseEvent';
|
|
import UI from '../../ui/UI';
|
|
import SetScriptValueCommand from '../../command/SetScriptValueCommand';
|
|
import RemoveScriptCommand from '../../command/RemoveScriptCommand';
|
|
|
|
/**
|
|
* 脚本面板事件
|
|
* @author tengge / https://github.com/tengge1
|
|
* @param {*} app
|
|
*/
|
|
function ScriptPanelEvent(app) {
|
|
BaseEvent.call(this, app);
|
|
}
|
|
|
|
ScriptPanelEvent.prototype = Object.create(BaseEvent.prototype);
|
|
ScriptPanelEvent.prototype.constructor = ScriptPanelEvent;
|
|
|
|
ScriptPanelEvent.prototype.start = function () {
|
|
this.app.on(`objectSelected.${this.id}`, this.onObjectSelected.bind(this));
|
|
this.app.on(`scriptAdded.${this.id}`, this.update.bind(this));
|
|
this.app.on(`scriptRemoved.${this.id}`, this.update.bind(this));
|
|
this.app.on(`scriptChanged.${this.id}`, this.update.bind(this));
|
|
};
|
|
|
|
ScriptPanelEvent.prototype.stop = function () {
|
|
this.app.on(`objectSelected.${this.id}`, null);
|
|
this.app.on(`scriptAdded.${this.id}`, null);
|
|
this.app.on(`scriptRemoved.${this.id}`, null);
|
|
this.app.on(`scriptChanged.${this.id}`, null);
|
|
};
|
|
|
|
ScriptPanelEvent.prototype.onObjectSelected = function (object) {
|
|
var container = UI.get('scriptPanel');
|
|
|
|
if (object !== null) {
|
|
container.dom.style.display = 'block';
|
|
this.update();
|
|
} else {
|
|
container.dom.style.display = 'none';
|
|
}
|
|
};
|
|
|
|
ScriptPanelEvent.prototype.update = function () {
|
|
var scriptsContainer = UI.get('scriptsContainer');
|
|
var editor = this.app.editor;
|
|
var _this = this;
|
|
|
|
scriptsContainer.dom.innerHTML = '';
|
|
scriptsContainer.dom.style.display = 'none';
|
|
|
|
var object = editor.selected;
|
|
if (object === null) {
|
|
return;
|
|
}
|
|
|
|
var scripts = editor.scripts[object.uuid];
|
|
|
|
if (scripts !== undefined) {
|
|
scriptsContainer.dom.style.display = 'block';
|
|
|
|
for (var i = 0; i < scripts.length; i++) {
|
|
(function (object, script) {
|
|
var data = {
|
|
xtype: 'container',
|
|
parent: scriptsContainer.dom,
|
|
children: [{
|
|
xtype: 'input',
|
|
value: script.name,
|
|
style: {
|
|
width: '130px',
|
|
fontSize: '12px'
|
|
},
|
|
onChange: function () {
|
|
editor.execute(new SetScriptValueCommand(editor.selected, script, 'name', this.getValue()));
|
|
}
|
|
}, {
|
|
xtype: 'button',
|
|
text: '编辑',
|
|
style: {
|
|
marginLeft: '4px'
|
|
},
|
|
onClick: function () {
|
|
_this.app.call('editScript', _this, object, script);
|
|
}
|
|
}, {
|
|
xtype: 'button',
|
|
text: '删除',
|
|
style: {
|
|
marginLeft: '4px'
|
|
},
|
|
onClick: function () {
|
|
UI.confirm('询问', '确定要删除吗?', function (event, btn) {
|
|
if (btn === 'ok') {
|
|
editor.execute(new RemoveScriptCommand(editor.selected, script));
|
|
}
|
|
});
|
|
}
|
|
}, {
|
|
xtype: 'br'
|
|
}]
|
|
};
|
|
|
|
UI.create(data).render();
|
|
})(object, scripts[i])
|
|
}
|
|
}
|
|
};
|
|
|
|
export default ScriptPanelEvent; |