if ( ( _phylogeny == null ) || _phylogeny.isEmpty() ) {
return;
}
- int longest = 20;
+ int max_length = ForesterUtil.roundToInt( ( getSize().getWidth() - MOVE )
+ * Constants.EXT_NODE_INFO_LENGTH_MAX_RATIO );
+ if ( max_length < 40 ) {
+ max_length = 40;
+ }
+ int longest = 30;
for( final PhylogenyNode node : _phylogeny.getExternalNodes() ) {
int sum = 0;
if ( node.isCollapse() ) {
.asSimpleText()
+ " " );
}
+ if ( getControlPanel().isShowDomainArchitectures()
+ && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
+ sum += ( ( RenderableDomainArchitecture ) node.getNodeData().getSequence().getDomainArchitecture() )
+ .getRenderingSize().getWidth();
+ }
}
if ( node.getNodeData().isHasTaxonomy() ) {
final Taxonomy tax = node.getNodeData().getTaxonomy();
sum += getTreeFontSet()._fm_large.stringWidth( node.getNodeData().getBinaryCharacters()
.getGainedCharactersAsStringBuffer().toString() );
}
- if ( getControlPanel().isShowDomainArchitectures() && node.getNodeData().isHasSequence()
- && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
- sum += ( ( RenderableDomainArchitecture ) node.getNodeData().getSequence().getDomainArchitecture() )
- .getRenderingSize().getWidth();
- }
- if ( sum >= Constants.EXT_NODE_INFO_LENGTH_MAX ) {
- setLongestExtNodeInfo( Constants.EXT_NODE_INFO_LENGTH_MAX );
+ if ( sum >= max_length ) {
+ setLongestExtNodeInfo( max_length );
return;
}
if ( sum > longest ) {
longest = sum;
}
}
- if ( longest >= Constants.EXT_NODE_INFO_LENGTH_MAX ) {
- setLongestExtNodeInfo( Constants.EXT_NODE_INFO_LENGTH_MAX );
+ if ( longest >= max_length ) {
+ setLongestExtNodeInfo( max_length );
}
else {
setLongestExtNodeInfo( longest );
if ( !node.isExternal() && !node.isRoot() ) {
final boolean collapse = !node.isCollapse();
AptxUtil.collapseSubtree( node, collapse );
- updateSetOfCollapsedExternalNodes( _phylogeny );
+ updateSetOfCollapsedExternalNodes();
_phylogeny.recalculateNumberOfExternalDescendants( true );
resetNodeIdToDistToLeafMap();
calculateLongestExtNodeInfo();
}
setWaitCursor();
AptxUtil.collapseSpeciesSpecificSubtrees( _phylogeny );
- updateSetOfCollapsedExternalNodes( _phylogeny );
+ updateSetOfCollapsedExternalNodes();
_phylogeny.recalculateNumberOfExternalDescendants( true );
resetNodeIdToDistToLeafMap();
calculateLongestExtNodeInfo();
paintNodeBox( _root.getXcoord(), _root.getYcoord(), _root, g, to_pdf, to_graphics_file, isInFoundNodes( _root ) );
}
- void updateSetOfCollapsedExternalNodes( final Phylogeny phy ) {
+ void updateSetOfCollapsedExternalNodes() {
+ final Phylogeny phy = getPhylogeny();
_collapsed_external_nodeid_set.clear();
- E: for( final PhylogenyNodeIterator it = phy.iteratorExternalForward(); it.hasNext(); ) {
- final PhylogenyNode ext_node = it.next();
- PhylogenyNode n = ext_node;
- while ( !n.isRoot() ) {
- if ( n.isCollapse() ) {
- _collapsed_external_nodeid_set.add( ext_node.getId() );
- continue E;
- }
- n = n.getParent();
+ if ( phy != null ) {
+ E: for( final PhylogenyNodeIterator it = phy.iteratorExternalForward(); it.hasNext(); ) {
+ final PhylogenyNode ext_node = it.next();
+ PhylogenyNode n = ext_node;
+ while ( !n.isRoot() ) {
+ if ( n.isCollapse() ) {
+ _collapsed_external_nodeid_set.add( ext_node.getId() );
+ ext_node.setCollapse( true );
+ continue E;
+ }
+ n = n.getParent();
+ }
}
}
}