public final class TreePanel extends JPanel implements ActionListener, MouseWheelListener, Printable {
+ public final static boolean SPECIAL_DOMAIN_COLORING = true;
final static Cursor ARROW_CURSOR = Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR );
final static Cursor CUT_CURSOR = Cursor.getPredefinedCursor( Cursor.CROSSHAIR_CURSOR );
final static Cursor HAND_CURSOR = Cursor.getPredefinedCursor( Cursor.HAND_CURSOR );
}
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
&& ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) {
RenderableDomainArchitecture rds = null;
if ( !( node.getNodeData().getSequence().getDomainArchitecture() instanceof RenderableDomainArchitecture ) ) {
- rds = new RenderableDomainArchitecture( node.getNodeData().getSequence().getDomainArchitecture() );
+ 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 {
_nodes_in_preorder[ i++ ] = it.next();
}
}
- //final PhylogenyNodeIterator it;
- //for( it = _phylogeny.iteratorPreorder(); it.hasNext(); ) {
- // paintNodeRectangular( g, it.next(), to_pdf, getControlPanel().isDynamicallyHideData()
- // && ( dynamic_hiding_factor > 1 ), dynamic_hiding_factor, to_graphics_file );
- //}
+ final boolean disallow_shortcutting = ( dynamic_hiding_factor < 40 )
+ || getControlPanel().isUseVisualStyles() || getOptions().isShowDefaultNodeShapesForMarkedNodes()
+ || ( ( getFoundNodes0() != null ) && !getFoundNodes0().isEmpty() )
+ || ( ( getFoundNodes1() != null ) && !getFoundNodes1().isEmpty() )
+ || ( ( getCurrentExternalNodes() != null ) && !getCurrentExternalNodes().isEmpty() )
+ || to_graphics_file || to_pdf;
for( final PhylogenyNode element : _nodes_in_preorder ) {
- paintNodeRectangular( g, element, to_pdf, getControlPanel().isDynamicallyHideData()
- && ( dynamic_hiding_factor > 1 ), dynamic_hiding_factor, to_graphics_file );
+ paintNodeRectangular( g,
+ element,
+ to_pdf,
+ getControlPanel().isDynamicallyHideData() && ( dynamic_hiding_factor > 1 ),
+ dynamic_hiding_factor,
+ to_graphics_file,
+ disallow_shortcutting );
}
if ( getOptions().isShowScale() && getControlPanel().isDrawPhylogram() && ( getScaleDistance() > 0.0 ) ) {
if ( !( to_graphics_file || to_pdf ) ) {
final void sortDescendants( final PhylogenyNode node ) {
if ( !node.isExternal() ) {
- DESCENDANT_SORT_PRIORITY pri = DESCENDANT_SORT_PRIORITY.TAXONOMY;
- if ( ( !getControlPanel().isShowTaxonomyScientificNames() && !getControlPanel().isShowTaxonomyCode() && !getControlPanel()
- .isShowTaxonomyCommonNames() ) ) {
- if ( ( getControlPanel().isShowSequenceAcc() || getControlPanel().isShowSeqNames() || getControlPanel()
- .isShowSeqSymbols() ) ) {
- pri = DESCENDANT_SORT_PRIORITY.SEQUENCE;
- }
- else if ( getControlPanel().isShowNodeNames() ) {
- pri = DESCENDANT_SORT_PRIORITY.NODE_NAME;
- }
+ DESCENDANT_SORT_PRIORITY pri = DESCENDANT_SORT_PRIORITY.NODE_NAME;
+ if ( getControlPanel().isShowTaxonomyScientificNames() || getControlPanel().isShowTaxonomyCode() ) {
+ pri = DESCENDANT_SORT_PRIORITY.TAXONOMY;
+ }
+ else if ( getControlPanel().isShowSeqNames() || getControlPanel().isShowSeqSymbols()
+ || getControlPanel().isShowGeneNames() ) {
+ pri = DESCENDANT_SORT_PRIORITY.SEQUENCE;
}
PhylogenyMethods.sortNodeDescendents( node, pri );
setNodeInPreorderToNull();
getControlPanel().getUseVisualStylesCb().setSelected( true );
}
}
+ setEdited( true );
repaint();
}
al = new NodeColorizationActionListener( _color_chooser, node );
}
final JDialog dialog = JColorChooser.createDialog( this, "Node colorization", true, _color_chooser, al, null );
+ setEdited( true );
dialog.setVisible( true );
}
}
final JDialog dialog = JColorChooser
.createDialog( this, "Subtree colorization", true, _color_chooser, al, null );
+ setEdited( true );
dialog.setVisible( true );
}
if ( ( isInFoundNodes( node ) || isInCurrentExternalNodes( node ) )
|| ( getOptions().isShowDefaultNodeShapesExternal() && node.isExternal() )
|| ( getOptions().isShowDefaultNodeShapesInternal() && node.isInternal() )
+ || ( getOptions().isShowDefaultNodeShapesForMarkedNodes()
+ && ( node.getNodeData().getNodeVisualData() != null ) && ( !node.getNodeData()
+ .getNodeVisualData().isEmpty() ) )
|| ( getControlPanel().isUseVisualStyles() && ( ( node.getNodeData().getNodeVisualData() != null ) && ( ( node
.getNodeData().getNodeVisualData().getNodeColor() != null )
|| ( node.getNodeData().getNodeVisualData().getSize() != NodeVisualData.DEFAULT_SIZE )
final boolean to_pdf,
final boolean dynamically_hide,
final int dynamic_hiding_factor,
- final boolean to_graphics_file ) {
+ final boolean to_graphics_file,
+ final boolean disallow_shortcutting ) {
final boolean is_in_found_nodes = isInFoundNodes( node ) || isInCurrentExternalNodes( node );
if ( node.isCollapse() ) {
if ( ( !node.isRoot() && !node.getParent().isCollapse() ) ) {
}
float new_x = 0;
float new_x_min = Float.MAX_VALUE;
- final boolean disallow_shortcutting = ( dynamic_hiding_factor < 40 );
float min_dist = 1.5f;
if ( !disallow_shortcutting ) {
if ( dynamic_hiding_factor > 4000 ) {
final float diff_y = node.getYcoord() - y2;
final float diff_x = node.getXcoord() - new_x;
if ( disallow_shortcutting || ( diff_y > min_dist ) || ( diff_y < -min_dist ) || ( diff_x > min_dist )
- || ( diff_x < -min_dist ) || to_graphics_file || to_pdf ) {
+ || ( diff_x < -min_dist ) ) {
paintBranchRectangular( g,
node.getXcoord(),
new_x,