package scrum.client.journal; import ilarkesto.gwt.client.ATextWidget; import ilarkesto.gwt.client.Gwt; import ilarkesto.gwt.client.editor.RichtextEditorWidget; import scrum.client.admin.User; import scrum.client.collaboration.Wiki; import scrum.client.common.AScrumWidget; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class ChangeWidget extends AScrumWidget { private Change change; private Label date; public ChangeWidget(Change change) { super(); this.change = change; } @Override protected Widget onInitialization() { User changer = change.getUser(); Label changerLabel = new Label(changer.getName()); changerLabel.setStyleName("ChangeWidget-header-author"); String color = getCurrentProject().getUserConfig(changer).getColor(); changerLabel.getElement().getStyle().setProperty("color", color); date = new Label(); date.setStyleName("ChangeWidget-header-date"); FlowPanel header = new FlowPanel(); header.setStyleName("ChangeWidget-header"); header.add(date); header.add(changerLabel); FlowPanel panel = new FlowPanel(); panel.setStyleName("ChangeWidget"); panel.add(header); panel.add(createBody()); return panel; } @Override protected void onUpdate() { date.setText(change.getDateAndTime().getPeriodToNow().toShortestString() + " ago"); super.onUpdate(); } private Widget createBody() { ATextWidget diffWidget = new ATextWidget() { @Override protected void onUpdate() { setHtml(change.getDiff()); } }; diffWidget.addStyleName("ChangeWidget-diff"); FlowPanel panel = new FlowPanel(); panel.add(new HTML(Wiki.toHtml(change.getLabel()))); panel.add(diffWidget); panel.add(Gwt.createDiv("ChangeWidget-comment", new RichtextEditorWidget(change.getCommentModel()))); return panel; } }