package com.ocpsoft.socialpm.gwt.client.local.view.component; import java.util.ArrayList; import java.util.List; import javax.enterprise.context.Dependent; import javax.enterprise.event.Observes; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.SpanElement; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.ocpsoft.socialpm.model.feed.ValidationCreated; import com.ocpsoft.socialpm.model.project.story.Story; import com.ocpsoft.socialpm.model.project.story.ValidationCriteria; @Dependent public class ValidationList extends Composite { interface ValidationListBinder extends UiBinder<Widget, ValidationList> { } private static ValidationListBinder binder = GWT.create(ValidationListBinder.class); @UiField UnorderedList list; @UiField SpanElement validationCount; @UiField NavLink newValidation; private List<ValidationCriteria> validations; private Story story; public ValidationList() { initWidget(binder.createAndBindUi(this)); } public void setValidations(List<ValidationCriteria> tasks) { list.clear(); this.validations = new ArrayList<ValidationCriteria>(); for (ValidationCriteria iter : tasks) { addValidationCriteria(iter); } validationCount.setInnerText(String.valueOf(tasks.size())); } public List<ValidationCriteria> getValidations() { return validations; } public void handleValidationCriteriaCreated(@Observes ValidationCreated event) { System.out.println("Observed task event: " + event.getValidation().getText()); if (this.story != null && this.story.equals(event.getStory())) { addValidationCriteria(event.getValidation()); } } private void addValidationCriteria(final ValidationCriteria validation) { validations.add(validation); ValidationBlock block = new ValidationBlock(validation); block.addStyleName("clickable"); list.add(block); block.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { System.out.println("clicked validation: " + validation); } }); validationCount.setInnerText(String.valueOf(validations.size())); } public void setStory(Story story) { this.story = story; newValidation.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { System.out.println("Clicked new task"); } }); } public NavLink getNewValidationCriteriaLink() { return newValidation; } }