X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FTreePanel.java;h=086fb1aaac3f1695ef03ba92a17968c364505748;hb=5602ecbddc5c6daef8683f5e682130c3b919d6d5;hp=fc2c074aeecd4dff78bba6e58bfafe1c1ce6afb6;hpb=ebc019e52cc784faa96c1360f23e0d4b8c12ecf5;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/TreePanel.java b/forester/java/src/org/forester/archaeopteryx/TreePanel.java index fc2c074..086fb1a 100644 --- a/forester/java/src/org/forester/archaeopteryx/TreePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/TreePanel.java @@ -92,8 +92,6 @@ import javax.swing.PopupFactory; import org.forester.archaeopteryx.ControlPanel.NodeClickAction; import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE; import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION; -import org.forester.archaeopteryx.Options.NodeFill; -import org.forester.archaeopteryx.Options.NodeShape; import org.forester.archaeopteryx.Options.PHYLOGENY_GRAPHICS_TYPE; import org.forester.archaeopteryx.phylogeny.data.RenderableDomainArchitecture; import org.forester.archaeopteryx.phylogeny.data.RenderableVector; @@ -107,6 +105,9 @@ import org.forester.phylogeny.data.Annotation; import org.forester.phylogeny.data.BranchColor; import org.forester.phylogeny.data.Confidence; import org.forester.phylogeny.data.Event; +import org.forester.phylogeny.data.NodeVisualization; +import org.forester.phylogeny.data.NodeVisualization.NodeFill; +import org.forester.phylogeny.data.NodeVisualization.NodeShape; import org.forester.phylogeny.data.PhylogenyData; import org.forester.phylogeny.data.PropertiesMap; import org.forester.phylogeny.data.Property; @@ -144,7 +145,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee private final static NumberFormat FORMATTER_CONFIDENCE; private final static NumberFormat FORMATTER_BRANCH_LENGTH; private final static int WIGGLE = 2; - private final int _half_box_size_plus_wiggle; private final static int LIMIT_FOR_HQ_RENDERING = 1000; private final static int CONFIDENCE_LEFT_MARGIN = 4; // TODO "rendering_hints" was static before. Need to make sure everything is OK with it not @@ -206,11 +206,11 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee final private static double _180_OVER_PI = 180.0 / Math.PI; private static final float ROUNDED_D = 8; private int _circ_max_depth; - private int _circ_num_ext_nodes; private PhylogenyNode _root; final private Arc2D _arc = new Arc2D.Double(); final private HashMap _urt_nodeid_angle_map = new HashMap(); final private HashMap _urt_nodeid_index_map = new HashMap(); + final private Set _collapsed_external_nodeid_set = new HashSet(); HashMap _nodeid_dist_to_leaf = new HashMap(); private AffineTransform _at; private double _max_distance_to_root = -1; @@ -218,8 +218,8 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee private boolean _edited = false; private Popup _node_desc_popup; private JTextArea _rollover_popup; - private final int _box_size; - private final int _half_box_size; + // private final int _box_size; + // private final int _half_box_size; //private final short _skip_counter = 0; private final StringBuffer _popup_buffer = new StringBuffer(); final private static Font POPUP_FONT = new Font( Configuration.getDefaultFontFamilyName(), @@ -268,9 +268,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee _configuration = configuration; _phylogeny = t; _phy_has_branch_lengths = ForesterUtil.isHasAtLeastOneBranchLengthLargerThanZero( _phylogeny ); - _box_size = tjp.getOptions().getDefaultNodeShapeSize(); - _half_box_size = tjp.getOptions().getDefaultNodeShapeSize() / 2; - _half_box_size_plus_wiggle = _half_box_size + WIGGLE; init(); // if ( !_phylogeny.isEmpty() ) { _phylogeny.recalculateNumberOfExternalDescendants( true ); @@ -694,6 +691,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee if ( !node.isExternal() && !node.isRoot() ) { final boolean collapse = !node.isCollapse(); Util.collapseSubtree( node, collapse ); + updateSetOfCollapsedExternalNodes( _phylogeny ); _phylogeny.recalculateNumberOfExternalDescendants( true ); resetNodeIdToDistToLeafMap(); calculateLongestExtNodeInfo(); @@ -711,6 +709,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } setWaitCursor(); Util.collapseSpeciesSpecificSubtrees( _phylogeny ); + updateSetOfCollapsedExternalNodes( _phylogeny ); _phylogeny.recalculateNumberOfExternalDescendants( true ); resetNodeIdToDistToLeafMap(); calculateLongestExtNodeInfo(); @@ -945,7 +944,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee g.fill( _rectangle ); } - //TODO FIXME final private void drawRectGradient( final double x, final double y, final double width, @@ -969,7 +967,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } } - //TODO FIXME final private void drawOvalGradient( final double x, final double y, final double width, @@ -1011,13 +1008,14 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee if ( ( _phylogeny == null ) || _phylogeny.isEmpty() ) { return null; } + final int half_box_size_plus_wiggle = getOptions().getDefaultNodeShapeSize() / 2 + WIGGLE; for( final PhylogenyNodeIterator iter = _phylogeny.iteratorPostorder(); iter.hasNext(); ) { final PhylogenyNode node = iter.next(); if ( ( _phylogeny.isRooted() || !node.isRoot() || ( node.getNumberOfDescendants() > 2 ) ) - && ( ( node.getXcoord() - _half_box_size_plus_wiggle ) <= x ) - && ( ( node.getXcoord() + _half_box_size_plus_wiggle ) >= x ) - && ( ( node.getYcoord() - _half_box_size_plus_wiggle ) <= y ) - && ( ( node.getYcoord() + _half_box_size_plus_wiggle ) >= y ) ) { + && ( ( node.getXcoord() - half_box_size_plus_wiggle ) <= x ) + && ( ( node.getXcoord() + half_box_size_plus_wiggle ) >= x ) + && ( ( node.getYcoord() - half_box_size_plus_wiggle ) <= y ) + && ( ( node.getYcoord() + half_box_size_plus_wiggle ) >= y ) ) { return node; } } @@ -2330,52 +2328,10 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee else { final float x2a = x2; final float x1a = x1; - // draw the vertical line - // boolean draw_horizontal = true; float y2_r = 0; if ( node.isFirstChildNode() || node.isLastChildNode() || ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.EURO_STYLE ) || ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.ROUNDED ) ) { - //boolean draw_vertical = true; - // final PhylogenyNode parent = node.getParent(); - //TODO fix below -- actually this might not be necessay anymore? test pdf, though! - // if ( ( ( ( getOptions().isShowDefaultNodeShapes() ) && !to_pdf && !to_graphics_file ) || ( ( getControlPanel() - // .isEvents() ) && ( parent != null ) && parent.isHasAssignedEvent() ) ) - // && ( _phylogeny.isRooted() || !( ( parent != null ) && parent.isRoot() ) ) - // && !( ( to_pdf || to_graphics_file ) && getOptions().isPrintBlackAndWhite() && !parent - // .isDuplication() ) ) { - // if ( ( getPhylogenyGraphicsType() != PHYLOGENY_GRAPHICS_TYPE.EURO_STYLE ) - // && ( getPhylogenyGraphicsType() != PHYLOGENY_GRAPHICS_TYPE.ROUNDED ) ) { - // if ( Math.abs( y2 - y1 ) <= _half_box_size ) { - // draw_vertical = false; - // } - // else { - // if ( y1 < y2 ) { - // y1 += _half_box_size; - // } - // else { - // if ( !to_pdf ) { - // y1 -= _half_box_size + 1; - // } - // else { - // y1 -= _half_box_size; - // } - // } - // } - // } - // if ( ( x2 - x1 ) <= _half_box_size ) { - // draw_horizontal = false; - // } - // else if ( !draw_vertical ) { - // x1a += _half_box_size; - // } - // if ( ( ( x2 - x1a ) > _half_box_size ) - // && !( ( to_pdf || to_graphics_file ) && getOptions().isPrintBlackAndWhite() && !node - // .isDuplication() ) ) { - // x2a -= _half_box_size; - // } - // } - //if ( draw_vertical ) { if ( !to_graphics_file && !to_pdf && ( ( ( y2 < getVisibleRect().getMinY() - 20 ) && ( y1 < getVisibleRect().getMinY() - 20 ) ) || ( ( y2 > getVisibleRect() @@ -2410,7 +2366,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee drawLine( x1, y1, x1, y2, g ); } } - //} } // draw the horizontal line if ( !to_graphics_file && !to_pdf @@ -2418,7 +2373,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee return; } float x1_r = 0; - // if ( draw_horizontal ) { if ( !getControlPanel().isWidthBranches() || ( PhylogenyMethods.getBranchWidthValue( node ) == 1 ) ) { if ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.ROUNDED ) { x1_r = x1a + ROUNDED_D; @@ -2454,7 +2408,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee drawRectFilled( x1a, y2 - ( w / 2 ), x2a - x1a, w, g ); } } - //} if ( ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.ROUNDED ) ) { if ( x1_r > x2a ) { x1_r = x2a; @@ -2469,9 +2422,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee g.draw( _arc ); } } - //TODO new ***** if ( node.isExternal() ) { - //TODO new ***** paintNodeBox( x2, y2, node, g, to_pdf, to_graphics_file, isInFoundNodes( node ) ); } } @@ -2484,7 +2435,8 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee final Graphics2D g, final boolean to_pdf, final boolean to_graphics_file ) { - _circ_num_ext_nodes = phy.getNumberOfExternalNodes(); + final int circ_num_ext_nodes = phy.getNumberOfExternalNodes() - _collapsed_external_nodeid_set.size(); + System.out.println( "# collapsed external = " + _collapsed_external_nodeid_set.size() ); _root = phy.getRoot(); _root.setXcoord( center_x ); _root.setYcoord( center_y ); @@ -2493,23 +2445,44 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee int i = 0; for( final PhylogenyNodeIterator it = phy.iteratorExternalForward(); it.hasNext(); ) { final PhylogenyNode n = it.next(); - n.setXcoord( ( float ) ( center_x + ( radius * Math.cos( current_angle ) ) ) ); - n.setYcoord( ( float ) ( center_y + ( radius * Math.sin( current_angle ) ) ) ); - _urt_nodeid_angle_map.put( n.getId(), current_angle ); - _urt_nodeid_index_map.put( n.getId(), i++ ); - current_angle += ( TWO_PI / _circ_num_ext_nodes ); + if ( !n.isCollapse() ) { + n.setXcoord( ( float ) ( center_x + ( radius * Math.cos( current_angle ) ) ) ); + n.setYcoord( ( float ) ( center_y + ( radius * Math.sin( current_angle ) ) ) ); + _urt_nodeid_angle_map.put( n.getId(), current_angle ); + _urt_nodeid_index_map.put( n.getId(), i++ ); + current_angle += ( TWO_PI / circ_num_ext_nodes ); + } + else { + //TODO remove me + System.out.println( "is collapse" + n.getName() ); + } } paintCirculars( phy.getRoot(), phy, center_x, center_y, radius, radial_labels, g, to_pdf, to_graphics_file ); paintNodeBox( _root.getXcoord(), _root.getYcoord(), _root, g, to_pdf, to_graphics_file, isInFoundNodes( _root ) ); } + private void updateSetOfCollapsedExternalNodes( final Phylogeny phy ) { + _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(); + } + } + } + final void paintCircularLite( final Phylogeny phy, final double starting_angle, final int center_x, final int center_y, final int radius, final Graphics2D g ) { - _circ_num_ext_nodes = phy.getNumberOfExternalNodes(); + final int circ_num_ext_nodes = phy.getNumberOfExternalNodes(); _root = phy.getRoot(); _root.setXSecondary( center_x ); _root.setYSecondary( center_y ); @@ -2519,7 +2492,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee n.setXSecondary( ( float ) ( center_x + radius * Math.cos( current_angle ) ) ); n.setYSecondary( ( float ) ( center_y + radius * Math.sin( current_angle ) ) ); _urt_nodeid_angle_map.put( n.getId(), current_angle ); - current_angle += ( TWO_PI / _circ_num_ext_nodes ); + current_angle += ( TWO_PI / circ_num_ext_nodes ); } paintCircularsLite( phy.getRoot(), phy, center_x, center_y, radius, g ); } @@ -2533,9 +2506,9 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee final Graphics2D g, final boolean to_pdf, final boolean to_graphics_file ) { - if ( n.isExternal() ) { + if ( n.isExternal() || n.isCollapse() ) { //~~circ collapse if ( !_urt_nodeid_angle_map.containsKey( n.getId() ) ) { - System.out.println( "no " + n + ", ERROR!" );//TODO + System.out.println( "no " + n + " =====>>>>>>> ERROR!" );//TODO } return _urt_nodeid_angle_map.get( n.getId() ); } @@ -2600,21 +2573,22 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee final boolean to_graphics_file, final boolean to_pdf, final boolean is_in_found_nodes ) { + Color c = null; if ( ( to_pdf || to_graphics_file ) && getOptions().isPrintBlackAndWhite() ) { - g.setColor( Color.BLACK ); + c = Color.BLACK; } else if ( is_in_found_nodes ) { - g.setColor( getTreeColorSet().getFoundColor() ); + c = getTreeColorSet().getFoundColor(); } else if ( getControlPanel().isColorAccordingToTaxonomy() ) { - g.setColor( getTaxonomyBasedColor( node ) ); + c = getTaxonomyBasedColor( node ); } else if ( getOptions().isColorLabelsSameAsParentBranch() && getControlPanel().isColorBranches() && ( PhylogenyMethods.getBranchColorValue( node ) != null ) ) { - g.setColor( PhylogenyMethods.getBranchColorValue( node ) ); + c = PhylogenyMethods.getBranchColorValue( node ); } else { - g.setColor( getTreeColorSet().getCollapseFillColor() ); + c = getTreeColorSet().getCollapseFillColor(); } double d = node.getAllExternalDescendants().size(); if ( d > 1000 ) { @@ -2623,17 +2597,34 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee else { d = ( Math.log10( d ) * _y_distance ) / 2.5; } - if ( d < _box_size ) { - d = _box_size; + final int box_size = getOptions().getDefaultNodeShapeSize(); + if ( d < box_size ) { + d = box_size; } _polygon.reset(); - _polygon.addPoint( ForesterUtil.roundToInt( node.getXcoord() - _box_size ), + _polygon.addPoint( ForesterUtil.roundToInt( node.getXcoord() - box_size ), ForesterUtil.roundToInt( node.getYcoord() ) ); - _polygon.addPoint( ForesterUtil.roundToInt( node.getXcoord() + _box_size ), + _polygon.addPoint( ForesterUtil.roundToInt( node.getXcoord() + box_size ), ForesterUtil.roundToInt( node.getYcoord() - d ) ); - _polygon.addPoint( ForesterUtil.roundToInt( node.getXcoord() + _box_size ), + _polygon.addPoint( ForesterUtil.roundToInt( node.getXcoord() + box_size ), ForesterUtil.roundToInt( node.getYcoord() + d ) ); - g.fillPolygon( _polygon ); + if ( getOptions().getDefaultNodeFill() == NodeVisualization.NodeFill.SOLID ) { + g.setColor( c ); + g.fillPolygon( _polygon ); + } + else if ( getOptions().getDefaultNodeFill() == NodeVisualization.NodeFill.NONE ) { + g.setColor( getBackground() ); + g.fillPolygon( _polygon ); + g.setColor( c ); + g.drawPolygon( _polygon ); + } + else if ( getOptions().getDefaultNodeFill() == NodeFill.GRADIENT ) { + g.setPaint( new GradientPaint( node.getXcoord() - box_size, node.getYcoord(), getBackground(), ( node + .getXcoord() + box_size ), ( float ) ( node.getYcoord() - d ), c, false ) ); + g.fill( _polygon ); + g.setPaint( c ); + g.draw( _polygon ); + } paintNodeData( g, node, to_graphics_file, to_pdf, is_in_found_nodes ); } @@ -2724,8 +2715,10 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } final private void paintFoundNode( final int x, final int y, final Graphics2D g ) { + final int box_size = getOptions().getDefaultNodeShapeSize(); + final int half_box_size = getOptions().getDefaultNodeShapeSize() / 2; g.setColor( getTreeColorSet().getFoundColor() ); - g.fillRect( x - _half_box_size, y - _half_box_size, _box_size, _box_size ); + g.fillRect( x - half_box_size, y - half_box_size, box_size, box_size ); } final private void paintGainedAndLostCharacters( final Graphics2D g, @@ -2803,77 +2796,71 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } else { outline_color = getGraphicsForNodeBoxWithColorForParentBranch( node ); - } - if ( ( ( getOptions().isShowDefaultNodeShapes() ) /*&& !to_pdf && !to_graphics_file*/) - || ( getControlPanel().isEvents() && node.isHasAssignedEvent() ) ) { - if ( to_pdf || to_graphics_file ) { - if ( node.isDuplication() || !getOptions().isPrintBlackAndWhite() ) { - //TODO FIXME - //drawOvalFilled( x - _half_box_size, y - _half_box_size, _box_size, _box_size, g ); - drawOvalGradient( x - _half_box_size, - y - _half_box_size, - _box_size, - _box_size, + if ( to_pdf && ( outline_color == getTreeColorSet().getBranchColor() ) ) { + outline_color = getTreeColorSet().getBranchColorForPdf(); + } + } + final int box_size = getOptions().getDefaultNodeShapeSize(); + final int half_box_size = box_size / 2; + if ( getOptions().isShowDefaultNodeShapes() || ( getControlPanel().isEvents() && node.isHasAssignedEvent() ) ) { + if ( getOptions().getDefaultNodeShape() == NodeShape.CIRCLE ) { + if ( getOptions().getDefaultNodeFill() == NodeFill.GRADIENT ) { + drawOvalGradient( x - half_box_size, + y - half_box_size, + box_size, + box_size, g, - outline_color, - getBackground(), + to_pdf ? Color.WHITE : outline_color, + to_pdf ? outline_color : getBackground(), outline_color ); } - } - else { - //TODO FIXME - //drawRectFilled( x - HALF_BOX_SIZE, y - HALF_BOX_SIZE, BOX_SIZE, BOX_SIZE, g ); - if ( getOptions().getDefaultNodeShape() == NodeShape.CIRCLE ) { - if ( getOptions().getDefaultNodeFill() == NodeFill.GRADIENT ) { - drawOvalGradient( x - _half_box_size, - y - _half_box_size, - _box_size, - _box_size, - g, - outline_color, - getBackground(), - outline_color ); - } - else if ( getOptions().getDefaultNodeFill() == NodeFill.NONE ) { - drawOvalGradient( x - _half_box_size, - y - _half_box_size, - _box_size, - _box_size, - g, - getBackground(), - getBackground(), - outline_color ); - } - else if ( getOptions().getDefaultNodeFill() == NodeFill.SOLID ) { - g.setColor( outline_color ); - drawOvalFilled( x - _half_box_size, y - _half_box_size, _box_size, _box_size, g ); + else if ( getOptions().getDefaultNodeFill() == NodeFill.NONE ) { + Color background = getBackground(); + if ( to_pdf ) { + background = Color.WHITE; } + drawOvalGradient( x - half_box_size, + y - half_box_size, + box_size, + box_size, + g, + background, + background, + outline_color ); } - else if ( getOptions().getDefaultNodeShape() == NodeShape.RECTANGLE ) { - if ( getOptions().getDefaultNodeFill() == NodeFill.GRADIENT ) { - drawRectGradient( x - _half_box_size, - y - _half_box_size, - _box_size, - _box_size, - g, - outline_color, - getBackground(), - outline_color ); - } - else if ( getOptions().getDefaultNodeFill() == NodeFill.NONE ) { - drawRectGradient( x - _half_box_size, - y - _half_box_size, - _box_size, - _box_size, - g, - getBackground(), - getBackground(), - outline_color ); - } - else if ( getOptions().getDefaultNodeFill() == NodeFill.SOLID ) { - g.setColor( outline_color ); - drawRectFilled( x - _half_box_size, y - _half_box_size, _box_size, _box_size, g ); + else if ( getOptions().getDefaultNodeFill() == NodeVisualization.NodeFill.SOLID ) { + g.setColor( outline_color ); + drawOvalFilled( x - half_box_size, y - half_box_size, box_size, box_size, g ); + } + } + else if ( getOptions().getDefaultNodeShape() == NodeVisualization.NodeShape.RECTANGLE ) { + if ( getOptions().getDefaultNodeFill() == NodeVisualization.NodeFill.GRADIENT ) { + drawRectGradient( x - half_box_size, + y - half_box_size, + box_size, + box_size, + g, + to_pdf ? Color.WHITE : outline_color, + to_pdf ? outline_color : getBackground(), + outline_color ); + } + else if ( getOptions().getDefaultNodeFill() == NodeVisualization.NodeFill.NONE ) { + Color background = getBackground(); + if ( to_pdf ) { + background = Color.WHITE; } + drawRectGradient( x - half_box_size, + y - half_box_size, + box_size, + box_size, + g, + background, + background, + outline_color ); + } + else if ( getOptions().getDefaultNodeFill() == NodeVisualization.NodeFill.SOLID ) { + g.setColor( outline_color ); + drawRectFilled( x - half_box_size, y - half_box_size, box_size, box_size, g ); } } } @@ -2898,13 +2885,14 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee return; } int x = 0; + final int half_box_size = getOptions().getDefaultNodeShapeSize() / 2; if ( getControlPanel().isShowTaxonomyImages() && ( getImageMap() != null ) && !getImageMap().isEmpty() && node.getNodeData().isHasTaxonomy() && ( ( node.getNodeData().getTaxonomy().getUris() != null ) && !node.getNodeData().getTaxonomy() .getUris().isEmpty() ) ) { - x += drawTaxonomyImage( node.getXcoord() + 2 + _half_box_size, node.getYcoord(), node, g ); + x += drawTaxonomyImage( node.getXcoord() + 2 + half_box_size, node.getYcoord(), node, g ); } if ( ( getControlPanel().isShowTaxonomyCode() || getControlPanel().isShowTaxonomyScientificNames() || getControlPanel() .isShowTaxonomyCommonNames() ) && node.getNodeData().isHasTaxonomy() ) { @@ -2973,7 +2961,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee if ( !node.isExternal() && ( node.getNumberOfDescendants() == 1 ) ) { down_shift_factor = 1; } - final double pos_x = node.getXcoord() + x + 2 + _half_box_size; + final double pos_x = node.getXcoord() + x + 2 + half_box_size; final double pos_y = ( node.getYcoord() + ( getTreeFontSet()._fm_large.getAscent() / down_shift_factor ) ); final String sb_str = _sb.toString(); // GUILHEM_BEG ______________ @@ -2998,7 +2986,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee && seqRelation.getType().equals( getControlPanel().getSequenceRelationTypeBox() .getSelectedItem() ); if ( fGotRelationWithQuery ) { // we will underline the text to show that this sequence is ortholog to the query - final double linePosX = node.getXcoord() + 2 + _half_box_size; + final double linePosX = node.getXcoord() + 2 + half_box_size; final String sConfidence = ( !getControlPanel().isShowSequenceRelationConfidence() || ( seqRelation .getConfidence() == null ) ) ? null : " (" + seqRelation.getConfidence().getValue() + ")"; @@ -3056,7 +3044,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee g.setColor( calculateColorForAnnotation( ann ) ); } final String ann_str = ann.asSimpleText().toString(); - TreePanel.drawString( ann_str, node.getXcoord() + x + 3 + _half_box_size, node.getYcoord() + TreePanel.drawString( ann_str, node.getXcoord() + x + 3 + half_box_size, node.getYcoord() + ( getTreeFontSet()._fm_large.getAscent() / down_shift_factor ), g ); _sb.setLength( 0 ); _sb.append( ann_str ); @@ -3077,7 +3065,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } if ( getControlPanel().isShowBinaryCharacters() ) { TreePanel.drawString( node.getNodeData().getBinaryCharacters().getPresentCharactersAsStringBuffer() - .toString(), node.getXcoord() + x + 1 + _half_box_size, node.getYcoord() + .toString(), node.getXcoord() + x + 1 + half_box_size, node.getYcoord() + ( getTreeFontSet()._fm_large.getAscent() / down_shift_factor ), g ); paintGainedAndLostCharacters( g, node, node.getNodeData().getBinaryCharacters() .getGainedCharactersAsStringBuffer().toString(), node.getNodeData().getBinaryCharacters() @@ -3096,12 +3084,12 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } final double mean = ForesterUtil.round( sum / count, 1 ); TreePanel.drawString( " " + node.getNodeData().getBinaryCharacters().getPresentCount() + " [" - + mean + "]", node.getXcoord() + x + 4 + _half_box_size, node.getYcoord() + + mean + "]", node.getXcoord() + x + 4 + half_box_size, node.getYcoord() + ( getTreeFontSet()._fm_large.getAscent() / down_shift_factor ), g ); } else { TreePanel.drawString( " " + node.getNodeData().getBinaryCharacters().getPresentCount(), - node.getXcoord() + x + 4 + _half_box_size, + node.getXcoord() + x + 4 + half_box_size, node.getYcoord() + ( getTreeFontSet()._fm_large.getAscent() / down_shift_factor ), g ); @@ -3432,9 +3420,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee child_node.setYcoord( y2 ); y2 += _y_distance * child_node.getNumberOfExternalNodes(); } - //TODO new ***** paintNodeBox( node.getXcoord(), node.getYcoord(), node, g, to_pdf, to_graphics_file, isInFoundNodes( node ) ); - //TODO new ***** } if ( dynamically_hide && !is_in_found_nodes @@ -3844,7 +3830,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee else { g.setColor( getTreeColorSet().getTaxonomyColor() ); } - final double start_x = node.getXcoord() + 3 + _half_box_size + x_shift; + final double start_x = node.getXcoord() + 3 + ( getOptions().getDefaultNodeShapeSize() / 2 ) + x_shift; final double start_y = node.getYcoord() + ( getTreeFontSet()._fm_large.getAscent() / ( node.getNumberOfDescendants() == 1 ? 1 : 3.0 ) ); _sb.setLength( 0 );