/* @VaadinAddonLicenseForJavaFiles@ */ package com.spaceapplications.vaadin.addon.eventtimeline.event; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Simple implementation of {@link TimelineEvent}. Has setters for all required fields and fires * events when this event is changed. */ public class BasicEvent implements TimelineEvent, TimelineEvent.EventChangeNotifier { private static final long serialVersionUID = 1L; private String eventId; private String caption; private String description; private Date end; private Date start; private String styleName; private List<EventChangeListener> listeners = new ArrayList<EventChangeListener>(); // property getters from interface public String getEventId() { return eventId; } public void setEventId(String eventId) { this.eventId = eventId; } /** * {@inheritDoc} */ public String getCaption() { return caption; } /** * {@inheritDoc} */ public String getDescription() { return description; } /** * {@inheritDoc} */ public Date getEnd() { return end; } /** * {@inheritDoc} */ public Date getStart() { return start; } /** * {@inheritDoc} */ public String getStyleName() { return styleName; } // setters for properties public void setCaption(String caption) { if (this.caption == null || !this.caption.equals(caption)) { this.caption = caption; fireEventChange(); } } public void setDescription(String description) { if (this.description == null || !this.description.equals(description)) { this.description = description; fireEventChange(); } } public void setEnd(Date end) { if (this.end == null || !this.end.equals(end)) { this.end = end; fireEventChange(); } } public void setStart(Date start) { if (this.start == null || !this.start.equals(start)) { this.start = start; fireEventChange(); } } public void setStyleName(String styleName) { if (this.styleName == null || !this.styleName.equals(styleName)) { this.styleName = styleName; fireEventChange(); } } /** * {@inheritDoc} */ public void addListener(EventChangeListener listener) { listeners.add(listener); } /** * {@inheritDoc} */ public void removeListener(EventChangeListener listener) { listeners.remove(listener); } protected void fireEventChange() { EventChange event = new EventChange(this); for (EventChangeListener listener : listeners) { listener.eventChange(event); } } }