diff --git a/platform/commonUI/general/bundle.js b/platform/commonUI/general/bundle.js index d86801e2ea..02512fc9fd 100644 --- a/platform/commonUI/general/bundle.js +++ b/platform/commonUI/general/bundle.js @@ -395,7 +395,7 @@ define([ { "key": "mctTree", "implementation": MCTTree, - "depends": [ '$parse' ] + "depends": [ '$parse', 'gestureService' ] } ], "constants": [ diff --git a/platform/commonUI/general/src/directives/MCTTree.js b/platform/commonUI/general/src/directives/MCTTree.js index 18641b3941..47f8eecbc6 100644 --- a/platform/commonUI/general/src/directives/MCTTree.js +++ b/platform/commonUI/general/src/directives/MCTTree.js @@ -25,9 +25,9 @@ define([ 'angular', '../ui/TreeView' ], function (angular, TreeView) { - function MCTTree($parse) { + function MCTTree($parse, gestureService) { function link(scope, element, attrs) { - var treeView = new TreeView(), + var treeView = new TreeView(gestureService), expr = $parse(attrs.mctModel), unobserve = treeView.observe(function (domainObject) { if (domainObject !== expr(scope.$parent)) { diff --git a/platform/commonUI/general/src/ui/TreeLabelView.js b/platform/commonUI/general/src/ui/TreeLabelView.js index 0c1144a8bc..75e8efcc29 100644 --- a/platform/commonUI/general/src/ui/TreeLabelView.js +++ b/platform/commonUI/general/src/ui/TreeLabelView.js @@ -27,8 +27,9 @@ define([ ], function ($, labelTemplate) { 'use strict'; - function TreeLabelView() { + function TreeLabelView(gestureService) { this.el = $(labelTemplate); + this.gestureService = gestureService; } function getGlyph(domainObject) { @@ -62,11 +63,22 @@ define([ delete this.unlisten; } + if (this.activeGestures) { + this.activeGestures.destroy(); + delete this.activeGestures; + } + this.updateView(domainObject); if (domainObject) { this.unlisten = domainObject.getCapability('mutation') .listen(this.updateView.bind(this, domainObject)); + + this.activeGestures = this.gestureService.attachGestures( + this.elements(), + domainObject, + [ 'info', 'menu', 'drag' ] + ); } }; diff --git a/platform/commonUI/general/src/ui/TreeNodeView.js b/platform/commonUI/general/src/ui/TreeNodeView.js index b639c024f3..2b02a2c1f9 100644 --- a/platform/commonUI/general/src/ui/TreeNodeView.js +++ b/platform/commonUI/general/src/ui/TreeNodeView.js @@ -29,7 +29,7 @@ define([ ], function ($, nodeTemplate, ToggleView, TreeLabelView) { 'use strict'; - function TreeNodeView(subtreeFactory, selectFn) { + function TreeNodeView(gestureService, subtreeFactory, selectFn) { this.li = $('
  • '); this.toggleView = new ToggleView(false); @@ -47,7 +47,7 @@ define([ } }.bind(this)); - this.labelView = new TreeLabelView(); + this.labelView = new TreeLabelView(gestureService); $(this.labelView.elements()).on('click', function () { selectFn(this.activeObject); diff --git a/platform/commonUI/general/src/ui/TreeView.js b/platform/commonUI/general/src/ui/TreeView.js index 594fec2894..b1e9e6398e 100644 --- a/platform/commonUI/general/src/ui/TreeView.js +++ b/platform/commonUI/general/src/ui/TreeView.js @@ -27,22 +27,24 @@ define([ ], function ($, TreeNodeView) { 'use strict'; - function TreeView(selectFn) { + function TreeView(gestureService, selectFn) { this.ul = $(''); this.nodeViews = []; this.callbacks = []; this.selectFn = selectFn || this.value.bind(this); + this.gestureService = gestureService; } TreeView.prototype.newTreeView = function () { - return new TreeView(this.selectFn); - } + return new TreeView(this.gestureService, this.selectFn); + }; TreeView.prototype.setSize = function (sz) { var nodeView; while (this.nodeViews.length < sz) { nodeView = new TreeNodeView( + this.gestureService, this.newTreeView.bind(this), this.selectFn );