diff --git a/platform/commonUI/general/src/directives/MCTTree.js b/platform/commonUI/general/src/directives/MCTTree.js
index 29d2e00ba7..c48d1775a7 100644
--- a/platform/commonUI/general/src/directives/MCTTree.js
+++ b/platform/commonUI/general/src/directives/MCTTree.js
@@ -29,7 +29,8 @@ define([
function link(scope, element, attrs) {
var treeView = new TreeView(),
expr = $parse(attrs.mctModel),
- unobserve = treeView.observe(expr.assign.bind(expr, scope));
+ assign = expr.assign.bind(expr, scope.$parent),
+ unobserve = treeView.observe(assign);
element.append(angular.element(treeView.elements()));
diff --git a/platform/commonUI/general/src/ui/TreeNodeView.js b/platform/commonUI/general/src/ui/TreeNodeView.js
index 9481bfdf9e..b639c024f3 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) {
+ function TreeNodeView(subtreeFactory, selectFn) {
this.li = $('
');
this.toggleView = new ToggleView(false);
@@ -49,6 +49,10 @@ define([
this.labelView = new TreeLabelView();
+ $(this.labelView.elements()).on('click', function () {
+ selectFn(this.activeObject);
+ }.bind(this));
+
this.li.append($(nodeTemplate));
this.li.find('span').eq(0)
.append($(this.toggleView.elements()))
@@ -80,7 +84,7 @@ define([
function getId(domainObject) {
return domainObject.getId();
}
-
+
return domainObject ?
domainObject.getCapability('context').getPath().map(getId) :
[];
diff --git a/platform/commonUI/general/src/ui/TreeView.js b/platform/commonUI/general/src/ui/TreeView.js
index 120c3230c8..594fec2894 100644
--- a/platform/commonUI/general/src/ui/TreeView.js
+++ b/platform/commonUI/general/src/ui/TreeView.js
@@ -27,21 +27,25 @@ define([
], function ($, TreeNodeView) {
'use strict';
- function TreeView() {
+ function TreeView(selectFn) {
this.ul = $('');
this.nodeViews = [];
this.callbacks = [];
+ this.selectFn = selectFn || this.value.bind(this);
}
- function newTreeView() {
- return new TreeView();
+ TreeView.prototype.newTreeView = function () {
+ return new TreeView(this.selectFn);
}
TreeView.prototype.setSize = function (sz) {
var nodeView;
while (this.nodeViews.length < sz) {
- nodeView = new TreeNodeView(newTreeView);
+ nodeView = new TreeNodeView(
+ this.newTreeView.bind(this),
+ this.selectFn
+ );
this.nodeViews.push(nodeView);
this.ul.append($(nodeView.elements()));
}
@@ -104,7 +108,6 @@ define([
};
TreeView.prototype.observe = function (callback) {
- callback(this.selectedObject);
this.callbacks.push(callback);
return function () {
this.callbacks = this.callbacks.filter(function (c) {