package scrum.client.tasks; import ilarkesto.core.scope.Scope; import ilarkesto.gwt.client.undo.AUndoOperation; import scrum.client.admin.User; import scrum.client.dnd.BlockListDropAction; import scrum.client.project.Requirement; import scrum.client.sprint.Task; import scrum.client.workspace.VisibleDataChangedEvent; public class ClaimTaskDropAction implements BlockListDropAction<Task> { private Requirement requirement; public ClaimTaskDropAction(Requirement requirement) { this.requirement = requirement; } public boolean onDrop(Task task) { Requirement requirement = task.getRequirement(); User owner = task.getOwner(); task.setRequirement(this.requirement); task.claim(); new VisibleDataChangedEvent().fireInCurrentScope(); Scope.get().getComponent(scrum.client.undo.Undo.class).getManager().add(new Undo(owner, task, requirement)); return true; } class Undo extends AUndoOperation { private User owner; private Task task; private Requirement requirement; public Undo(User owner, Task task, Requirement requirement) { this.owner = owner; this.task = task; this.requirement = requirement; } @Override public String getLabel() { return "Undo Claim/Change Story for " + task.getReference() + " " + task.getLabel(); } @Override protected void onUndo() { task.setRequirement(requirement); task.setOwner(owner); new VisibleDataChangedEvent().fireInCurrentScope(); } } }