(function () { var ns = $.namespace("pskl.selection"); ns.SelectionManager = function (framesheet, overlayFrame) { this.framesheet = framesheet; this.overlayFrame = overlayFrame; this.currentSelection = null; $.subscribe(Events.SELECTION_CREATED, $.proxy(this.onSelectionCreated_, this)); $.subscribe(Events.SELECTION_DISMISSED, $.proxy(this.onSelectionDismissed_, this)); $.subscribe(Events.SELECTION_MOVE_REQUEST, $.proxy(this.onSelectionMoved_, this)); $.subscribe(Events.PASTE, $.proxy(this.onPaste_, this)); $.subscribe(Events.COPY, $.proxy(this.onCopy_, this)); $.subscribe(Events.CUT, $.proxy(this.onCut_, this)); $.subscribe(Events.TOOL_SELECTED, $.proxy(this.onToolSelected_, this)); }; /** * @private */ ns.SelectionManager.prototype.cleanSelection_ = function(selection) { if(this.currentSelection) { this.currentSelection.reset(); } this.overlayFrame.clear(); }; /** * @private */ ns.SelectionManager.prototype.onToolSelected_ = function(evt, tool) { var isSelectionTool = tool instanceof pskl.drawingtools.BaseSelect; if(!isSelectionTool) { this.cleanSelection_(); } }; /** * @private */ ns.SelectionManager.prototype.onSelectionDismissed_ = function(evt) { this.cleanSelection_(); }; /** * @private */ ns.SelectionManager.prototype.onCut_ = function(evt) { if(this.currentSelection) { // Put cut target into the selection: this.currentSelection.fillSelectionFromFrame(this.framesheet.getCurrentFrame()); var pixels = this.currentSelection.pixels; var currentFrame = this.framesheet.getCurrentFrame(); for(var i=0, l=pixels.length; i