package scrum.client.release;
import ilarkesto.gwt.client.AMultiSelectionViewEditWidget;
import ilarkesto.gwt.client.AOutputViewEditWidget;
import ilarkesto.gwt.client.TableBuilder;
import scrum.client.ScrumGwt;
import scrum.client.common.AScrumWidget;
import scrum.client.issues.RequestReleaseIssuesServiceCall;
import scrum.client.journal.ChangeHistoryWidget;
import scrum.client.sprint.Sprint;
import com.google.gwt.user.client.ui.Widget;
public class ReleaseWidget extends AScrumWidget {
private Release release;
public ReleaseWidget(Release release) {
super();
this.release = release;
}
@Override
protected Widget onInitialization() {
new RequestReleaseIssuesServiceCall(release.getId()).execute();
TableBuilder tb = ScrumGwt.createFieldTable();
tb.addFieldRow("Label", release.getLabelModel());
tb.addFieldRow("Release Date", release.getReleaseDateModel());
tb.addFieldRow("Development Notes", release.getNoteModel());
tb.addFieldRow("Release Notes", release.getReleaseNotesModel());
tb.addFieldRow("SCM Tag", release.getScmTagModel());
if (release.isMajor()) {
tb.addFieldRow("Sprints", new AMultiSelectionViewEditWidget<Sprint>() {
@Override
protected void onViewerUpdate() {
setViewerItems(release.getSprints());
}
@Override
protected void onEditorUpdate() {
setEditorItems(release.getProject().getSprints());
setEditorSelectedItems(release.getSprints());
}
@Override
protected void onEditorSubmit() {
release.setSprints(getEditorSelectedItems());
}
@Override
public boolean isEditable() {
return release.getProject().isProductOwnerOrScrumMaster(getCurrentUser());
}
@Override
public String getTooltip() {
return getLocalizer().fields().releaseSprints();
}
});
tb.addFieldRow("Requirements", new AOutputViewEditWidget() {
@Override
protected void onViewerUpdate() {
setViewer(ScrumGwt.createToHtmlItemsWidget(release.getRequirements()));
}
@Override
public String getTooltip() {
return getLocalizer().fields().releaseRequirements();
}
});
}
tb.addFieldRow("Affected by Issues", new AOutputViewEditWidget() {
@Override
protected void onViewerUpdate() {
setViewer(ScrumGwt.createToHtmlItemsWidget(release.getAffectedByIssues()));
}
@Override
public String getTooltip() {
return getLocalizer().fields().releaseAffectedByIssues();
}
});
tb.addFieldRow("Fixed Issues", new AOutputViewEditWidget() {
@Override
protected void onViewerUpdate() {
setViewer(ScrumGwt.createToHtmlItemsWidget(release.getFixedIssues()));
}
@Override
public String getTooltip() {
return getLocalizer().fields().releaseFixedIssues();
}
});
tb.addFieldRow("Planned Issues", new AOutputViewEditWidget() {
@Override
protected void onViewerUpdate() {
setViewer(ScrumGwt.createToHtmlItemsWidget(release.getPlannedIssues()));
}
@Override
public String getTooltip() {
return getLocalizer().fields().releasePlannedIssues();
}
});
tb.addRow(new ChangeHistoryWidget(release), 2);
return TableBuilder.row(20, tb.createTable(), ScrumGwt.createEmoticonsAndComments(release));
}
}