From 806974142d44afdd23534bf2d18eff0a8e701e0c Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Fri, 8 Jun 2012 16:59:59 -0700 Subject: rewrite: currentSelectedContainer -> domContainer Fixed the currentSelectedContainer by removing bindings and using property change on the current document added the red outline back. Signed-off-by: Valerio Virgillito --- js/controllers/elements/element-controller.js | 4 +-- js/controllers/selection-controller.js | 38 +++++++++++---------------- 2 files changed, 18 insertions(+), 24 deletions(-) (limited to 'js/controllers') diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js index 4a02e9a3..e40a646a 100755 --- a/js/controllers/elements/element-controller.js +++ b/js/controllers/elements/element-controller.js @@ -19,13 +19,13 @@ exports.ElementController = Montage.create(Component, { var selectedLayerIndex = this.application.ninja.timeline.getLayerIndexByID(this.application.ninja.timeline.currentLayerSelected.layerData.layerID); if(selectedLayerIndex === 0) { - this.application.ninja.currentSelectedContainer.appendChild(el); + this.application.ninja.currentDocument.model.domContainer.appendChild(el); } else { var element = this.application.ninja.timeline.arrLayers[selectedLayerIndex].layerData.elementsList[0]; element.parentNode.insertBefore(el, element.nextSibling); } } else { - this.application.ninja.currentSelectedContainer.appendChild(el); + this.application.ninja.currentDocument.model.domContainer.appendChild(el); } if(styles) { diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js index 4bca0755..9ae1cfc9 100755 --- a/js/controllers/selection-controller.js +++ b/js/controllers/selection-controller.js @@ -35,7 +35,7 @@ exports.SelectionController = Montage.create(Component, { if(this._currentDocument && this._currentDocument.currentView === "design") { this._currentDocument.model._selection = this.application.ninja.selectedElements; - this._currentDocument.model.selectionContainer = this.application.ninja._currentSelectedContainer; +// this._currentDocument.model.selectionContainer = this.application.ninja._currentSelectedContainer; } this._currentDocument = value; @@ -65,7 +65,7 @@ exports.SelectionController = Montage.create(Component, { this._selectedElements = value; this.application.ninja.selectedElements = this._selectedElements; - this.application.ninja._currentSelectedContainer = this._selectionContainer = this.application.ninja.currentDocument.model.documentRoot; +// this.application.ninja._currentSelectedContainer = this._selectionContainer = this.application.ninja.currentDocument.model.documentRoot; if(this._selectedElements.length === 0) { this.executeSelectElement(); @@ -78,30 +78,24 @@ exports.SelectionController = Montage.create(Component, { } }, - // Bound property to the ninja currentSelectedContainer - _selectionContainer: { - value: null - }, - - selectionContainer: { - get: function() { - return this._selectionContainer - }, - set: function(value) { - if(this._selectionContainer && this._selectionContainer !== value) { - this.executeSelectElement(); - } - - this._selectionContainer = value; - } - }, - deserializedFromTemplate: { value: function() { this.eventManager.addEventListener("elementAdded", this, false); this.eventManager.addEventListener("elementsRemoved", this, false); this.eventManager.addEventListener("elementReplaced", this, false); this.eventManager.addEventListener("selectAll", this, false); + + this.addPropertyChangeListener("currentDocument.model.domContainer", this); + } + }, + + handleChange: { + value: function() { + if(this.currentDocument && this.currentDocument.model.getProperty("domContainer")) { + if(this.currentDocument.model.getProperty("domContainer") !== null) { + this.executeSelectElement(); + } + } } }, @@ -175,12 +169,12 @@ exports.SelectionController = Montage.create(Component, { if(this.isDocument) return; // If the stage is already selected do nothing. this.executeSelectElement(); // Else execute selection with no element } else { - if(element.parentNode.uuid === this.selectionContainer.uuid) { + if(element.parentNode.uuid === this.currentDocument.model.domContainer.uuid) { this.executeSelectElement(element); } else { var outerElement = element.parentNode; - while(outerElement.parentNode && outerElement.parentNode.uuid !== this.selectionContainer.uuid) { + while(outerElement.parentNode && outerElement.parentNode.uuid !== this.currentDocument.model.domContainer.uuid) { // If element is higher up than current container then return if(outerElement.nodeName === "BODY") return; // else keep going up the chain -- cgit v1.2.3