package scrum.client.project; import scrum.client.common.TooltipBuilder; import scrum.client.sprint.Sprint; public class RemoveRequirementFromSprintAction extends GRemoveRequirementFromSprintAction { public RemoveRequirementFromSprintAction(Requirement requirement) { super(requirement); } @Override public String getLabel() { return "Kick from Sprint"; } @Override public String getTooltip() { TooltipBuilder tb = new TooltipBuilder("Remove this Story from the current Sprint."); if (!requirement.getProject().isProductOwner(getCurrentUser())) { tb.addRemark(TooltipBuilder.NOT_PRODUCT_OWNER); } else { if (!requirement.isSprintSet()) tb.addRemark("Story is not in in the current Sprint."); } return tb.getTooltip(); } @Override public boolean isExecutable() { if (!requirement.isInCurrentSprint()) return false; return true; } @Override public boolean isPermitted() { if (!requirement.getProject().isProductOwner(getCurrentUser())) return false; return true; } @Override protected void onExecute() { Sprint sprint = requirement.getSprint(); requirement.setSprint(null); addUndo(new Undo(sprint)); } class Undo extends ALocalUndo { private Sprint s; public Undo(Sprint s) { this.s = s; } @Override public String getLabel() { return "Undo Remove " + requirement.getReferenceAndLabel() + " from Sprint"; } @Override protected void onUndo() { requirement.setSprint(s); } } }