[Tree] Enable gestures on labels

This commit is contained in:
Victor Woeltjen 2016-03-11 17:43:18 -08:00
parent 02ec6db104
commit f7ba24c0b6
5 changed files with 23 additions and 9 deletions

View File

@ -395,7 +395,7 @@ define([
{
"key": "mctTree",
"implementation": MCTTree,
"depends": [ '$parse' ]
"depends": [ '$parse', 'gestureService' ]
}
],
"constants": [

View File

@ -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)) {

View File

@ -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' ]
);
}
};

View File

@ -29,7 +29,7 @@ define([
], function ($, nodeTemplate, ToggleView, TreeLabelView) {
'use strict';
function TreeNodeView(subtreeFactory, selectFn) {
function TreeNodeView(gestureService, subtreeFactory, selectFn) {
this.li = $('<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);

View File

@ -27,22 +27,24 @@ define([
], function ($, TreeNodeView) {
'use strict';
function TreeView(selectFn) {
function TreeView(gestureService, selectFn) {
this.ul = $('<ul class="tree"></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
);