aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rwxr-xr-xjs/controllers/document-controller.js6
-rwxr-xr-xjs/controllers/selection-controller.js15
-rwxr-xr-xjs/controllers/undo-controller.js17
-rwxr-xr-xjs/document/html-document.js52
-rw-r--r--js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js6
-rw-r--r--js/mediators/io-mediator.js61
-rwxr-xr-xjs/mediators/keyboard-mediator.js2
-rwxr-xr-xjs/panels/properties/content.reel/content.js17
8 files changed, 131 insertions, 45 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index 02031922..64ff2c7e 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -195,7 +195,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
195 value:function(doc){ 195 value:function(doc){
196 var response = doc || null;//default just for testing 196 var response = doc || null;//default just for testing
197 if(!!response && response.success && (response.status!== 500) && !!response.uri){ 197 if(!!response && response.success && (response.status!== 500) && !!response.uri){
198
199 this.isNewFilePath = true;//path identifier flag
198 this.creatingNewFile = true;//flag for timeline to identify new file flow 200 this.creatingNewFile = true;//flag for timeline to identify new file flow
201
199 this.application.ninja.ioMediator.fileOpen(response.uri, this.openFileCallback.bind(this)); 202 this.application.ninja.ioMediator.fileOpen(response.uri, this.openFileCallback.bind(this));
200 }else if(!!response && !response.success){ 203 }else if(!!response && !response.success){
201 //Todo: restrict directory path to the sandbox, in the dialog itself 204 //Todo: restrict directory path to the sandbox, in the dialog itself
@@ -224,9 +227,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
224 //TODO: Add UI to handle error codes, shouldn't be alert windows 227 //TODO: Add UI to handle error codes, shouldn't be alert windows
225 if(!!response && (response.status === 204)) { 228 if(!!response && (response.status === 204)) {
226 229
227 if((typeof this.creatingNewFile === 'undefined') || (this.creatingNewFile !== true)){//not from new file flow 230 if((typeof this.isNewFilePath === 'undefined') || (this.isNewFilePath !== true)){//not from new file flow
228 this.creatingNewFile = false; 231 this.creatingNewFile = false;
229 } 232 }
233 this.isNewFilePath = false;//reset path identifier flag
230 234
231 //Sending full response object 235 //Sending full response object
232 this.openDocument(response); 236 this.openDocument(response);
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js
index f50762f3..184c4899 100755
--- a/js/controllers/selection-controller.js
+++ b/js/controllers/selection-controller.js
@@ -47,6 +47,7 @@ exports.SelectionController = Montage.create(Component, {
47 this.eventManager.addEventListener("elementDeleted", this, false); 47 this.eventManager.addEventListener("elementDeleted", this, false);
48 this.eventManager.addEventListener("selectAll", this, false); 48 this.eventManager.addEventListener("selectAll", this, false);
49 this.eventManager.addEventListener("deleteSelection", this, false); 49 this.eventManager.addEventListener("deleteSelection", this, false);
50 this.eventManager.addEventListener("switchDocument", this, false);
50// defaultEventManager.addEventListener( "undo", this, false); 51// defaultEventManager.addEventListener( "undo", this, false);
51// defaultEventManager.addEventListener( "redo", this, false); 52// defaultEventManager.addEventListener( "redo", this, false);
52 } 53 }
@@ -88,6 +89,20 @@ exports.SelectionController = Montage.create(Component, {
88 } 89 }
89 }, 90 },
90 91
92 handleSwitchDocument: {
93 value: function() {
94 this._selectedItems = this.application.ninja.selectedElements.slice(0);
95 if(this._selectedItems.length === 0 ){
96 this._isDocument = true;
97 }else{
98 this._isDocument = false;
99 }
100 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} );
101
102 this._selectionContainer = this.application.ninja.currentSelectedContainer;
103 }
104 },
105
91 handleElementAdded: { 106 handleElementAdded: {
92 value: function(event) { 107 value: function(event) {
93 this.executeSelectElement(event.detail); 108 this.executeSelectElement(event.detail);
diff --git a/js/controllers/undo-controller.js b/js/controllers/undo-controller.js
index 926803d3..19cfb6e6 100755
--- a/js/controllers/undo-controller.js
+++ b/js/controllers/undo-controller.js
@@ -71,22 +71,28 @@ exports.UndoController = Montage.create( Component, {
71 /** 71 /**
72 * Undo Queue 72 * Undo Queue
73 */ 73 */
74 _undoQueue: { value: [] }, 74 _undoQueue: { value: []},
75 75
76 undoQueue: { 76 undoQueue: {
77 get: function() { 77 get: function() {
78 return this._undoQueue; 78 return this._undoQueue;
79 },
80 set: function(value){
81 this._undoQueue = value;
79 } 82 }
80 }, 83 },
81 84
82 /** 85 /**
83 * Redo Queue 86 * Redo Queue
84 */ 87 */
85 _redoQueue: { value: [], enumerable: false }, 88 _redoQueue: { value: [], enumerable: false},
86 89
87 redoQueue: { 90 redoQueue: {
88 get: function() { 91 get: function() {
89 return this._redoQueue; 92 return this._redoQueue;
93 },
94 set: function(value){
95 this._redoQueue = value;
90 } 96 }
91 }, 97 },
92 98
@@ -202,5 +208,12 @@ exports.UndoController = Montage.create( Component, {
202 this.redoQueue.splice(0, this.redoQueue.length); 208 this.redoQueue.splice(0, this.redoQueue.length);
203 //this.redoQueue = []; 209 //this.redoQueue = [];
204 } 210 }
211 },
212
213 clearHistory:{
214 value: function(){
215 this.undoQueue.length = 0;
216 this.redoQueue.length = 0;
217 }
205 } 218 }
206}); \ No newline at end of file 219}); \ No newline at end of file
diff --git a/js/document/html-document.js b/js/document/html-document.js
index 76436732..544c0ad5 100755
--- a/js/document/html-document.js
+++ b/js/document/html-document.js
@@ -59,6 +59,27 @@ exports.HTMLDocument = Montage.create(TextDocument, {
59 _gridVerticalSpacing: {value:0}, 59 _gridVerticalSpacing: {value:0},
60 //end - drawUtils state 60 //end - drawUtils state
61 61
62 _undoStack: { value: [] },
63 undoStack: {
64 get: function() {
65 return this._undoStack;
66 },
67 set:function(value){
68 this._undoStack = value;
69 }
70 },
71
72 _redoStack: { value: [], enumerable: false },
73
74 redoStack: {
75 get: function() {
76 return this._redoStack;
77 },
78 set:function(value){
79 this._redoStack = value;
80 }
81 },
82
62 83
63 // GETTERS / SETTERS 84 // GETTERS / SETTERS
64 85
@@ -677,8 +698,15 @@ exports.HTMLDocument = Montage.create(TextDocument, {
677 this.gridVerticalSpacing = this.application.ninja.stage.drawUtils.gridVerticalSpacing; 698 this.gridVerticalSpacing = this.application.ninja.stage.drawUtils.gridVerticalSpacing;
678 699
679 if(typeof this.application.ninja.selectedElements !== 'undefined'){ 700 if(typeof this.application.ninja.selectedElements !== 'undefined'){
680 this.selectionModel = this.application.ninja.selectedElements; 701 this.selectionModel = this.application.ninja.selectedElements.slice(0);
681 } 702 }
703
704 this.draw3DGrid = this.application.ninja.appModel.show3dGrid;
705
706 //persist a clone of history per document
707 this.undoStack = this.application.ninja.undocontroller.undoQueue.slice(0);
708 this.redoStack = this.application.ninja.undocontroller.redoQueue.slice(0);
709 this.application.ninja.undocontroller.clearHistory();//clear history to give the next document a fresh start
682 } 710 }
683 }, 711 },
684 712
@@ -689,17 +717,25 @@ exports.HTMLDocument = Montage.create(TextDocument, {
689 this.application.ninja.stage.drawUtils.gridHorizontalSpacing = this.gridHorizontalSpacing; 717 this.application.ninja.stage.drawUtils.gridHorizontalSpacing = this.gridHorizontalSpacing;
690 this.application.ninja.stage.drawUtils.gridVerticalSpacing = this.gridVerticalSpacing; 718 this.application.ninja.stage.drawUtils.gridVerticalSpacing = this.gridVerticalSpacing;
691 719
692 if((typeof this.selectionModel !== 'undefined') && (this.selectionModel !== null) && (this.selectionModel.length > 0)){
693 this.application.ninja.selectionController.initWithDocument(this.selectionModel);
694 }
695 720
696 if((this.savedLeftScroll!== null) && (this.savedTopScroll !== null)){ 721
722 if((this.savedLeftScroll !== null) && (this.savedTopScroll !== null)){
697 this.application.ninja.stage._iframeContainer.scrollLeft = this.savedLeftScroll; 723 this.application.ninja.stage._iframeContainer.scrollLeft = this.savedLeftScroll;
698 this.application.ninja.stage._scrollLeft = this.savedLeftScroll;
699 this.application.ninja.stage._iframeContainer.scrollTop = this.savedTopScroll; 724 this.application.ninja.stage._iframeContainer.scrollTop = this.savedTopScroll;
700 this.application.ninja.stage._scrollLeft = this.savedTopScroll; 725 this.application.ninja.stage.handleScroll();
726 }
727
728 this.application.ninja.currentSelectedContainer = this.documentRoot;
729 if(this.selectionModel){
730 this.application.ninja.selectedElements = this.selectionModel.slice(0);
701 } 731 }
702 this.application.ninja.stage.handleScroll(); 732
733 this.application.ninja.appModel.show3dGrid = this.draw3DGrid;
734
735 this.application.ninja.undocontroller.undoQueue = this.undoStack.slice(0);
736 this.application.ninja.undocontroller.redoQueue = this.redoStack.slice(0);
737
738
703 } 739 }
704 } 740 }
705 //////////////////////////////////////////////////////////////////// 741 ////////////////////////////////////////////////////////////////////
diff --git a/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js b/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js
index 428e7bab..3d99ae4d 100644
--- a/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js
+++ b/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js
@@ -861,12 +861,12 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
861 var dataStore = window.sessionStorage; 861 var dataStore = window.sessionStorage;
862 try {