/* BookProcessor.java created 2008-02-28 * */ package org.signalml.domain.book; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Enumeration; import javax.swing.event.EventListenerList; /** BookProcessor * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class BookProcessor implements StandardBook, EventProducerBook, PropertyChangeListener, BookListener { protected StandardBook source; protected PropertyChangeSupport pcSupport; protected EventListenerList listenerList; public BookProcessor(StandardBook source) { pcSupport = new PropertyChangeSupport(this); listenerList = new EventListenerList(); this.source = source; if (source instanceof EventProducerBook) { EventProducerBook eventSource = (EventProducerBook) source; eventSource.addPropertyChangeListener(this); eventSource.addBookListener(this); } } @Override public void close() { if (source instanceof EventProducerBook) { EventProducerBook eventSource = (EventProducerBook) source; eventSource.removePropertyChangeListener(this); eventSource.removeBookListener(this); } } @Override public String getBookComment() { return source.getBookComment(); } @Override public float getCalibration() { return source.getCalibration(); } @Override public int getChannelCount() { return source.getChannelCount(); } @Override public String getChannelLabel(int channelIndex) { return source.getChannelLabel(channelIndex); } @Override public String getDate() { return source.getDate(); } @Override public int getDictionarySize() { return source.getDictionarySize(); } @Override public char getDictionaryType() { return source.getDictionaryType(); } @Override public float getEnergyPercent() { return source.getEnergyPercent(); } @Override public int getMaxIterationCount() { return source.getMaxIterationCount(); } @Override public Object getProperty(String name) throws IllegalArgumentException { return source.getProperty(name); } @Override public Enumeration<String> getPropertyNames() { return source.getPropertyNames(); } @Override public float getSamplingFrequency() { return source.getSamplingFrequency(); } @Override public StandardBookSegment[] getSegmentAt(int segmentIndex) { return source.getSegmentAt(segmentIndex); } @Override public StandardBookSegment getSegmentAt(int segmentIndex, int channelIndex) { return source.getSegmentAt(segmentIndex, channelIndex); } @Override public int getSegmentCount() { return source.getSegmentCount(); } @Override public int getSignalChannelCount() { return source.getChannelCount(); } @Override public String getTextInfo() { return source.getTextInfo(); } @Override public String getVersion() { return source.getVersion(); } @Override public String getWebSiteInfo() { return source.getWebSiteInfo(); } @Override public void addPropertyChangeListener(PropertyChangeListener listener) { pcSupport.addPropertyChangeListener(listener); } public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { pcSupport.addPropertyChangeListener(propertyName, listener); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { pcSupport.removePropertyChangeListener(listener); } public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { pcSupport.removePropertyChangeListener(propertyName, listener); } @Override public void addBookListener(BookListener listener) { listenerList.add(BookListener.class, listener); } @Override public void removeBookListener(BookListener listener) { listenerList.remove(BookListener.class, listener); } protected void onAnyBookEvent(BookEvent ev) { // do nothing } @Override public void atomAdded(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).atomAdded(ev); } } } @Override public void atomChanged(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).atomChanged(ev); } } } @Override public void atomRemoved(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).atomRemoved(ev); } } } @Override public void bookStructureChanged(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).bookStructureChanged(ev); } } } @Override public void segmentAdded(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).segmentAdded(ev); } } } @Override public void segmentAtomsChanged(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).segmentAtomsChanged(ev); } } } @Override public void segmentChanged(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).segmentChanged(ev); } } } @Override public void segmentRemoved(BookEvent ev) { onAnyBookEvent(ev); Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==BookListener.class) { ((BookListener)listeners[i+1]).segmentRemoved(ev); } } } @Override public void propertyChange(PropertyChangeEvent evt) { pcSupport.firePropertyChange(evt); } }