import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION;
import org.forester.archaeopteryx.Options.PHYLOGENY_GRAPHICS_TYPE;
import org.forester.archaeopteryx.phylogeny.data.RenderableDomainArchitecture;
+import org.forester.archaeopteryx.phylogeny.data.RenderableMsaSequence;
import org.forester.archaeopteryx.phylogeny.data.RenderableVector;
import org.forester.archaeopteryx.tools.Blast;
import org.forester.archaeopteryx.tools.ImageLoader;
import org.forester.phylogeny.data.Annotation;
import org.forester.phylogeny.data.BranchColor;
import org.forester.phylogeny.data.Confidence;
+import org.forester.phylogeny.data.DomainArchitecture;
import org.forester.phylogeny.data.Event;
import org.forester.phylogeny.data.NodeData.NODE_DATA;
import org.forester.phylogeny.data.NodeVisualData;
private static final BasicStroke STROKE_2 = new BasicStroke( 2f );
private static final double TWO_PI = 2 * Math.PI;
private final static int WIGGLE = 2;
+ private static final String SHOW_ONLY_THIS_CONF_TYPE = null; //TODO remove me
HashMap<Long, Short> _nodeid_dist_to_leaf = new HashMap<Long, Short>();
final private Arc2D _arc = new Arc2D.Double();
private AffineTransform _at;
private float _last_drag_point_y = 0;
private final Line2D _line = new Line2D.Float();
private int _longest_ext_node_info = 0;
+ private PhylogenyNode _ext_node_with_longest_txt_info = null;
private MainPanel _main_panel = null;
private double _max_distance_to_root = -1;
private Popup _node_desc_popup;
private final StringBuilder _sb = new StringBuilder();
private double _scale_distance = 0.0;
private String _scale_label = null;
- // expression values menu:
private DescriptiveStatistics _statistics_for_vector_data;
private final Phylogeny[] _sub_phylogenies = new Phylogeny[ TreePanel.MAX_SUBTREES ];
private final PhylogenyNode[] _sub_phylogenies_temp_roots = new PhylogenyNode[ TreePanel.MAX_SUBTREES ];
private float _x_correction_factor = 0.0f;
private float _x_distance = 0.0f;
private float _y_distance = 0.0f;
+ private int _length_of_longest_text;
+ private int _longest_domain;
+ public final static boolean SPECIAL_DOMAIN_COLORING = true;
// private Image offscreenImage;
// private Graphics offscreenGraphics;
// private Dimension offscreenDimension;
calculateLongestExtNodeInfo();
if ( getOptions().isAllowFontSizeChange() ) {
if ( ( getLongestExtNodeInfo() > ( x * 0.6 ) )
- && ( getTreeFontSet().getLargeFont().getSize() > 2 + TreeFontSet.FONT_SIZE_CHANGE_STEP ) ) {
+ && ( getTreeFontSet().getLargeFont().getSize() > ( 2 + TreeFontSet.FONT_SIZE_CHANGE_STEP ) ) ) {
while ( ( getLongestExtNodeInfo() > ( x * 0.7 ) )
&& ( getTreeFontSet().getLargeFont().getSize() > 2 ) ) {
getMainPanel().getTreeFontSet().decreaseFontSize( getConfiguration().getMinBaseFontSize(),
}
else {
while ( ( getLongestExtNodeInfo() < ( x * 0.6 ) )
- && ( getTreeFontSet().getLargeFont().getSize() <= getTreeFontSet().getLargeFontMemory()
- .getSize() - TreeFontSet.FONT_SIZE_CHANGE_STEP ) ) {
+ && ( getTreeFontSet().getLargeFont().getSize() <= ( getTreeFontSet()
+ .getLargeFontMemory().getSize() - TreeFontSet.FONT_SIZE_CHANGE_STEP ) ) ) {
getMainPanel().getTreeFontSet().increaseFontSize();
calculateLongestExtNodeInfo();
}
}
}
+ _length_of_longest_text = calcLengthOfLongestText();
}
int ext_nodes = _phylogeny.getRoot().getNumberOfExternalNodes();
final int max_depth = PhylogenyMethods.calculateMaxDepth( _phylogeny );
max_length = 40;
}
int longest = 30;
+ int longest_txt = 0;
+ _longest_domain = 0;
+ PhylogenyNode longest_txt_node = _phylogeny.getFirstExternalNode();
for( final PhylogenyNode node : _phylogeny.getExternalNodes() ) {
int sum = 0;
if ( node.isCollapse() ) {
if ( node.getNodeData().isHasTaxonomy() ) {
nodeTaxonomyDataAsSB( node.getNodeData().getTaxonomy(), sb );
}
+ final int txt = sb.length();
+ if ( txt > longest_txt ) {
+ longest_txt = txt;
+ longest_txt_node = node;
+ }
boolean use_vis = false;
final Graphics2D g = ( Graphics2D ) getGraphics();
if ( getControlPanel().isUseVisualStyles() ) {
sum += getFontMetricsForLargeDefaultFont().stringWidth( node.getNodeData().getBinaryCharacters()
.getGainedCharactersAsStringBuffer().toString() );
}
+ if ( getControlPanel().isShowVectorData() && ( node.getNodeData().getVector() != null )
+ && ( node.getNodeData().getVector().size() > 0 ) ) {
+ if ( getConfiguration() != null ) {
+ sum += getConfiguration().getVectorDataWidth() + 10;
+ }
+ else {
+ sum += RenderableVector.VECTOR_DEFAULT_WIDTH + 10;
+ }
+ }
+ if ( getControlPanel().isShowDomainArchitectures() && node.getNodeData().isHasSequence()
+ && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
+ // FIXME
+ // TODO this might need some clean up
+ final DomainArchitecture d = node.getNodeData().getSequence().getDomainArchitecture();
+ sum += ( ( _domain_structure_width / ( ( RenderableDomainArchitecture ) d ).getOriginalSize()
+ .getWidth() ) * d.getTotalLength() ) + 10;
+ if ( d.getTotalLength() > _longest_domain ) {
+ _longest_domain = d.getTotalLength();
+ }
+ }
+ if ( getControlPanel().isShowMolSequences() && ( node.getNodeData().isHasSequence() )
+ && ( node.getNodeData().getSequence().isMolecularSequenceAligned() )
+ && ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getMolecularSequence() ) ) ) {
+ // FIXME
+ sum += RenderableMsaSequence.DEFAULT_WIDTH + 30;
+ }
if ( sum >= max_length ) {
- setLongestExtNodeInfo( max_length );
+ _longest_ext_node_info = max_length;
return;
}
if ( sum > longest ) {
longest = sum;
}
}
+ _ext_node_with_longest_txt_info = longest_txt_node;
if ( longest >= max_length ) {
- setLongestExtNodeInfo( max_length );
+ _longest_ext_node_info = max_length;
}
else {
- setLongestExtNodeInfo( longest );
+ _longest_ext_node_info = longest;
}
}
}
if ( c == null ) {
if ( !ForesterUtil.isEmpty( tax.getTaxonomyCode() ) ) {
- c = TreePanelUtil.calculateColorFromString( tax.getTaxonomyCode(), true );
+ c = AptxUtil.calculateColorFromString( tax.getTaxonomyCode(), true );
getControlPanel().getSpeciesColors().put( tax.getTaxonomyCode(), c );
}
else {
- c = TreePanelUtil.calculateColorFromString( tax.getScientificName(), true );
+ c = AptxUtil.calculateColorFromString( tax.getScientificName(), true );
getControlPanel().getSpeciesColors().put( tax.getScientificName(), c );
}
}
return c;
}
}
-
+
final Color calculateSequenceBasedColor( final Sequence seq ) {
- if ( ForesterUtil.isEmpty( seq.getName() ) ) {
- return getTreeColorSet().getSequenceColor();
- }
- Color c = null;
- final String seq_name = seq.getName();
- c = getControlPanel().getSequenceColors().get( seq_name );
- if ( c == null ) {
- c = TreePanelUtil.calculateColorFromString( seq_name, false );
- getControlPanel().getSequenceColors().put( seq_name, c );
- }
- return c;
+ if ( ForesterUtil.isEmpty( seq.getName() ) ) {
+ return getTreeColorSet().getSequenceColor();
+ }
+ Color c = null;
+ final String seq_name = seq.getName();
+ c = getControlPanel().getSequenceColors().get( seq_name );
+ if ( c == null ) {
+ c = AptxUtil.calculateColorFromString( seq_name, false );
+ getControlPanel().getSequenceColors().put( seq_name, c );
+ }
+ return c;
}
void checkForVectorProperties( final Phylogeny phy ) {
if ( _control_panel.getColorAccSpeciesCb() != null ) {
_control_panel.getColorAccSpeciesCb().setSelected( false );
}
-
_options.setColorLabelsSameAsParentBranch( true );
+ if ( getMainPanel().getMainFrame()._color_labels_same_as_parent_branch != null ) {
+ getMainPanel().getMainFrame()._color_labels_same_as_parent_branch.setSelected( true );
+ }
_control_panel.repaint();
}
setArrowCursor();
return _statistics_for_vector_data;
}
-
final Color getTaxonomyBasedColor( final PhylogenyNode node ) {
- if ( node.getNodeData().isHasTaxonomy() ) {
+ if ( node.isExternal() && node.getNodeData().isHasTaxonomy() ) {
return calculateTaxonomyBasedColor( node.getNodeData().getTaxonomy() );
}
// return non-colorized color
return getTreeColorSet().getTaxonomyColor();
}
-
final Color getSequenceBasedColor( final PhylogenyNode node ) {
if ( node.getNodeData().isHasSequence() ) {
// return non-colorized color
return getTreeColorSet().getSequenceColor();
}
-
- /**
- * @return pointer to colorset for tree drawing
- */
- final TreeColorSet getTreeColorSet() {
+ public final TreeColorSet getTreeColorSet() {
return getMainPanel().getTreeColorSet();
}
if ( ( _phylogeny == null ) || _phylogeny.isEmpty() ) {
return;
}
- double max_original_domain_structure_width = 0.0;
+ double _max_original_domain_structure_width = 0.0;
for( final PhylogenyNode node : _phylogeny.getExternalNodes() ) {
if ( node.getNodeData().isHasSequence()
&& ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
RenderableDomainArchitecture rds = null;
if ( !( node.getNodeData().getSequence().getDomainArchitecture() instanceof RenderableDomainArchitecture ) ) {
- rds = new RenderableDomainArchitecture( node.getNodeData().getSequence().getDomainArchitecture(),
- getConfiguration() );
+ if ( SPECIAL_DOMAIN_COLORING ) {
+ rds = new RenderableDomainArchitecture( node.getNodeData().getSequence()
+ .getDomainArchitecture(), node.getName() );
+ }
+ else {
+ rds = new RenderableDomainArchitecture( node.getNodeData().getSequence()
+ .getDomainArchitecture() );
+ }
node.getNodeData().getSequence().setDomainArchitecture( rds );
}
else {
}
if ( getControlPanel().isShowDomainArchitectures() ) {
final double dsw = rds.getOriginalSize().getWidth();
- if ( dsw > max_original_domain_structure_width ) {
- max_original_domain_structure_width = dsw;
+ if ( dsw > _max_original_domain_structure_width ) {
+ _max_original_domain_structure_width = dsw;
}
}
}
}
if ( getControlPanel().isShowDomainArchitectures() ) {
- final double ds_factor_width = _domain_structure_width / max_original_domain_structure_width;
+ final float ds_factor_width = ( float ) ( _domain_structure_width / _max_original_domain_structure_width );
for( final PhylogenyNode node : _phylogeny.getExternalNodes() ) {
if ( node.getNodeData().isHasSequence()
&& ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
_last_drag_point_y = y;
}
- final void setLongestExtNodeInfo( final int i ) {
- _longest_ext_node_info = i;
- }
-
final void setMediumFonts() {
getTreeFontSet().mediumFonts();
}
if ( !ForesterUtil.isEmpty( ann_str ) ) {
c = getControlPanel().getAnnotationColors().get( ann_str );
if ( c == null ) {
- c = TreePanelUtil.calculateColorFromString( ann_str, false );
+ c = AptxUtil.calculateColorFromString( ann_str, false );
getControlPanel().getAnnotationColors().put( ann_str, c );
}
if ( c == null ) {
}
}
}
-
return c;
}
final List<PhylogenyNode> additional_nodes = new ArrayList<PhylogenyNode>();
if ( getFoundNodes0() != null ) {
for( final Long id : getFoundNodes0() ) {
- additional_nodes.add( _phylogeny.getNode( id ) );
+ final PhylogenyNode n = _phylogeny.getNode( id );
+ if ( n != null ) {
+ additional_nodes.add( n );
+ }
}
}
if ( getFoundNodes1() != null ) {
for( final Long id : getFoundNodes1() ) {
if ( ( getFoundNodes0() == null ) || !getFoundNodes0().contains( id ) ) {
- additional_nodes.add( _phylogeny.getNode( id ) );
+ final PhylogenyNode n = _phylogeny.getNode( id );
+ if ( n != null ) {
+ additional_nodes.add( n );
+ }
}
}
}
}
private final void nodeDataAsSB( final PhylogenyNode node, final StringBuilder sb ) {
- if ( getControlPanel().isShowNodeNames() && ( node.getName().length() > 0 ) ) {
- if ( sb.length() > 0 ) {
- sb.append( " " );
- }
- sb.append( node.getName() );
- }
- if ( node.getNodeData().isHasSequence() ) {
- if ( getControlPanel().isShowSeqSymbols() && ( node.getNodeData().getSequence().getSymbol().length() > 0 ) ) {
+ if ( node != null ) {
+ if ( getControlPanel().isShowNodeNames() && ( !ForesterUtil.isEmpty( node.getName() ) ) ) {
if ( sb.length() > 0 ) {
sb.append( " " );
}
- sb.append( node.getNodeData().getSequence().getSymbol() );
+ sb.append( node.getName() );
}
- if ( getControlPanel().isShowGeneNames() && ( node.getNodeData().getSequence().getGeneName().length() > 0 ) ) {
- if ( sb.length() > 0 ) {
- sb.append( " " );
+ if ( node.getNodeData().isHasSequence() ) {
+ if ( getControlPanel().isShowSeqSymbols()
+ && ( node.getNodeData().getSequence().getSymbol().length() > 0 ) ) {
+ if ( sb.length() > 0 ) {
+ sb.append( " " );
+ }
+ sb.append( node.getNodeData().getSequence().getSymbol() );
}
- sb.append( node.getNodeData().getSequence().getGeneName() );
- }
- if ( getControlPanel().isShowSeqNames() && ( node.getNodeData().getSequence().getName().length() > 0 ) ) {
- if ( sb.length() > 0 ) {
- sb.append( " " );
+ if ( getControlPanel().isShowGeneNames()
+ && ( node.getNodeData().getSequence().getGeneName().length() > 0 ) ) {
+ if ( sb.length() > 0 ) {
+ sb.append( " " );
+ }
+ sb.append( node.getNodeData().getSequence().getGeneName() );
+ }
+ if ( getControlPanel().isShowSeqNames() && ( node.getNodeData().getSequence().getName().length() > 0 ) ) {
+ if ( sb.length() > 0 ) {
+ sb.append( " " );
+ }
+ sb.append( node.getNodeData().getSequence().getName() );
+ }
+ if ( getControlPanel().isShowSequenceAcc()
+ && ( node.getNodeData().getSequence().getAccession() != null ) ) {
+ if ( sb.length() > 0 ) {
+ sb.append( " " );
+ }
+ if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getAccession().getSource() ) ) {
+ sb.append( node.getNodeData().getSequence().getAccession().getSource() );
+ sb.append( ":" );
+ }
+ sb.append( node.getNodeData().getSequence().getAccession().getValue() );
}
- sb.append( node.getNodeData().getSequence().getName() );
}
- if ( getControlPanel().isShowSequenceAcc() && ( node.getNodeData().getSequence().getAccession() != null ) ) {
+ if ( getControlPanel().isShowProperties() && node.getNodeData().isHasProperties() ) {
if ( sb.length() > 0 ) {
sb.append( " " );
}
- if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getAccession().getSource() ) ) {
- sb.append( node.getNodeData().getSequence().getAccession().getSource() );
- sb.append( ":" );
- }
- sb.append( node.getNodeData().getSequence().getAccession().getValue() );
+ sb.append( propertiesToString( node ) );
}
}
- if ( getControlPanel().isShowProperties() && node.getNodeData().isHasProperties() ) {
- if ( sb.length() > 0 ) {
- sb.append( " " );
- }
- sb.append( propertiesToString( node ) );
- }
}
private final void nodeTaxonomyDataAsSB( final Taxonomy taxonomy, final StringBuilder sb ) {
d = box_size;
}
final float xx = node.getXcoord() - ( 2 * box_size );
- final float xxx = xx > node.getParent().getXcoord() + 1 ? xx : node.getParent().getXcoord() + 1;
+ final float xxx = xx > ( node.getParent().getXcoord() + 1 ) ? xx : node.getParent().getXcoord() + 1;
_polygon.reset();
_polygon.moveTo( xxx, node.getYcoord() );
_polygon.lineTo( node.getXcoord() + 1, node.getYcoord() - d );
Collections.sort( confidences );
final StringBuilder sb = new StringBuilder();
for( final Confidence confidence : confidences ) {
- final double value = confidence.getValue();
- if ( value != Confidence.CONFIDENCE_DEFAULT_VALUE ) {
- if ( value < getOptions().getMinConfidenceValue() ) {
- return;
- }
- if ( not_first ) {
- sb.append( "/" );
- }
- else {
- not_first = true;
- }
- sb.append( FORMATTER_CONFIDENCE.format( ForesterUtil.round( value, getOptions()
- .getNumberOfDigitsAfterCommaForConfidenceValues() ) ) );
- if ( getOptions().isShowConfidenceStddev() ) {
- if ( confidence.getStandardDeviation() != Confidence.CONFIDENCE_DEFAULT_VALUE ) {
- sb.append( "(" );
- sb.append( FORMATTER_CONFIDENCE.format( ForesterUtil.round( confidence.getStandardDeviation(),
- getOptions()
- .getNumberOfDigitsAfterCommaForConfidenceValues() ) ) );
- sb.append( ")" );
+ if ( ForesterUtil.isEmpty( SHOW_ONLY_THIS_CONF_TYPE )
+ || ( !ForesterUtil.isEmpty( confidence.getType() ) && confidence.getType()
+ .equalsIgnoreCase( SHOW_ONLY_THIS_CONF_TYPE ) ) ) {
+ final double value = confidence.getValue();
+ if ( value != Confidence.CONFIDENCE_DEFAULT_VALUE ) {
+ if ( value < getOptions().getMinConfidenceValue() ) {
+ return;
+ }
+ if ( not_first ) {
+ sb.append( "/" );
+ }
+ else {
+ not_first = true;
+ }
+ sb.append( FORMATTER_CONFIDENCE.format( ForesterUtil.round( value, getOptions()
+ .getNumberOfDigitsAfterCommaForConfidenceValues() ) ) );
+ if ( getOptions().isShowConfidenceStddev() ) {
+ if ( confidence.getStandardDeviation() != Confidence.CONFIDENCE_DEFAULT_VALUE ) {
+ sb.append( "(" );
+ sb.append( FORMATTER_CONFIDENCE.format( ForesterUtil.round( confidence
+ .getStandardDeviation(), getOptions()
+ .getNumberOfDigitsAfterCommaForConfidenceValues() ) ) );
+ sb.append( ")" );
+ }
}
}
}
if ( isNodeDataInvisible( node ) && !to_graphics_file && !to_pdf ) {
return 0;
}
- if ( getOptions().isShowBranchLengthValues()
+ if ( getControlPanel().isWriteBranchLengthValues()
&& ( ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR )
|| ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.ROUNDED ) || ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.EURO_STYLE ) )
&& ( !node.isRoot() ) && ( node.getDistanceToParent() != PhylogenyDataUtil.BRANCH_LENGTH_DEFAULT ) ) {
}
float new_x = 0;
float new_x_min = Float.MAX_VALUE;
- final boolean disallow_shortcutting = dynamic_hiding_factor < 40;
+ final boolean disallow_shortcutting = ( dynamic_hiding_factor < 40 );
float min_dist = 1.5f;
if ( !disallow_shortcutting ) {
- // System.out.println( dynamic_hiding_factor );
if ( dynamic_hiding_factor > 4000 ) {
min_dist = 4;
}
final PhylogenyNode node,
final boolean to_graphics_file,
final boolean to_pdf ) {
- if ( isNodeDataInvisible( node ) && !to_graphics_file ) {
+ if ( isNodeDataInvisible( node ) && !( to_graphics_file || to_pdf ) ) {
return;
}
if ( ( !getControlPanel().isShowInternalData() && !node.isExternal() ) ) {
return;
}
if ( getControlPanel().isShowDomainArchitectures() && node.getNodeData().isHasSequence()
- && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
+ && ( node.getNodeData().getSequence().getDomainArchitecture() != null )
+ && ( node.getNodeData().getSequence().getDomainArchitecture() instanceof RenderableDomainArchitecture ) ) {
RenderableDomainArchitecture rds = null;
- if ( node.getNodeData().getSequence().getDomainArchitecture() instanceof RenderableDomainArchitecture ) {
- try {
- rds = ( RenderableDomainArchitecture ) node.getNodeData().getSequence().getDomainArchitecture();
- }
- catch ( final ClassCastException cce ) {
- cce.printStackTrace();
+ try {
+ rds = ( RenderableDomainArchitecture ) node.getNodeData().getSequence().getDomainArchitecture();
+ }
+ catch ( final ClassCastException cce ) {
+ cce.printStackTrace();
+ }
+ if ( rds != null ) {
+ final int default_height = 7;
+ float y = getYdistance();
+ if ( getControlPanel().isDynamicallyHideData() ) {
+ y = getTreeFontSet().getFontMetricsLarge().getHeight();
+ }
+ final int h = y < default_height ? ForesterUtil.roundToInt( y ) : default_height;
+ rds.setRenderingHeight( h > 1 ? h : 2 );
+ if ( getControlPanel().isDrawPhylogram() ) {
+ if ( getOptions().isLineUpRendarableNodeData() ) {
+ if ( getOptions().isRightLineUpDomains() ) {
+ rds.render( ( float ) ( ( getMaxDistanceToRoot() * getXcorrectionFactor() )
+ + _length_of_longest_text + ( ( _longest_domain - rds.getTotalLength() ) * rds
+ .getRenderingFactorWidth() ) ), node.getYcoord() - ( h / 2.0f ), g, this, to_pdf );
+ }
+ else {
+ rds.render( ( float ) ( ( getMaxDistanceToRoot() * getXcorrectionFactor() ) + _length_of_longest_text ),
+ node.getYcoord() - ( h / 2.0f ),
+ g,
+ this,
+ to_pdf );
+ }
+ }
+ else {
+ rds.render( node.getXcoord() + x, node.getYcoord() - ( h / 2.0f ), g, this, to_pdf );
+ }
}
- if ( rds != null ) {
- rds.setRenderingHeight( 6 );
- rds.render( node.getXcoord() + x, node.getYcoord() - 3, g, this, to_pdf );
+ else {
+ if ( getOptions().isRightLineUpDomains() ) {
+ rds.render( ( ( getPhylogeny().getFirstExternalNode().getXcoord() + _length_of_longest_text ) - 20 )
+ + ( ( _longest_domain - rds.getTotalLength() ) * rds
+ .getRenderingFactorWidth() ),
+ node.getYcoord() - ( h / 2.0f ),
+ g,
+ this,
+ to_pdf );
+ }
+ else {
+ rds.render( getPhylogeny().getFirstExternalNode().getXcoord() + _length_of_longest_text,
+ node.getYcoord() - ( h / 2.0f ),
+ g,
+ this,
+ to_pdf );
+ }
}
}
}
- //////////////
if ( getControlPanel().isShowVectorData() && ( node.getNodeData().getVector() != null )
&& ( node.getNodeData().getVector().size() > 0 ) && ( getStatisticsForExpressionValues() != null ) ) {
final RenderableVector rv = RenderableVector.createInstance( node.getNodeData().getVector(),
getStatisticsForExpressionValues(),
getConfiguration() );
if ( rv != null ) {
- int xx = 0;
- PhylogenyNode my_node = node;
- if ( !getControlPanel().isDrawPhylogram() ) {
- my_node = getPhylogeny().getFirstExternalNode();
+ double domain_add = 0;
+ if ( getControlPanel().isShowDomainArchitectures() && node.getNodeData().isHasSequence()
+ && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
+ domain_add = _domain_structure_width + 10;
}
- if ( getControlPanel().isShowTaxonomyCode() && ( PhylogenyMethods.getSpecies( my_node ).length() > 0 ) ) {
- xx += getFontMetricsForLargeDefaultFont()
- .stringWidth( PhylogenyMethods.getSpecies( my_node ) + " " );
+ if ( getControlPanel().isDrawPhylogram() ) {
+ rv.render( ( float ) ( node.getXcoord() + x + domain_add ), node.getYcoord() - 3, g, this, to_pdf );
}
- if ( getControlPanel().isShowNodeNames() && ( my_node.getName().length() > 0 ) ) {
- xx += getFontMetricsForLargeDefaultFont().stringWidth( my_node.getName() + " " );
+ else {
+ rv.render( ( float ) ( getPhylogeny().getFirstExternalNode().getXcoord() + _length_of_longest_text + domain_add ),
+ node.getYcoord() - 3,
+ g,
+ this,
+ to_pdf );
+ }
+ }
+ }
+ if ( getControlPanel().isShowMolSequences() && ( node.getNodeData().isHasSequence() )
+ && ( node.getNodeData().getSequence().isMolecularSequenceAligned() )
+ && ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getMolecularSequence() ) ) ) {
+ final RenderableMsaSequence rs = RenderableMsaSequence.createInstance( node.getNodeData().getSequence()
+ .getMolecularSequence(), node.getNodeData().getSequence().getType(), getConfiguration() );
+ if ( rs != null ) {
+ final int default_height = 7;
+ float y = getYdistance();
+ if ( getControlPanel().isDynamicallyHideData() ) {
+ y = getTreeFontSet().getFontMetricsLarge().getHeight();
+ }
+ final int h = y < default_height ? ForesterUtil.roundToInt( y ) : default_height;
+ rs.setRenderingHeight( h > 1 ? h : 2 );
+ if ( getControlPanel().isDrawPhylogram() ) {
+ rs.render( ( float ) ( ( getMaxDistanceToRoot() * getXcorrectionFactor() ) + _length_of_longest_text ),
+ node.getYcoord() - ( h / 2.0f ),
+ g,
+ this,
+ to_pdf );
+ }
+ else {
+ rs.render( getPhylogeny().getFirstExternalNode().getXcoord() + _length_of_longest_text,
+ node.getYcoord() - ( h / 2.0f ),
+ g,
+ this,
+ to_pdf );
}
- rv.render( my_node.getXcoord() + xx, node.getYcoord() - 5, g, this, to_pdf );
}
}
- //////////////
+ }
+
+ final private int calcLengthOfLongestText() {
+ final StringBuilder sb = new StringBuilder();
+ if ( _ext_node_with_longest_txt_info != null ) {
+ nodeDataAsSB( _ext_node_with_longest_txt_info, sb );
+ if ( _ext_node_with_longest_txt_info.getNodeData().isHasTaxonomy() ) {
+ nodeTaxonomyDataAsSB( _ext_node_with_longest_txt_info.getNodeData().getTaxonomy(), sb );
+ }
+ }
+ return getFontMetricsForLargeDefaultFont().stringWidth( sb.toString() );
}
final private void paintOvRectangle( final Graphics2D g ) {