package scrum.client.impediments; 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 ImpedimentBlock extends ABlockWidget<Impediment> implements TrashSupport { private SimplePanel statusIcon; private Label dateLabel; @Override protected void onInitializationHeader(BlockHeaderWidget header) { Impediment impediment = getObject(); dateLabel = header.insertPrefixLabel("70px", true); statusIcon = header.insertPrefixIcon(); header.appendCell(new EmoticonsWidget(impediment), null, true, true, null); header.addMenuAction(new ActivateChangeHistoryAction(impediment)); header.addMenuAction(new CloseImpedimentAction(impediment)); header.addMenuAction(new DeleteImpedimentAction(impediment)); } @Override protected void onUpdateHeader(BlockHeaderWidget header) { Impediment impediment = getObject(); header.setDragHandle(impediment.getReference()); Image statusImage = null; if (impediment.isOpen()) { statusImage = Img.bundle.impOpen().createImage(); statusImage.setTitle("Still impeding."); } statusIcon.setWidget(statusImage); dateLabel.setText(impediment.getDate().toString()); header.setCenter(impediment.getLabel()); } @Override protected Widget onExtendedInitialization() { return new ImpedimentWidget(getObject()); } public AScrumAction getTrashAction() { return new DeleteImpedimentAction(getObject()); } public static final BlockWidgetFactory<Impediment> FACTORY = new BlockWidgetFactory<Impediment>() { public ImpedimentBlock createBlock() { return new ImpedimentBlock(); } }; }