org.biojava.bio.symbol
Class AbstractSymbol

java.lang.Object
  extended by org.biojava.utils.AbstractChangeable
      extended by org.biojava.bio.symbol.AbstractSymbol
All Implemented Interfaces:
Annotatable, Symbol, Changeable
Direct Known Subclasses:
FundamentalAtomicSymbol, SimpleAtomicSymbol

public abstract class AbstractSymbol
extends AbstractChangeable
implements Symbol

The base-class for Symbol implementations.

Since:
1.1
Author:
Matthew Pocock

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.biojava.bio.Annotatable
Annotatable.AnnotationForwarder
 
Field Summary
protected  ChangeForwarder annotationForwarder
           
 
Fields inherited from interface org.biojava.bio.Annotatable
ANNOTATION
 
Constructor Summary
AbstractSymbol()
           
 
Method Summary
protected  ChangeSupport getChangeSupport(ChangeType changeType)
          Called to retrieve the ChangeSupport for this object.
 String toString()
           
 
Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.biojava.bio.symbol.Symbol
getMatches, getName
 
Methods inherited from interface org.biojava.bio.Annotatable
getAnnotation
 
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
 

Field Detail

annotationForwarder

protected transient ChangeForwarder annotationForwarder
Constructor Detail

AbstractSymbol

public AbstractSymbol()
Method Detail

getChangeSupport

protected ChangeSupport getChangeSupport(ChangeType changeType)
Description copied from class: AbstractChangeable
Called to retrieve the ChangeSupport for this object.

Your implementation of this method should have the following structure:

 ChangeSupport cs = super.getChangeSupport(ct);

 if(someForwarder == null && ct.isMatching(SomeInterface.SomeChangeType)) {
   someForwarder = new ChangeForwarder(...

   this.stateVariable.addChangeListener(someForwarder, VariableInterface.AChange);
 }

 return cs;
 
It is usual for the forwarding listeners (someForwarder in this example) to be transient and lazily instantiated. Be sure to register & unregister the forwarder in the code that does the ChangeEvent handling in setter methods.

Overrides:
getChangeSupport in class AbstractChangeable

toString

public String toString()
Overrides:
toString in class Object