From ef032412216d437ce1c7dfc9050ab41adf0594c0 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Mon, 13 Feb 2012 10:28:44 -0800 Subject: Tree Components - Change the way delegate methods are called --- .../treeview/ninja-branch.reel/ninja-branch.html | 3 +- .../treeview/ninja-branch.reel/ninja-branch.js | 1 - .../treeview/ninja-leaf.reel/ninja-leaf.html | 2 +- .../treeview/ninja-leaf.reel/ninja-leaf.js | 43 ++++++++++++++++++---- 4 files changed, 39 insertions(+), 10 deletions(-) (limited to 'js/components/treeview') diff --git a/js/components/treeview/ninja-branch.reel/ninja-branch.html b/js/components/treeview/ninja-branch.reel/ninja-branch.html index 4d557a94..13f1c575 100644 --- a/js/components/treeview/ninja-branch.reel/ninja-branch.html +++ b/js/components/treeview/ninja-branch.reel/ninja-branch.html @@ -110,7 +110,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot "name": "Repetition", "properties": { "element": { "#": "branchList" }, - "contentController": {"@": "arrayController" } + "contentController": {"@": "arrayController" }, + "selectionEnabled": true } }, diff --git a/js/components/treeview/ninja-branch.reel/ninja-branch.js b/js/components/treeview/ninja-branch.reel/ninja-branch.js index 6b9ebb10..0d1a1d0e 100644 --- a/js/components/treeview/ninja-branch.reel/ninja-branch.js +++ b/js/components/treeview/ninja-branch.reel/ninja-branch.js @@ -5,7 +5,6 @@ */ var Montage = require("montage").Montage, - Component = require("montage/ui/component").Component, TreeNode = require("js/components/treeview/tree-node").TreeNode; var Branch = exports.Branch = Montage.create(TreeNode, { diff --git a/js/components/treeview/ninja-leaf.reel/ninja-leaf.html b/js/components/treeview/ninja-leaf.reel/ninja-leaf.html index bd8e8acd..310274bc 100644 --- a/js/components/treeview/ninja-leaf.reel/ninja-leaf.html +++ b/js/components/treeview/ninja-leaf.reel/ninja-leaf.html @@ -37,7 +37,7 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
-
+
\ No newline at end of file diff --git a/js/components/treeview/ninja-leaf.reel/ninja-leaf.js b/js/components/treeview/ninja-leaf.reel/ninja-leaf.js index bd566b26..749df3cd 100644 --- a/js/components/treeview/ninja-leaf.reel/ninja-leaf.js +++ b/js/components/treeview/ninja-leaf.reel/ninja-leaf.js @@ -5,7 +5,6 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot */ var Montage = require("montage/core/core").Montage, - Component = require("montage/ui/component").Component; TreeNode = require("js/components/treeview/tree-node").TreeNode; exports.Leaf = Montage.create(TreeNode, { @@ -14,19 +13,39 @@ exports.Leaf = Montage.create(TreeNode, { }, templateDidLoad : { value: function() { - this.needsDraw = true; + var event = this.treeView.activationEvent; + + ///// Re-set the activation event + if(event && event !== this.activationEvent) { + this.delegateEventMap[event] = this.delegateEventMap[this.activationEvent]; + delete this.delegateEventMap[this.activationEvent]; + this.activationEvent = this.treeView.activationEvent; + } } }, prepareForDraw: { value : function() { - this.activationEvent = this.activationEvent || 'click'; - this.label._element.addEventListener(this.activationEvent, this.handleNodeActivation.bind(this), false); + var el = this.label._element; + + Object.keys(this.delegateEventMap).forEach(function(event) { + el.addEventListener(event, this, false); + }, this); + } }, - handleNodeActivation: { + handleEvent : { value: function(e) { - console.log(this.sourceObject); - this.treeView.contentController.delegate.applyPresetSelection(this.sourceObject); + var delegateMethod = this.delegateEventMap[e._event.type]; + this.callDelegateMethod(delegateMethod); + } + }, + callDelegateMethod : { + value: function(methodName) { + console.log("Delegate method name: ", methodName); + var delegate = this.treeView.contentController.delegate; + if(delegate && typeof delegate[methodName] === 'function') { + delegate[methodName](this.sourceObject); + } } }, draw : { @@ -35,6 +54,16 @@ exports.Leaf = Montage.create(TreeNode, { this._labelText = this.sourceObject[this.labelKey]; } } + }, + activationEvent : { + value : 'click' + }, + delegateEventMap : { + value: { + 'click' : 'handleNodeActivation', + 'dragstart' : 'handleDragStart', + 'dragend' : 'handleDragEnd' + } } -- cgit v1.2.3