package org.jbpm.gd.common.notation; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import org.jbpm.gd.common.model.SemanticElement; public class AbstractNotationElement implements NotationElement { private NotationElementFactory factory; private SemanticElement semanticElement; private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public void setFactory(NotationElementFactory factory) { this.factory = factory; } public NotationElementFactory getFactory() { return factory; } public void setSemanticElement(SemanticElement semanticElement) { this.semanticElement = semanticElement; } public SemanticElement getSemanticElement() { return semanticElement; } protected void firePropertyChange(String name, Object oldValue, Object newValue) { propertyChangeSupport.firePropertyChange(name, oldValue, newValue); } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } public void propertyChange(PropertyChangeEvent evt) { } public void register() { getFactory().register(this); } public void unregister() { getFactory().unregister(this); } public AbstractNotationElement getRegisteredNotationElementFor(SemanticElement semanticElement) { return getFactory().getRegisteredNotationElementFor(semanticElement); } }