aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui/controller/array-controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/ui/controller/array-controller.js')
-rw-r--r--node_modules/montage/ui/controller/array-controller.js53
1 files changed, 18 insertions, 35 deletions
diff --git a/node_modules/montage/ui/controller/array-controller.js b/node_modules/montage/ui/controller/array-controller.js
index 215e7b25..ec236b39 100644
--- a/node_modules/montage/ui/controller/array-controller.js
+++ b/node_modules/montage/ui/controller/array-controller.js
@@ -7,11 +7,11 @@
7 @module montage/ui/controller/array-controller 7 @module montage/ui/controller/array-controller
8 @requires montage/core/core 8 @requires montage/core/core
9 @requires montage/ui/controller/object-controller 9 @requires montage/ui/controller/object-controller
10 @requires montage/core/event/mutable-event 10 @requires montage/core/change-notification
11 */ 11 */
12var Montage = require("montage").Montage, 12var Montage = require("montage").Montage,
13 ObjectController = require("ui/controller/object-controller").ObjectController, 13 ObjectController = require("ui/controller/object-controller").ObjectController,
14 MutableEvent = require("core/event/mutable-event").MutableEvent; 14 ChangeNotification = require("core/change-notification").ChangeNotification;
15/** 15/**
16 The ArrayController helps with organizing a collection of objects, and managing user selection within that collection. 16 The ArrayController helps with organizing a collection of objects, and managing user selection within that collection.
17 TYou can assign an ArrayController instance as the <code>contentProvider</code> property for a Montage List or Repetition object. 17 TYou can assign an ArrayController instance as the <code>contentProvider</code> property for a Montage List or Repetition object.
@@ -273,7 +273,7 @@ var ArrayController = exports.ArrayController = Montage.create(ObjectController,
273 return this._selectedIndexes; 273 return this._selectedIndexes;
274 } 274 }
275 275
276 if (!this._selectedContentIndexes) { 276 if (!this.selectedContentIndexes) {
277 return null; 277 return null;
278 } 278 }
279 return this._selectedIndexes = this._convertIndexesFromContentToOrganized(this.selectedContentIndexes); 279 return this._selectedIndexes = this._convertIndexesFromContentToOrganized(this.selectedContentIndexes);
@@ -295,15 +295,11 @@ var ArrayController = exports.ArrayController = Montage.create(ObjectController,
295 } 295 }
296 296
297 this._selectedIndexes = value; 297 this._selectedIndexes = value;
298 var selectedContentIndexesChangeEvent,selectedObjectsChangeEvent;
299 selectedContentIndexesChangeEvent = MutableEvent.changeEventForKeyAndValue("selectedContentIndexes" , this.selectedContentIndexes);
300 selectedObjectsChangeEvent = MutableEvent.changeEventForKeyAndValue("selectedObjects" , this._selectedObjects);
301
302 this._selectedContentIndexes = newIndexes;
303 this._selectedObjects = null;
304 298
305 this.dispatchEvent(selectedContentIndexesChangeEvent.withPlusValue(this.selectedContentIndexes)); 299 this.dispatchPropertyChange("selectedContentIndexes", "selectedObjects", function() {
306 this.dispatchEvent(selectedObjectsChangeEvent.withPlusValue(this.selectedObjects)); 300 this._selectedContentIndexes = newIndexes;
301 this._selectedObjects = null;
302 });
307 } 303 }
308 } 304 }
309 }, 305 },
@@ -483,11 +479,9 @@ var ArrayController = exports.ArrayController = Montage.create(ObjectController,
483 479
484 // I don't want to provide a setter for organizedObjects, so update the cached value and notify observers that 480 // I don't want to provide a setter for organizedObjects, so update the cached value and notify observers that
485 // the organizedObjects property changed 481 // the organizedObjects property changed
486 changeEvent = MutableEvent.changeEventForKeyAndValue("organizedObjects" , this._organizedObjects ? this._organizedObjects.slice(0) : this._organizedObjects); 482 this.dispatchPropertyChange("organizedObjects", function() {
487 483 this._organizedObjects = organizedObjects ? organizedObjects : [];
488 this._organizedObjects = organizedObjects ? organizedObjects : []; 484 });
489
490 this.dispatchEvent(changeEvent.withPlusValue(this._organizedObjects));
491 } 485 }
492 }, 486 },
493 487
@@ -550,17 +544,10 @@ var ArrayController = exports.ArrayController = Montage.create(ObjectController,
550 } 544 }
551 this._selectedObjects = value; 545 this._selectedObjects = value;
552 546
553 var selectedContentIndexesChangeEvent, 547 this.dispatchPropertyChange("selectedContentIndexes", "selectedIndexes", function() {
554 selectedIndexesChangeEvent; 548 this._selectedContentIndexes = null;
555 549 this._selectedIndexes = null;
556 selectedContentIndexesChangeEvent = MutableEvent.changeEventForKeyAndValue("selectedContentIndexes" , this._selectedContentIndexes); 550 });
557 selectedIndexesChangeEvent = MutableEvent.changeEventForKeyAndValue("selectedIndexes" , this._selectedIndexes);
558
559 this._selectedContentIndexes = null;
560 this._selectedIndexes = null;
561
562 this.dispatchEvent(selectedContentIndexesChangeEvent.withPlusValue(this.selectedContentIndexes));
563 this.dispatchEvent(selectedIndexesChangeEvent.withPlusValue(this.selectedIndexes));
564 } 551 }
565 }, 552 },
566 553
@@ -635,14 +622,10 @@ var ArrayController = exports.ArrayController = Montage.create(ObjectController,
635 622
636 this._selectedContentIndexes = value; 623 this._selectedContentIndexes = value;
637 624
638 selectedIndexesChangeEvent = MutableEvent.changeEventForKeyAndValue("selectedIndexes" , this._selectedIndexes); 625 this.dispatchPropertyChange("selectedIndexes", "selectedObjects", function() {
639 selectedObjectsChangeEvent = MutableEvent.changeEventForKeyAndValue("selectedObjects" , this._selectedObjects); 626 this._selectedIndexes = null;
640 627 this._selectedObjects = null;
641 this._selectedIndexes = null; 628 });
642 this._selectedObjects = null;
643
644 this.dispatchEvent(selectedIndexesChangeEvent.withPlusValue(this.selectedIndexes));
645 this.dispatchEvent(selectedObjectsChangeEvent.withPlusValue(this.selectedObjects));
646 629
647 if(!internalSet) { 630 if(!internalSet) {
648 // update the selections only if the selectedContentIndexes is set directly 631 // update the selections only if the selectedContentIndexes is set directly