package scrum.client.collaboration; import scrum.client.common.ABlockWidget; import scrum.client.common.AScrumAction; import scrum.client.common.AScrumGwtEntity; import scrum.client.common.BlockHeaderWidget; import scrum.client.common.BlockWidgetFactory; import scrum.client.dnd.TrashSupport; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class ForumItemBlock extends ABlockWidget<ForumSupport> implements TrashSupport { private Label dateLabel; @Override protected void onInitializationHeader(BlockHeaderWidget header) { ForumSupport entity = getObject(); dateLabel = header.appendCenterSuffix(""); if (entity instanceof Subject) { header.addMenuAction(new DeleteSubjectAction((Subject) entity)); } } @Override protected void onUpdateHeader(BlockHeaderWidget header) { ForumSupport entity = getObject(); header.setDragHandle(entity.getReference()); header.setCenter(entity.getLabel()); Comment comment = ((AScrumGwtEntity) entity).getLatestComment(); if (comment != null) { dateLabel.setText(comment.getDateAndTime().getPeriodToNow().toShortestString() + " ago by " + comment.getAuthor().getName()); } else { dateLabel.setText(""); } } @Override protected Widget onExtendedInitialization() { return new ForumItemWidget(getObject()); } @Override public AScrumAction getTrashAction() { ForumSupport entity = getObject(); if (entity instanceof Subject) return new DeleteSubjectAction((Subject) entity); return null; } public static final BlockWidgetFactory<ForumSupport> FACTORY = new BlockWidgetFactory<ForumSupport>() { @Override public ForumItemBlock createBlock() { return new ForumItemBlock(); } }; }