org.biojava.utils
Class ChangeForwarder

java.lang.Object
  extended byorg.biojava.utils.ChangeForwarder
All Implemented Interfaces:
ChangeListener, java.util.EventListener
Direct Known Subclasses:
AbstractSymbolList.EditScreener, Annotatable.AnnotationForwarder, Distribution.NullModelForwarder, MarkovModel.DistributionForwarder, MergeAnnotation.PropertyForwarder, OverlayAnnotation.PropertyForwarder, PairwiseSequenceRenderer.PairwiseRendererForwarder, SequenceDBWrapper.SequencesForwarder, SequenceRenderer.RendererForwarder

public class ChangeForwarder
extends java.lang.Object
implements ChangeListener

This is a ChangeListener that is designed to adapt events of one type from one source to events of another type emitted by another source. For example, you could adapt events made by edits in a database to being events fired by a sequence implementation.

Since:
1.1
Author:
Matthew Pocock

Nested Class Summary
 
Nested classes inherited from class org.biojava.utils.ChangeListener
ChangeListener.AlwaysVetoListener, ChangeListener.LoggingListener
 
Field Summary
 
Fields inherited from interface org.biojava.utils.ChangeListener
ALWAYS_VETO, LOG_TO_OUT
 
Constructor Summary
ChangeForwarder(java.lang.Object source, ChangeSupport changeSupport)
           
 
Method Summary
 ChangeSupport changeSupport()
          Return the underlying ChangeSupport instance that can be used to fire ChangeEvents and mannage listeners.
protected  ChangeEvent generateEvent(ChangeEvent ce)
           Return the new event to represent the originating event ce.
 java.lang.Object getSource()
          Retrieve the 'source' object for ChangeEvents fired by this forwarder.
 void postChange(ChangeEvent ce)
           Called when a change has just taken place.
 void preChange(ChangeEvent ce)
           Called before a change takes place.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ChangeForwarder

public ChangeForwarder(java.lang.Object source,
                       ChangeSupport changeSupport)
Method Detail

getSource

public java.lang.Object getSource()
Retrieve the 'source' object for ChangeEvents fired by this forwarder.

Returns:
the source Object

changeSupport

public ChangeSupport changeSupport()
Return the underlying ChangeSupport instance that can be used to fire ChangeEvents and mannage listeners.

Returns:
the ChangeSupport delegate

generateEvent

protected ChangeEvent generateEvent(ChangeEvent ce)
                             throws ChangeVetoException

Return the new event to represent the originating event ce.

The returned ChangeEvent is the event that will be fired, and should be built from information in the original event. If it is null, then no event will be fired.

The default implementation just constructs a ChangeEvent of the same type that chains back to ce.

Parameters:
ce - the originating ChangeEvent
Returns:
a new ChangeEvent to pass on, or null if no event should be sent
Throws:
ChangeVetoException - if for any reason this event can't be handled

preChange

public void preChange(ChangeEvent ce)
               throws ChangeVetoException
Description copied from interface: ChangeListener

Called before a change takes place.

This is your chance to stop the change by throwing a ChangeVetoException. This method does not indicate that the change will definitely take place, so it is not recomended that you take any positive action within this handler.

Specified by:
preChange in interface ChangeListener
Parameters:
ce - An event encapsulating the change which is about to take place.
Throws:
ChangeVetoException - Description of Exception

postChange

public void postChange(ChangeEvent ce)
Description copied from interface: ChangeListener

Called when a change has just taken place.

This method is the place to perform any behavior in response to the change event.

Specified by:
postChange in interface ChangeListener
Parameters:
ce - An event encapsulating the change which has occured.