apollo.gui.genomemap
Class FeatureTierManager

java.lang.Object
  extended by apollo.gui.TierManager
      extended by apollo.gui.genomemap.DrawableTierManager
          extended by apollo.gui.genomemap.FeatureTierManager
All Implemented Interfaces:
PropSchemeChangeListener, ControlledObjectI, DrawableTierManagerI, FeatureTierManagerI, TierManagerI, java.io.Serializable, java.util.EventListener

public class FeatureTierManager
extends DrawableTierManager
implements FeatureTierManagerI, PropSchemeChangeListener

Extended from TierManager but still abstract (no layoutTiers methods) Implements FeatureTierManagerI which implements ControlledObjectI extends DrawableTierManager which extends TierManager which is where the ControlledObjectI methods are implemented.

See Also:
Serialized Form

Field Summary
protected  boolean debug
           
protected  java.awt.FontMetrics fm
           
protected  boolean textAvoidance
           
protected  Transformer textTransform
           
protected  java.util.Vector tier_properties
           
 
Fields inherited from class apollo.gui.genomemap.DrawableTierManager
drawables, logger, tierhash, transformer
 
Fields inherited from class apollo.gui.TierManager
aggregateSizeChange, charHeight, controller, offsetPixelHeight, tierManagerListeners, tiers, view, viewHeight, visibleLimits
 
Fields inherited from interface apollo.gui.TierManagerI
Y_PIXELS_PER_FEATURE
 
Constructor Summary
FeatureTierManager(Controller c)
           
 
Method Summary
protected  void _add(Drawable dsf, int tierInd, java.util.Vector newTiers)
           
protected  int _addWithAvoidance(Drawable dsf, int tierInd, java.util.Vector newTiers)
           
 boolean areAnyTiersLabeled()
           
 void changeTypeColor(FeatureView view, Selection f)
          Pop up the color chooser for the selected feature type
 void collapseTier(FeatureView fv, ApolloPanelI ap)
          The next few methods are used by TierPopupMenu and AnnotationMenu
 void collapseTier(java.lang.String tier_label)
           
protected  boolean drawableOverlaps(FeatureTier tier, Drawable dsf)
          This still doesn't really work.
 void editTypeSettings(FeatureView view, Selection f)
          Pop up the settings tab dialog for the selected feature type
 void expandTier(FeatureView fv, ApolloPanelI ap)
           
 void expandTier(java.lang.String type)
           
 void fillTiers()
          First calls installDrawables to add all the DSFs to tiers with sorting.
 java.util.Vector findTiersForTypes(FeatureView view, ApolloPanelI ap)
          Returns a Vector of Strings which are the labels of the TierProperties of the current selection.
 java.util.Vector getAllFeatures()
          This returns a Vector of all features.
 boolean getDebug()
           
 java.util.Vector getHiddenTiers()
           
 int getIndexForType(java.lang.String type)
           
protected  java.util.Vector getNextOverlap(java.util.Vector typeTiers, int typeTiersSize, int[] startInds, java.util.Vector[] typeTiersFeatures, int[] typeTiersSizes, java.util.Vector overlapEnds)
           
 int getTextEnd(Drawable dsf, int start)
           
 int getTextStart(Drawable dsf)
           
 java.util.Vector getTierProperties()
          This is actually for testing - doesnt otherwise need to be exposed to outside world
 Selection getViewSelection(Selection selection)
          For features that are instantiated as drawables the easiest way to find out if the view contains these is by rolling through the tiers and seeing if the selected item is present.
 boolean handlePropSchemeChangeEvent(PropSchemeChangeEvent evt)
           
 void hideLabelTier(FeatureView fv, ApolloPanelI ap)
           
 void hideLabelTier(java.lang.String type)
           
 void hideTier(FeatureView fv, ApolloPanelI ap)
           
 boolean isAvoidingTextOverlaps()
           
 boolean isExpanded(java.lang.String type)
           
 boolean isVisible(java.lang.String type)
           
 void moveTier(int from, int to)
          Tier movement is done by reordering the types array.
protected  java.util.Vector removeTextOverlapsFromSorted(java.util.Vector sortedTiers, TierProperty tp, int[] overlapEnds)
           
 void setController(Controller c)
          override the more general method in TierManager so that this manager is added as a listener
 void setDebug(boolean state)
           
 void setTextAvoidance(Transformer trans, java.awt.Graphics g)
           
 void setVisible(java.lang.String type, boolean state)
           
 void showLabelTier(FeatureView fv, ApolloPanelI ap)
           
 void showLabelTier(java.lang.String type)
           
protected  void sortOverlap(java.util.Vector newTiers, java.util.Vector overlap)
           
protected  java.util.Vector sortTierByScore(java.util.Vector oldTiers, TierProperty tp, java.util.Vector overlapEnds)
           
 java.util.Vector sortTiers()
          Sort tiers into FeatureType order
 void synchDrawablesWithTiers()
          This assigns all DrawableSeqFeatures with their appropriate tier index I added this functionality in FlexibleFeatureTierManager._add and _addWithAvoidance but it didnt seem to work - not sure why - but thats where this really belongs.
 java.lang.String toString()
           
 void unsetTextAvoidance()
           
 
Methods inherited from class apollo.gui.genomemap.DrawableTierManager
clearFeatures, getVisibleDrawables, populateTier, setDrawables, setTierData, setTransformer
 
Methods inherited from class apollo.gui.TierManager
addTierManagerListener, decrementTierHeight, doLayoutTiers, fireTierManagerEvent, fireTierManagerEvent, getAggregateSizeChange, getController, getControllerWindow, getLowestVisible, getMaximumVisibleTransformCoord, getMaxTierUserHeight, getMaxUserCoord, getMaxVisibleTierNumber, getMinimumVisibleTransformCoord, getNumTiers, getNumVisible, getTier, getTierLabel, getTiers, getTotalHeight, getView, getViewHeight, getVisibleUserCoord, getYRange, ignoreScoreThresholds, incrementTierHeight, needsAutoRemoval, setAggregateSizeChange, setCharHeight, setIgnoreScoreThresholds, setLowestVisible, setOffsetHeight, setView, setViewHeight, toTier, toUser, updateUserCoordBoundaries
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface apollo.gui.genomemap.FeatureTierManagerI
clearFeatures, getTierLabel
 
Methods inherited from interface apollo.gui.TierManagerI
decrementTierHeight, doLayoutTiers, fireTierManagerEvent, getAggregateSizeChange, getLowestVisible, getMaxTierUserHeight, getMaxUserCoord, getMaxVisibleTierNumber, getMinimumVisibleTransformCoord, getNumTiers, getNumVisible, getTier, getTiers, getTotalHeight, getView, getVisibleUserCoord, getYRange, incrementTierHeight, setAggregateSizeChange, setCharHeight, setIgnoreScoreThresholds, setLowestVisible, setTierData, setView, setViewHeight, toTier, toUser
 
Methods inherited from interface apollo.gui.ControlledObjectI
getController, getControllerWindow, needsAutoRemoval
 

Field Detail

tier_properties

protected java.util.Vector tier_properties

debug

protected boolean debug

textTransform

protected Transformer textTransform

fm

protected java.awt.FontMetrics fm

textAvoidance

protected boolean textAvoidance
Constructor Detail

FeatureTierManager

public FeatureTierManager(Controller c)
Method Detail

setController

public void setController(Controller c)
override the more general method in TierManager so that this manager is added as a listener

Specified by:
setController in interface ControlledObjectI
Overrides:
setController in class TierManager

isExpanded

public boolean isExpanded(java.lang.String type)

isVisible

public boolean isVisible(java.lang.String type)

getIndexForType

public int getIndexForType(java.lang.String type)

collapseTier

public void collapseTier(java.lang.String tier_label)
Specified by:
collapseTier in interface FeatureTierManagerI

expandTier

public void expandTier(java.lang.String type)
Specified by:
expandTier in interface FeatureTierManagerI

showLabelTier

public void showLabelTier(java.lang.String type)

hideLabelTier

public void hideLabelTier(java.lang.String type)

setVisible

public void setVisible(java.lang.String type,
                       boolean state)
Specified by:
setVisible in interface FeatureTierManagerI

getHiddenTiers

public java.util.Vector getHiddenTiers()
Specified by:
getHiddenTiers in interface FeatureTierManagerI

areAnyTiersLabeled

public boolean areAnyTiersLabeled()
Specified by:
areAnyTiersLabeled in interface FeatureTierManagerI

getAllFeatures

public java.util.Vector getAllFeatures()
This returns a Vector of all features. This has the side effect of assigning all DrawableSeqFeatures with their appropriate tier index


synchDrawablesWithTiers

public void synchDrawablesWithTiers()
This assigns all DrawableSeqFeatures with their appropriate tier index I added this functionality in FlexibleFeatureTierManager._add and _addWithAvoidance but it didnt seem to work - not sure why - but thats where this really belongs.

Specified by:
synchDrawablesWithTiers in interface FeatureTierManagerI

setDebug

public void setDebug(boolean state)

getDebug

public boolean getDebug()

handlePropSchemeChangeEvent

public boolean handlePropSchemeChangeEvent(PropSchemeChangeEvent evt)
Specified by:
handlePropSchemeChangeEvent in interface PropSchemeChangeListener

fillTiers

public void fillTiers()
First calls installDrawables to add all the DSFs to tiers with sorting. then deal with expanding the tiers

Overrides:
fillTiers in class DrawableTierManager

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

sortTiers

public java.util.Vector sortTiers()
Sort tiers into FeatureType order


_add

protected void _add(Drawable dsf,
                    int tierInd,
                    java.util.Vector newTiers)

sortTierByScore

protected java.util.Vector sortTierByScore(java.util.Vector oldTiers,
                                           TierProperty tp,
                                           java.util.Vector overlapEnds)

getNextOverlap

protected java.util.Vector getNextOverlap(java.util.Vector typeTiers,
                                          int typeTiersSize,
                                          int[] startInds,
                                          java.util.Vector[] typeTiersFeatures,
                                          int[] typeTiersSizes,
                                          java.util.Vector overlapEnds)

sortOverlap

protected void sortOverlap(java.util.Vector newTiers,
                           java.util.Vector overlap)

setTextAvoidance

public void setTextAvoidance(Transformer trans,
                             java.awt.Graphics g)
Specified by:
setTextAvoidance in interface FeatureTierManagerI

unsetTextAvoidance

public void unsetTextAvoidance()
Specified by:
unsetTextAvoidance in interface FeatureTierManagerI

isAvoidingTextOverlaps

public boolean isAvoidingTextOverlaps()
Specified by:
isAvoidingTextOverlaps in interface FeatureTierManagerI

getTextStart

public int getTextStart(Drawable dsf)

getTextEnd

public int getTextEnd(Drawable dsf,
                      int start)

removeTextOverlapsFromSorted

protected java.util.Vector removeTextOverlapsFromSorted(java.util.Vector sortedTiers,
                                                        TierProperty tp,
                                                        int[] overlapEnds)

drawableOverlaps

protected boolean drawableOverlaps(FeatureTier tier,
                                   Drawable dsf)
This still doesn't really work. It can detect overlaps in sequence space, but is not detecting overlaps in draw space. This means non-overlapping features on the sequence, that do overlap when drawn are still colliding


_addWithAvoidance

protected int _addWithAvoidance(Drawable dsf,
                                int tierInd,
                                java.util.Vector newTiers)

moveTier

public void moveTier(int from,
                     int to)
Tier movement is done by reordering the types array.


getViewSelection

public Selection getViewSelection(Selection selection)
For features that are instantiated as drawables the easiest way to find out if the view contains these is by rolling through the tiers and seeing if the selected item is present. It would be much nicer if sometime in the future we could register items so that for any given feature we could more quickly obtain the list of all views that are currently presenting this data.

Specified by:
getViewSelection in interface FeatureTierManagerI

collapseTier

public void collapseTier(FeatureView fv,
                         ApolloPanelI ap)
The next few methods are used by TierPopupMenu and AnnotationMenu


expandTier

public void expandTier(FeatureView fv,
                       ApolloPanelI ap)

showLabelTier

public void showLabelTier(FeatureView fv,
                          ApolloPanelI ap)

hideLabelTier

public void hideLabelTier(FeatureView fv,
                          ApolloPanelI ap)

hideTier

public void hideTier(FeatureView fv,
                     ApolloPanelI ap)

changeTypeColor

public void changeTypeColor(FeatureView view,
                            Selection f)
Pop up the color chooser for the selected feature type


editTypeSettings

public void editTypeSettings(FeatureView view,
                             Selection f)
Pop up the settings tab dialog for the selected feature type


findTiersForTypes

public java.util.Vector findTiersForTypes(FeatureView view,
                                          ApolloPanelI ap)
Returns a Vector of Strings which are the labels of the TierProperties of the current selection. Put in Selection?


getTierProperties

public java.util.Vector getTierProperties()
This is actually for testing - doesnt otherwise need to be exposed to outside world