mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
72 lines
2.6 KiB
JavaScript
72 lines
2.6 KiB
JavaScript
(function () {
|
|
var ns = $.namespace('pskl.controller');
|
|
|
|
ns.LayersListController = function (piskelController) {
|
|
this.piskelController = piskelController;
|
|
};
|
|
|
|
ns.LayersListController.prototype.init = function () {
|
|
this.layerItemTemplate_ = pskl.utils.Template.get('layer-item-template');
|
|
this.rootEl = document.querySelectorAll('.layers-list-container')[0];
|
|
this.layersListEl = document.querySelectorAll('.layers-list')[0];
|
|
|
|
this.rootEl.addEventListener('click', this.onClick_.bind(this));
|
|
|
|
$.subscribe(Events.PISKEL_RESET, this.renderLayerList_.bind(this));
|
|
|
|
this.renderLayerList_();
|
|
};
|
|
|
|
ns.LayersListController.prototype.renderLayerList_ = function () {
|
|
this.layersListEl.innerHTML = '';
|
|
var layers = this.piskelController.getLayers();
|
|
layers.forEach(this.addLayerItem.bind(this));
|
|
};
|
|
|
|
ns.LayersListController.prototype.addLayerItem = function (layer, index) {
|
|
var isSelected = this.piskelController.getCurrentLayer() === layer;
|
|
var layerItemHtml = pskl.utils.Template.replace(this.layerItemTemplate_, {
|
|
'layername' : layer.getName(),
|
|
'layerindex' : index,
|
|
'isselected:current-layer-item' : isSelected
|
|
});
|
|
var layerItem = pskl.utils.Template.createFromHTML(layerItemHtml);
|
|
this.layersListEl.insertBefore(layerItem, this.layersListEl.firstChild);
|
|
};
|
|
|
|
ns.LayersListController.prototype.onClick_ = function (evt) {
|
|
var el = evt.target || evt.srcElement;
|
|
var index;
|
|
if (el.classList.contains('button')) {
|
|
this.onButtonClick_(el);
|
|
} else if (el.classList.contains('layer-item')) {
|
|
index = el.dataset.layerIndex;
|
|
this.piskelController.setCurrentLayerIndex(parseInt(index, 10));
|
|
} else if (el.classList.contains('edit-icon')) {
|
|
index = el.parentNode.dataset.layerIndex;
|
|
this.renameLayerAt_(index);
|
|
}
|
|
};
|
|
|
|
ns.LayersListController.prototype.renameLayerAt_ = function (index) {
|
|
var layer = this.piskelController.getLayerAt(index);
|
|
var name = window.prompt("Please enter the layer name", layer.getName());
|
|
if (name) {
|
|
this.piskelController.renameLayerAt(index, name);
|
|
this.renderLayerList_();
|
|
}
|
|
};
|
|
|
|
ns.LayersListController.prototype.onButtonClick_ = function (button) {
|
|
var action = button.getAttribute('data-action');
|
|
if (action == 'up') {
|
|
this.piskelController.moveLayerUp();
|
|
} else if (action == 'down') {
|
|
this.piskelController.moveLayerDown();
|
|
} else if (action == 'add') {
|
|
this.piskelController.createLayer();
|
|
} else if (action == 'delete') {
|
|
this.piskelController.removeCurrentLayer();
|
|
}
|
|
};
|
|
})(); |