[Edit Mode] Visual indication of object being edited #278

This commit is contained in:
Henry 2015-11-19 18:45:18 -08:00
parent 9631d95a52
commit 10a44c026c
5 changed files with 26 additions and 4 deletions

View File

@ -80,6 +80,7 @@ define(
EditorCapability.prototype.save = function (nonrecursive) { EditorCapability.prototype.save = function (nonrecursive) {
var domainObject = this.domainObject, var domainObject = this.domainObject,
editableObject = this.editableObject, editableObject = this.editableObject,
self = this,
cache = this.cache; cache = this.cache;
// Update the underlying, "real" domain object's model // Update the underlying, "real" domain object's model
@ -95,8 +96,10 @@ define(
return domainObject.getCapability('persistence').persist(); return domainObject.getCapability('persistence').persist();
} }
editableObject.getCapability("status").set("editing", false);
return nonrecursive ? return nonrecursive ?
resolvePromise(doMutate()).then(doPersist) : resolvePromise(doMutate()).then(doPersist).then(function(){self.cancel()}) :
resolvePromise(cache.saveAll()); resolvePromise(cache.saveAll());
}; };
@ -109,6 +112,8 @@ define(
* @memberof platform/commonUI/edit.EditorCapability# * @memberof platform/commonUI/edit.EditorCapability#
*/ */
EditorCapability.prototype.cancel = function () { EditorCapability.prototype.cancel = function () {
this.editableObject.getCapability("status").set("editing", false);
//TODO: Reset the cache as well here.
return resolvePromise(undefined); return resolvePromise(undefined);
}; };

View File

@ -116,7 +116,6 @@ define(
} }
cache = new EditableDomainObjectCache(EditableDomainObjectImpl, $q); cache = new EditableDomainObjectCache(EditableDomainObjectImpl, $q);
return cache.getEditableObject(domainObject); return cache.getEditableObject(domainObject);
} }

View File

@ -70,7 +70,8 @@ define(
EditableDomainObjectCache.prototype.getEditableObject = function (domainObject) { EditableDomainObjectCache.prototype.getEditableObject = function (domainObject) {
var type = domainObject.getCapability('type'), var type = domainObject.getCapability('type'),
EditableDomainObject = this.EditableDomainObject, EditableDomainObject = this.EditableDomainObject,
editableObject; editableObject,
statusListener;
// Track the top-level domain object; this will have // Track the top-level domain object; this will have
// some special behavior for its context capability. // some special behavior for its context capability.
@ -92,6 +93,14 @@ define(
this.cache.getCachedModel(domainObject) this.cache.getCachedModel(domainObject)
); );
editableObject.getCapability("status").set('editing', true); editableObject.getCapability("status").set('editing', true);
if (!this.isRoot(domainObject)){
statusListener = this.root.getCapability("status").listen(function(statuses){
if (statuses.indexOf("editing") < 0 ){
editableObject.getCapability("status").set("editing", false);
statusListener();
}
});
}
return editableObject; return editableObject;
}; };

View File

@ -23,7 +23,7 @@
<span ng-controller="TreeNodeController as treeNode"> <span ng-controller="TreeNodeController as treeNode">
<span <span
class="tree-item menus-to-left" class="tree-item menus-to-left"
ng-class="{selected: treeNode.isSelected()}" ng-class="{selected: treeNode.isSelected(), active: editing}"
> >
<span <span
mct-device="desktop" mct-device="desktop"

View File

@ -144,6 +144,15 @@ define(
this.$timeout = $timeout; this.$timeout = $timeout;
this.$scope = $scope; this.$scope = $scope;
//$scope.editing =
// $scope.domainObject.getCapability('status').get().indexOf('editing') >=0;
//TODO: Temporary hack until css classes are defined for status
// change
$scope.domainObject.getCapability('status').listen(function(status){
$scope.editing = status.indexOf('editing') >=0;
});
// Listen for changes which will effect display parameters // Listen for changes which will effect display parameters
$scope.$watch("ngModel.selectedObject", setSelection); $scope.$watch("ngModel.selectedObject", setSelection);
$scope.$watch("domainObject", checkSelection); $scope.$watch("domainObject", checkSelection);