diff --git a/platform/commonUI/edit/src/policies/EditActionPolicy.js b/platform/commonUI/edit/src/policies/EditActionPolicy.js index bec2fc423d..4db62d8ab2 100644 --- a/platform/commonUI/edit/src/policies/EditActionPolicy.js +++ b/platform/commonUI/edit/src/policies/EditActionPolicy.js @@ -51,6 +51,19 @@ define( return count; } + /** + * Checks whether the domain object is currently being edited. If + * so, the edit action is not applicable. + * @param context + * @returns {*|boolean} + */ + function isEditing(context) { + var domainObject = (context || {}).domainObject; + return domainObject + && domainObject.hasCapability('status') + && domainObject.getCapability('status').get('editing'); + } + EditActionPolicy.prototype.allow = function (action, context) { var key = action.getMetadata().key, category = (context || {}).category; @@ -59,11 +72,12 @@ define( if (category === 'view-control') { // Restrict 'edit' to cases where there are editable // views (similarly, restrict 'properties' to when - // the converse is true) + // the converse is true), and where the domain object is not + // already being edited. if (key === 'edit') { - return countEditableViews(context) > 0; + return countEditableViews(context) > 0 && !isEditing(context); } else if (key === 'properties') { - return countEditableViews(context) < 1; + return countEditableViews(context) < 1 && !isEditing(context); } } diff --git a/platform/representation/src/gestures/DropGesture.js b/platform/representation/src/gestures/DropGesture.js index 1f5147211c..d225f27f38 100644 --- a/platform/representation/src/gestures/DropGesture.js +++ b/platform/representation/src/gestures/DropGesture.js @@ -134,8 +134,7 @@ define( function drop(e) { var event = (e || {}).originalEvent || e, id = event.dataTransfer.getData(GestureConstants.MCT_DRAG_TYPE), - domainObjectType = editableDomainObject.getModel().type, - virtualPanel; + domainObjectType = editableDomainObject.getModel().type; // If currently in edit mode allow drag and drop gestures to the // domain object. An exception to this is folders which have drop @@ -147,10 +146,10 @@ define( // the change. if (id) { if (shouldCreateVirtualPanel(domainObject)){ - navigationService.setNavigation(createVirtualPanel(domainObject, id)); + editableDomainObject = createVirtualPanel(domainObject, id) + navigationService.setNavigation(editableDomainObject); broadcastDrop(id, event); } else { - editableDomainObject.getCapability('status').set('editing', true); $q.when(action && action.perform()).then(function (result) { //Don't go into edit mode for folders if (domainObjectType!=='folder') { @@ -159,6 +158,7 @@ define( broadcastDrop(id, event); }); } + editableDomainObject.getCapability('status').set('editing', true); } //} // TODO: Alert user if drag and drop is not allowed