X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FTreePanel.java;h=9e88db2c2b772bd782aebcdcb8fd04f1ce67f86b;hb=28cf1afacf61a15e72411b1e58c3694f78d6d0dd;hp=bb31d7efdf239b047fa02f14737ff3b4fe33d007;hpb=06b38f91bc061d8ab1dfea3b6238c94c95a30d26;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/TreePanel.java b/forester/java/src/org/forester/archaeopteryx/TreePanel.java index bb31d7e..9e88db2 100644 --- a/forester/java/src/org/forester/archaeopteryx/TreePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/TreePanel.java @@ -165,6 +165,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee 12 ); private static final float ROUNDED_D = 8; private final static long serialVersionUID = -978349745916505029L; + private static final BasicStroke STROKE_0025 = new BasicStroke( 0.025f ); private static final BasicStroke STROKE_005 = new BasicStroke( 0.05f ); private static final BasicStroke STROKE_01 = new BasicStroke( 0.1f ); private static final BasicStroke STROKE_025 = new BasicStroke( 0.25f ); @@ -1637,14 +1638,20 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee _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 ) ) { @@ -1988,16 +1995,13 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee 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(); @@ -2448,13 +2452,23 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee else { fc.setFont( getMainPanel().getTreeFontSet().getLargeFont() ); } - fc.showDialog( this, "Select Font" ); - if ( ( fc.getFont() != null ) && !ForesterUtil.isEmpty( fc.getFont().getFamily().trim() ) ) { - List nodes = new ArrayList(); - if ( ( getFoundNodes0() != null ) || ( getFoundNodes1() != null ) ) { - nodes = getFoundNodesAsListOfPhylogenyNodes(); - } + List nodes = new ArrayList(); + if ( ( getFoundNodes0() != null ) || ( getFoundNodes1() != null ) ) { + nodes = getFoundNodesAsListOfPhylogenyNodes(); + } + if ( !nodes.contains( node ) ) { nodes.add( node ); + } + final int count = nodes.size(); + String title = "Change the font for "; + if ( count == 1 ) { + title += "one node"; + } + else { + title += ( count + " nodes" ); + } + fc.showDialog( this, title ); + if ( ( fc.getFont() != null ) && !ForesterUtil.isEmpty( fc.getFont().getFamily().trim() ) ) { for( final PhylogenyNode n : nodes ) { if ( n.getNodeData().getNodeVisualData() == null ) { n.getNodeData().setNodeVisualData( new NodeVisualData() ); @@ -2476,9 +2490,37 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee getControlPanel().getUseVisualStylesCb().setSelected( true ); } } + setEdited( true ); repaint(); } + private void colorNodeFont( final PhylogenyNode node ) { + _color_chooser.setPreviewPanel( new JPanel() ); + NodeColorizationActionListener al; + int count = 1; + if ( ( getFoundNodes0() != null ) || ( getFoundNodes1() != null ) ) { + final List additional_nodes = getFoundNodesAsListOfPhylogenyNodes(); + al = new NodeColorizationActionListener( _color_chooser, node, additional_nodes ); + count = additional_nodes.size(); + if ( !additional_nodes.contains( node ) ) { + count++; + } + } + else { + al = new NodeColorizationActionListener( _color_chooser, node ); + } + String title = "Change the (node and font) color for "; + if ( count == 1 ) { + title += "one node"; + } + else { + title += ( count + " nodes" ); + } + final JDialog dialog = JColorChooser.createDialog( this, title, true, _color_chooser, al, null ); + setEdited( true ); + dialog.setVisible( true ); + } + final private void colorizeNodes( final Color c, final PhylogenyNode node, final List additional_nodes ) { @@ -2519,20 +2561,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee repaint(); } - private void colorNodeFont( final PhylogenyNode node ) { - _color_chooser.setPreviewPanel( new JPanel() ); - NodeColorizationActionListener al; - if ( ( getFoundNodes0() != null ) || ( getFoundNodes1() != null ) ) { - final List additional_nodes = getFoundNodesAsListOfPhylogenyNodes(); - al = new NodeColorizationActionListener( _color_chooser, node, additional_nodes ); - } - else { - al = new NodeColorizationActionListener( _color_chooser, node ); - } - final JDialog dialog = JColorChooser.createDialog( this, "Node colorization", true, _color_chooser, al, null ); - dialog.setVisible( true ); - } - final private void colorSubtree( final PhylogenyNode node ) { if ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED ) { JOptionPane.showMessageDialog( this, @@ -2552,6 +2580,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } final JDialog dialog = JColorChooser .createDialog( this, "Subtree colorization", true, _color_chooser, al, null ); + setEdited( true ); dialog.setVisible( true ); } @@ -4705,7 +4734,8 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee 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() ) ) { @@ -4731,7 +4761,6 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } 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 ) { @@ -4773,7 +4802,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee 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, @@ -5415,6 +5444,9 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } private final void setupStroke( final Graphics2D g ) { + if ( getYdistance() < 0.0001 ) { + g.setStroke( STROKE_0025 ); + } if ( getYdistance() < 0.001 ) { g.setStroke( STROKE_005 ); } @@ -5430,7 +5462,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee else if ( getYdistance() < 2 ) { g.setStroke( STROKE_075 ); } - else if ( getYdistance() < 20 ) { + else if ( ( getYdistance() < 20 ) || !getConfiguration().isAllowThickStrokes() ) { g.setStroke( STROKE_1 ); } else {