Class PairwiseFilteringRenderer

  • All Implemented Interfaces:
    java.io.Serializable, PairwiseSequenceRenderer, Changeable

    public class PairwiseFilteringRenderer
    extends AbstractChangeable
    implements PairwiseSequenceRenderer, java.io.Serializable

    PairwiseFilteringRenderer wraps a PairwiseSequenceRenderer and filters the PairwiseRenderContexts passed to it. The renderer receives a new PairwiseRenderContext which has had both of its FeatureHolders filtered with the FeatureFilter.

    Instances of this class cache up to 5 of the derived PairwiseRenderContexts. Therefore cycling through up to 5 different FeatureFilters will only be hitting the cache rather than recalculating everthing. Should the FeatureHolders themselves change, the cache will be flushed. As only the features overlapping the context's range are filtered, changing the range will also result in re-filtering.

    Since:
    1.2
    Author:
    Keith James, Matthew Pocock
    See Also:
    Serialized Form
    • Field Detail

      • FILTER

        public static final ChangeType FILTER
        Constant FILTER indicating a change to the renderer's filter.
      • RECURSE

        public static final ChangeType RECURSE
        Constant RECURSE indicating a change to the renderer's filter recursion flag.
      • RENDERER

        public static final ChangeType RENDERER
        Constant RENDERER indicating a change to the renderer.
      • filter

        protected FeatureFilter filter
        filter is the filter applied to both FeatureHolders.
      • recurse

        protected boolean recurse
        recurse indicates whether the filter should recurse through any subfeatures.
    • Constructor Detail

      • PairwiseFilteringRenderer

        public PairwiseFilteringRenderer​(PairwiseSequenceRenderer renderer)
        Creates a new PairwiseFilteringRenderer which uses a filter which accepts all features.
        Parameters:
        renderer - a PairwiseSequenceRenderer.
      • PairwiseFilteringRenderer

        public PairwiseFilteringRenderer​(PairwiseSequenceRenderer renderer,
                                         FeatureFilter filter,
                                         boolean recurse)
        Creates a new PairwiseFilteringRenderer.
        Parameters:
        renderer - a PairwiseSequenceRenderer.
        filter - a FeatureFilter.
        recurse - a boolean.
    • Method Detail

      • getChangeSupport

        protected ChangeSupport getChangeSupport​(ChangeType ct)
        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
      • getRenderer

        public PairwiseSequenceRenderer getRenderer()
        getRenderer return the current renderer.
        Returns:
        a PairwiseSequenceRenderer.
      • getFilter

        public FeatureFilter getFilter()
        getFilter returns the current filter.
        Returns:
        a FeatureFilter.
      • getRecurse

        public boolean getRecurse()
        getRecurse returns the recursion flag of the filter.
        Returns:
        a boolean.
      • setRecurse

        public void setRecurse​(boolean recurse)
                        throws ChangeVetoException
        setRecurse sets the recursion flag on the filter.
        Parameters:
        recurse - a boolean.
        Throws:
        ChangeVetoException - if the change is vetoed.
      • paint

        public void paint​(java.awt.Graphics2D g2,
                          PairwiseRenderContext context)
        Description copied from interface: PairwiseSequenceRenderer
        paints some or all of the information about the sequence pair.
        Specified by:
        paint in interface PairwiseSequenceRenderer
        Parameters:
        g2 - a Graphics2D.
        context - a PairwiseRenderContext encapsulating the information to be displayed.
      • processMouseEvent

        public SequenceViewerEvent processMouseEvent​(PairwiseRenderContext context,
                                                     java.awt.event.MouseEvent me,
                                                     java.util.List path)
        Description copied from interface: PairwiseSequenceRenderer
        processMouseEvent produces a SequenceViewerEvent in response to a mouse gesture.
        Specified by:
        processMouseEvent in interface PairwiseSequenceRenderer
        Parameters:
        context - a PairwiseRenderContext.
        me - a MouseEvent that caused the request.
        path - a List of PairwiseSequenceRenderer instances passed through so far.
        Returns:
        a SequenceViewerEvent encapsulating the mouse gesture.
      • getSubContext

        protected PairwiseRenderContext getSubContext​(PairwiseRenderContext context)
        getSubContext creates a new context which has FeatureHolders filtered using the current filter.
        Parameters:
        context - a PairwiseRenderContext.
        Returns:
        a PairwiseRenderContext.