[New Edit Mode] #636 Removed edit concerns from DropGesture

This commit is contained in:
Henry 2016-05-13 13:45:14 -07:00
parent a11dba88b2
commit 54a0de4a08
4 changed files with 24 additions and 22 deletions

View File

@ -26,7 +26,7 @@ define([
"./src/controllers/ElementsController", "./src/controllers/ElementsController",
"./src/controllers/EditObjectController", "./src/controllers/EditObjectController",
"./src/directives/MCTBeforeUnload", "./src/directives/MCTBeforeUnload",
"./src/actions/LinkAction", "./src/actions/EditAndComposeAction",
"./src/actions/EditAction", "./src/actions/EditAction",
"./src/actions/PropertiesAction", "./src/actions/PropertiesAction",
"./src/actions/RemoveAction", "./src/actions/RemoveAction",
@ -55,7 +55,7 @@ define([
ElementsController, ElementsController,
EditObjectController, EditObjectController,
MCTBeforeUnload, MCTBeforeUnload,
LinkAction, EditAndComposeAction,
EditAction, EditAction,
PropertiesAction, PropertiesAction,
RemoveAction, RemoveAction,
@ -126,7 +126,7 @@ define([
"actions": [ "actions": [
{ {
"key": "compose", "key": "compose",
"implementation": LinkAction "implementation": EditAndComposeAction
}, },
{ {
"key": "edit", "key": "edit",

View File

@ -31,12 +31,12 @@ define(
* @memberof platform/commonUI/edit * @memberof platform/commonUI/edit
* @implements {Action} * @implements {Action}
*/ */
function LinkAction(context) { function EditAndComposeAction(context) {
this.domainObject = (context || {}).domainObject; this.domainObject = (context || {}).domainObject;
this.selectedObject = (context || {}).selectedObject; this.selectedObject = (context || {}).selectedObject;
} }
LinkAction.prototype.perform = function () { EditAndComposeAction.prototype.perform = function () {
var self = this; var self = this;
// Persist changes to the domain object // Persist changes to the domain object
@ -54,9 +54,13 @@ define(
.then(doPersist); .then(doPersist);
} }
if (this.domainObject.getCapability('type').getKey() !== 'folder') {
this.domainObject.getCapability('action').perform('edit');
}
return this.selectedObject && doLink(); return this.selectedObject && doLink();
}; };
return LinkAction; return EditAndComposeAction;
} }
); );

View File

@ -21,8 +21,8 @@
*****************************************************************************/ *****************************************************************************/
define( define(
["../../src/actions/LinkAction"], ["../../src/actions/EditAndComposeAction"],
function (LinkAction) { function (EditAndComposeAction) {
describe("The Link action", function () { describe("The Link action", function () {
var mockQ, var mockQ,
@ -31,6 +31,7 @@ define(
mockContext, mockContext,
mockComposition, mockComposition,
mockPersistence, mockPersistence,
mockActionCapability,
mockType, mockType,
actionContext, actionContext,
model, model,
@ -67,18 +68,21 @@ define(
mockContext = jasmine.createSpyObj("context", [ "getParent" ]); mockContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockComposition = jasmine.createSpyObj("composition", [ "invoke", "add" ]); mockComposition = jasmine.createSpyObj("composition", [ "invoke", "add" ]);
mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]); mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]);
mockType = jasmine.createSpyObj("type", [ "hasFeature" ]); mockType = jasmine.createSpyObj("type", [ "hasFeature", "getKey" ]);
mockActionCapability = jasmine.createSpyObj("actionCapability", [ "perform"]);
mockDomainObject.getId.andReturn("test"); mockDomainObject.getId.andReturn("test");
mockDomainObject.getCapability.andReturn(mockContext); mockDomainObject.getCapability.andReturn(mockContext);
mockContext.getParent.andReturn(mockParent); mockContext.getParent.andReturn(mockParent);
mockType.hasFeature.andReturn(true); mockType.hasFeature.andReturn(true);
mockType.getKey.andReturn("layout");
mockComposition.invoke.andReturn(mockPromise(true)); mockComposition.invoke.andReturn(mockPromise(true));
mockComposition.add.andReturn(mockPromise(true)); mockComposition.add.andReturn(mockPromise(true));
capabilities = { capabilities = {
composition: mockComposition, composition: mockComposition,
persistence: mockPersistence, persistence: mockPersistence,
action: mockActionCapability,
type: mockType type: mockType
}; };
model = { model = {
@ -90,7 +94,7 @@ define(
selectedObject: mockDomainObject selectedObject: mockDomainObject
}; };
action = new LinkAction(actionContext); action = new EditAndComposeAction(actionContext);
}); });
@ -105,6 +109,11 @@ define(
expect(mockPersistence.persist).toHaveBeenCalled(); expect(mockPersistence.persist).toHaveBeenCalled();
}); });
it("enables edit mode", function () {
action.perform();
expect(mockActionCapability.perform).toHaveBeenCalledWith("edit");
});
}); });
} }
); );

View File

@ -54,9 +54,6 @@ define(
// ...and broadcast the event. This allows specific // ...and broadcast the event. This allows specific
// views to have post-drop behavior which depends on // views to have post-drop behavior which depends on
// drop position. // drop position.
// Also broadcast the editableDomainObject to
// avoid race condition against non-editable
// version in EditRepresenter
scope.$broadcast( scope.$broadcast(
GestureConstants.MCT_DROP_EVENT, GestureConstants.MCT_DROP_EVENT,
id, id,
@ -93,21 +90,13 @@ define(
function drop(e) { function drop(e) {
var event = (e || {}).originalEvent || e, var event = (e || {}).originalEvent || e,
id = event.dataTransfer.getData(GestureConstants.MCT_DRAG_TYPE), id = event.dataTransfer.getData(GestureConstants.MCT_DRAG_TYPE);
domainObjectType = domainObject.getModel().type;
// Handle the drop; add the dropped identifier to the // Handle the drop; add the dropped identifier to the
// destination domain object's composition, and persist // destination domain object's composition, and persist
// the change. // the change.
if (id) { if (id) {
e.preventDefault(); e.preventDefault();
//Use scope.apply, drop event is outside digest cycle
scope.$apply(function () {
if (domainObjectType !== 'folder') {
domainObject.getCapability('action').perform('edit');
}
});
$q.when(action && action.perform()).then(function () { $q.when(action && action.perform()).then(function () {
broadcastDrop(id, event); broadcastDrop(id, event);
}); });