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