package scrum.client.journal;
import ilarkesto.core.scope.Scope;
import java.util.Collections;
import java.util.List;
import scrum.client.common.AScrumGwtEntity;
import scrum.client.common.AScrumWidget;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public class ChangeHistoryWidget extends AScrumWidget {
private AScrumGwtEntity parent;
private FlowPanel panel;
private ChangeHistoryManager changeHistoryManager;
private boolean active;
public ChangeHistoryWidget(AScrumGwtEntity parent) {
super();
this.parent = parent;
}
@Override
protected Widget onInitialization() {
changeHistoryManager = Scope.get().getComponent(ChangeHistoryManager.class);
panel = new FlowPanel();
return panel;
}
@Override
protected void onUpdate() {
if (!changeHistoryManager.isChangeHistoryActive(parent)) {
if (active) {
panel.clear();
panel.removeStyleName("ChangeHistoryWidget");
active = false;
}
return;
}
if (!active) {
panel.setStyleName("ChangeHistoryWidget");
active = true;
}
panel.clear();
List<Change> changes = changeHistoryManager.getChanges(parent);
if (changes.isEmpty()) {
panel.add(new Label("No change history available."));
} else {
Collections.sort(changes, Change.DATE_AND_TIME_COMPARATOR);
for (Change change : changes) {
panel.add(new ChangeWidget(change));
}
}
super.onUpdate();
}
}