package scrum.client.issues; import scrum.client.collaboration.EmoticonsWidget; import scrum.client.common.ABlockWidget; import scrum.client.common.AScrumAction; import scrum.client.common.BlockHeaderWidget; import scrum.client.common.BlockWidgetFactory; import scrum.client.dnd.TrashSupport; import scrum.client.img.Img; import scrum.client.journal.ActivateChangeHistoryAction; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; public class IssueBlock extends ABlockWidget<Issue> implements TrashSupport { private SimplePanel statusIcon; // private Label typeLabel; private Label statusSuffix; private Label severityPrefix; @Override protected void onInitializationHeader(BlockHeaderWidget header) { Issue issue = getObject(); if (issue.isBug()) statusIcon = header.insertPrefixIcon(); if (issue.isBug()) severityPrefix = header.insertPrefixLabel("50px", false); statusSuffix = header.appendCenterSuffix(""); header.appendCell(new EmoticonsWidget(issue), null, true, true, null); header.addMenuAction(new AcceptIssueAsBugAction(issue)); header.addMenuAction(new AcceptIssueAsIdeaAction(issue)); header.addMenuAction(new ClaimIssueAction(issue)); header.addMenuAction(new FixIssueAction(issue)); header.addMenuAction(new RejectFixIssueAction(issue)); header.addMenuAction(new PublishIssueAction(issue)); header.addMenuAction(new ConvertIssueToRequirementAction(issue)); header.addMenuAction(new ReopenIssueAction(issue)); header.addMenuAction(new SuspendIssueAction(issue, 7)); header.addMenuAction(new SuspendIssueAction(issue, 30)); header.addMenuAction(new SuspendIssueAction(issue, 180)); header.addMenuAction(new UnsuspendIssueAction(issue)); header.addMenuAction(new CloseIssueAction(issue)); header.addMenuAction(new ReplyToIssueAuthorAction(issue)); header.addMenuAction(new ActivateChangeHistoryAction(issue)); header.addMenuAction(new DeleteIssueAction(issue)); } @Override protected void onUpdateHeader(BlockHeaderWidget header) { Issue issue = getObject(); if (issue.isBug()) { Image statusImage = null; if (severityPrefix != null) severityPrefix.setText(issue.getSeverityLabel()); if (issue.isFixed()) { statusImage = Img.bundle.issFixed().createImage(); statusImage.setTitle("Closed."); } else if (issue.isOwnerSet()) { statusImage = Img.bundle.issClaimed().createImage(); statusImage.setTitle("Claimed by " + issue.getOwner().getName()); } if (statusIcon != null) statusIcon.setWidget(statusImage); } statusSuffix.setText(issue.getStatusLabel()); header.setDragHandle(issue.getReference()); header.setCenter(issue.getLabel()); } @Override protected Widget onExtendedInitialization() { return new IssueWidget(getObject()); } @Override public AScrumAction getTrashAction() { return new DeleteIssueAction(getObject()); } public static final BlockWidgetFactory<Issue> FACTORY = new BlockWidgetFactory<Issue>() { @Override public IssueBlock createBlock() { return new IssueBlock(); } }; }