aboutsummaryrefslogtreecommitdiff
path: root/js/controllers
diff options
context:
space:
mode:
authorValerio Virgillito2012-04-04 11:11:58 -0700
committerValerio Virgillito2012-04-04 11:11:58 -0700
commita11ef2eed7049835c8bdfa50a2b893632c46eaa0 (patch)
treefcbb067044d339daa49622537e934bf3a309db96 /js/controllers
parentc6de22bf42be90b403491b5f87b1818d9020310c (diff)
downloadninja-a11ef2eed7049835c8bdfa50a2b893632c46eaa0.tar.gz
Squashed commit of Preparing for the montage undo-manager: Architecture changes
Reworked the add and remove elements into 1 function which can take 1 or more elements. Removed the _element from the selection array Many other changes related to those 2 changes Undo/Redo shortcuts are now using montage undo/redo manager. Signed-off-by: Valerio Virgillito <valerio@motorola.com>
Diffstat (limited to 'js/controllers')
-rwxr-xr-xjs/controllers/elements/element-controller.js15
-rwxr-xr-xjs/controllers/elements/shapes-controller.js5
-rw-r--r--js/controllers/presets-controller.js8
-rwxr-xr-xjs/controllers/selection-controller.js147
4 files changed, 52 insertions, 123 deletions
<
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js
index b35251ad..efb33292 100755
--- a/js/controllers/elements/element-controller.js
+++ b/js/controllers/elements/element-controller.js
@@ -5,22 +5,27 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
5</copyright> */ 5</copyright> */
6 6
7var Montage = require("montage/core/core").Montage, 7var Montage = require("montage/core/core").Montage,
8 NJComponent = require("js/lib/nj-base").NJComponent; 8 Component = require("montage/ui/component").Component;
9 9
10var ElementController = exports.ElementController = Montage.create(NJComponent, { 10exports.ElementController = Montage.create(Component, {
11 11
12 addElement: { 12 addElement: {
13 value: function(el, styles) { 13 value: function(el, styles) {
14 this.application.ninja.currentDocument.documentRoot.appendChild(el); 14 this.application.ninja.currentDocument.documentRoot.appendChild(el);
15 // Nested elements - 15 // Nested elements - TODO make sure the CSS is correct before nesting elements
16 // TODO make sure the CSS is correct before nesting elements
17 // this.application.ninja.currentSelectedContainer.appendChild(el); 16 // this.application.ninja.currentSelectedContainer.appendChild(el);
18 this.application.ninja.stylesController.setElementStyles(el, styles); 17 if(styles) {
18 this.application.ninja.stylesController.setElementStyles(el, styles);
19 }
19 } 20 }
20 }, 21 },
21 22
23 // Remove the element from the DOM and clear the GLWord.
22 removeElement: { 24 removeElement: {
23 value: function(el) { 25 value: function(el) {
26 if(el.elementModel && el.elementModel.shapeModel && el.elementModel.shapeModel.GLWorld) {
27 el.elementModel.shapeModel.GLWorld.clearTree();
28 }
24 el.parentNode.removeChild(el); 29 el.parentNode.removeChild(el);
25 } 30 }
26 }, 31 },
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js
index ef453bea..c9164e3e 100755
--- a/js/controllers/elements/shapes-controller.js
+++ b/js/controllers/elements/shapes-controller.js
@@ -72,8 +72,9 @@ exports.ShapesController = Montage.create(CanvasController, {
72 canvas.setAttribute("data-RDGE-id", njModule.NJUtils.generateRandom()); 72 canvas.setAttribute("data-RDGE-id", njModule.NJUtils.generateRandom());
73 canvas.width = el.width; 73 canvas.width = el.width;
74 canvas.height = el.height; 74 canvas.height = el.height;
75 this.application.ninja.elementMediator.replaceElement(el, canvas); 75 canvas.elementModel = el.elementModel;
76 NJevent("elementDeleted", el); 76 this.application.ninja.currentDocument.documentRoot.replaceChild(canvas, el);
77 NJevent("elementsRemoved", el);
77 el = canvas; 78 el = canvas;
78 this.toggleWebGlMode(el, value); 79 this.toggleWebGlMode(el, value);
79 el.elementModel.shapeModel.GLWorld.render(); 80 el.elementModel.shapeModel.GLWorld.render();
diff --git a/js/controllers/presets-controller.js b/js/controllers/presets-controller.js
index 7152ba93..0467f73c 100644
--- a/js/controllers/presets-controller.js
+++ b/js/controllers/presets-controller.js
@@ -59,16 +59,14 @@ exports.PresetsController = Montage.create(Component, {
59 }, this); 59 }, this);
60 60
61 selection.forEach(function(element) { 61 selection.forEach(function(element) {
62 var el = element._element;
63
64 if(useTransition) { 62 if(useTransition) {
65 this.addTransition(el); 63 this.addTransition(element);
66 } 64 }
67 65
68 el.classList.add(selectorBase); 66 element.classList.add(selectorBase);
69 67
70 //// Keep track of elements with presets and don't add duplicates 68 //// Keep track of elements with presets and don't add duplicates
71 this.setCachedPreset(el, presetData.id, rules); 69 this.setCachedPreset(element, presetData.id, rules);
72 70
73 }, this); 71 }, this);
74 72
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js
index 53cca029..dbb3f30d 100755
--- a/js/controllers/selection-controller.js
+++ b/js/controllers/selection-controller.js
@@ -6,8 +6,7 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
6 6
7 7
8var Montage = require("montage/core/core").Montage, 8var Montage = require("montage/core/core").Montage,
9 Component = require("montage/ui/component").Component, 9 Component = require("montage/ui/component").Component;
10 NJUtils = require("js/lib/NJUtils").NJUtils;
11 10
12exports.SelectionController = Montage.create(Component, { 11exports.SelectionController = Montage.create(Component, {
13 12
@@ -45,13 +44,10 @@ exports.SelectionController = Montage.create(Component, {
45 value: function() { 44 value: function() {
46 this.eventManager.addEventListener("openDocument", this, false); 45 this.eventManager.addEventListener("openDocument", this, false);
47 this.eventManager.addEventListener("elementAdded", this, false); 46 this.eventManager.addEventListener("elementAdded", this, false);
48 this.eventManager.addEventListener("elementDeleted", this, false); 47 this.eventManager.addEventListener("elementsRemoved", this, false);
49 this.eventManager.addEventListener("selectAll", this, false); 48 this.eventManager.addEventListener("selectAll", this, false);
50 this.eventManager.addEventListener("deleteSelection", this, false);
51 this.eventManager.addEventListener("switchDocument", this, false); 49 this.eventManager.addEventListener("switchDocument", this, false);
52 this.eventManager.addEventListener("closeDocument", this, false); 50 this.eventManager.addEventListener("closeDocument", this, false);
53// defaultEventManager.addEventListener( "undo", this, false);
54// defaultEventManager.addEventListener( "redo", this, false);
55 } 51 }
56 }, 52 },
57 53
@@ -67,35 +63,25 @@ exports.SelectionController = Montage.create(Component, {
67 63
68 initWithDocument: { 64 initWithDocument: {
69 value: function(currentSelectionArray) { 65 value: function(currentSelectionArray) {
70 this._selectedItems = [];
71 this._isDocument = true; 66 this._isDocument = true;
72 67
73 if(currentSelectionArray) { 68 if(currentSelectionArray) {
74 if(currentSelectionArray.length >= 1) { 69 if(currentSelectionArray.length >= 1) {
75 this._selectedItems = currentSelectionArray;
76 this._isDocument = false; 70 this._isDocument = false;
77 71
78
79
80 this.application.ninja.selectedElements = currentSelectionArray; 72 this.application.ninja.selectedElements = currentSelectionArray;
81 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument}); 73 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument});
82
83
84
85 } 74 }
86 } 75 }
87 76
88 //
89 this._selectionContainer = this.application.ninja.currentSelectedContainer; 77 this._selectionContainer = this.application.ninja.currentSelectedContainer;
90
91 } 78 }
92 }, 79 },
93 80
94 handleSwitchDocument: { 81 handleSwitchDocument: {
95 value: function() { 82 value: function() {
96 if(this.application.ninja.documentController.activeDocument.currentView === "design"){ 83 if(this.application.ninja.documentController.activeDocument.currentView === "design"){
97 this._selectedItems = this.application.ninja.selectedElements.slice(0); 84 this._isDocument = this.application.ninja.selectedElements.length === 0;
98 this._isDocument = this._selectedItems.length === 0;
99 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); 85 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} );
100 } 86 }
101 } 87 }
@@ -107,21 +93,12 @@ exports.SelectionController = Montage.create(Component, {
107 } 93 }
108 }, 94 },
109 95
110 handleElementDeleted: { 96 handleElementsRemoved: {
111 value: function(event) { 97 value: function(event) {
112 if(!this._isDocument) { 98 if(!this._isDocument) {
113 if(this.findSelectedElement(event.detail) !== -1) { 99 this.application.ninja.selectedElements = [];
114 this.executeSelectElement(); 100 this._isDocument = true;
115 var element = event.detail; 101 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument});
116 if (element) {
117 if (element.elementModel) {
118 if (element.elementModel.shapeModel) {
119 if (element.elementModel.shapeModel.GLWorld)
120 element.elementModel.shapeModel.GLWorld.clearTree();
121 }
122 }
123 }
124 }
125 } 102 }
126 } 103 }
127 }, 104 },
@@ -142,23 +119,19 @@ exports.SelectionController = Montage.create(Component, {
142 } 119 }
143 }, 120 },
144 121
145 handleDeleteSelection: {
146 value: function(event) {
147 this.application.ninja.selectedElements = [];
148 this._isDocument = true;
149 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument});
150 }
151 },
152
153 /** 122 /**
154 * Select Element. This function will not check that element, it will simply add it to the selection array. 123 * Select Element. This function will not check that element, it will simply add it to the selection array.
155 */ 124 */
156