diff options
Diffstat (limited to 'node_modules/montage/ui/controller/array-controller.js')
-rw-r--r-- | node_modules/montage/ui/controller/array-controller.js | 53 |
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 | */ |
12 | var Montage = require("montage").Montage, | 12 | var 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 |