2.0f },
0f );
private static final double TWO_PI = 2 * Math.PI;
- private final static int WIGGLE = 2;
+ private final static int WIGGLE = 3;
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 int _clicked_x;
private int _circ_max_depth;
final private Set<Long> _collapsed_external_nodeid_set = new HashSet<Long>();
private JColorChooser _color_chooser = null;
private final FontRenderContext _frc = new FontRenderContext( null,
false,
false );
+ private float _furthest_node_x;
private PHYLOGENY_GRAPHICS_TYPE _graphics_type = PHYLOGENY_GRAPHICS_TYPE.RECTANGULAR;
private PhylogenyNode _highlight_node = null;
private boolean _in_ov = false;
private float _ov_y_distance = 0;
private int _ov_y_position = 0;
private int _ov_y_start = 0;
+ private boolean _partition_tree = false;
private final boolean _phy_has_branch_lengths;
private Phylogeny _phylogeny = null;
private final Path2D.Float _polygon = new Path2D.Float();
RenderingHints.VALUE_RENDER_DEFAULT );
private JTextArea _rollover_popup;
private PhylogenyNode _root;
+ private float _root_x;
private final StringBuilder _sb = new StringBuilder();
private double _scale_distance = 0.0;
private String _scale_label = null;
private Map<String, AttributedString> _attributed_string_map = null;
private int _depth_collapse_level = -1;
private int _rank_collapse_level = -1;
+
+
+
static {
final DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator( '.' );
ann.append( n.getName() );
ann.append( separator );
}
+ if ( n.getNodeData().isHasTaxonomy() ) {
+ if ( getControlPanel().isShowTaxonomyCode()
+ && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
+ ann.append( n.getNodeData().getTaxonomy().getTaxonomyCode() );
+ ann.append( separator );
+ }
+ if ( getControlPanel().isShowTaxonomyScientificNames()
+ && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) {
+ ann.append( n.getNodeData().getTaxonomy().getScientificName() );
+ ann.append( separator );
+ }
+ if ( getControlPanel().isShowTaxonomyCommonNames()
+ && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getCommonName() ) ) {
+ ann.append( n.getNodeData().getTaxonomy().getCommonName() );
+ ann.append( separator );
+ }
+ }
if ( getControlPanel().isShowSeqSymbols()
&& !ForesterUtil.isEmpty( n.getNodeData().getSequence().getSymbol() ) ) {
ann.append( n.getNodeData().getSequence().getSymbol() );
ann.append( n.getNodeData().getSequence().getAccession().asText() );
ann.append( separator );
}
- if ( n.getNodeData().isHasTaxonomy() ) {
- if ( getControlPanel().isShowTaxonomyCode()
- && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
- ann.append( n.getNodeData().getTaxonomy().getTaxonomyCode() );
- ann.append( separator );
- }
- if ( getControlPanel().isShowTaxonomyScientificNames()
- && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) {
- ann.append( n.getNodeData().getTaxonomy().getScientificName() );
- ann.append( separator );
- }
- if ( getControlPanel().isShowTaxonomyCommonNames()
- && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getCommonName() ) ) {
- ann.append( n.getNodeData().getTaxonomy().getCommonName() );
- ann.append( separator );
- }
- }
- String ann_str;
+
+ final String ann_str;
if ( ann.length() > 0 && ann.charAt( ann.length() - 1 ) == separator ) {
ann_str = ann.substring( 0, ann.length() - 1 );
}
}
boolean use_vis = false;
final Graphics2D g = ( Graphics2D ) getGraphics();
- if ( getControlPanel().isUseVisualStyles() ) {
+ if ( g != null && getControlPanel().isUseVisualStyles() ) {
use_vis = setFont( g, node, false );
}
if ( !use_vis ) {
* @param y
* @return pointer to the node at x,y, null if not found
*/
- final PhylogenyNode findNode( final int x, final int y ) {
+ public final PhylogenyNode findNode( final int x, final int y ) {
if ( ( _phylogeny == null ) || _phylogeny.isEmpty() ) {
return null;
}
return _domain_structure_e_value_thr_exp;
}
- final Set<Long> getFoundNodes0() {
+ public final Set<Long> getFoundNodes0() {
return _found_nodes_0;
}
- final Set<Long> getFoundNodes1() {
+ public final Set<Long> getFoundNodes1() {
return _found_nodes_1;
}
- List<PhylogenyNode> getFoundNodesAsListOfPhylogenyNodes() {
+ public List<PhylogenyNode> getFoundNodesAsListOfPhylogenyNodes() {
final List<PhylogenyNode> additional_nodes = new ArrayList<PhylogenyNode>();
if ( getFoundNodes0() != null ) {
for( final Long id : getFoundNodes0() ) {
return getTreeColorSet().getTaxonomyColor();
}
- final File getTreeFile() {
+ public final File getTreeFile() {
return _treefile;
}
}
}
else {
- // no node was clicked
+ // no node was clicked so partition tree instead
_highlight_node = null;
- }
+
+ _clicked_x = e.getX();
+ if (!getPhylogeny().isEmpty()) {
+ // should be calculated on each partition as the tree can theoretically
+ // change in the meantime
+ PhylogenyNode furthestNode = PhylogenyMethods.calculateNodeWithMaxDistanceToRoot( _phylogeny );
+ _furthest_node_x = furthestNode.getXcoord();
+ _root_x = _phylogeny.getRoot().getXcoord();
+
+ // don't bother if 0 distance tree or clicked x lies outside of tree
+ if (_furthest_node_x != _root_x && !(_clicked_x < _root_x || _clicked_x > _furthest_node_x))
+ {
+ _partition_tree = true;
+
+ }
+
+
}
+ }
+ }
repaint();
}
final int graphics_file_height,
final int graphics_file_x,
final int graphics_file_y ) {
+ if (_partition_tree) {
+// float threshold = (_clicked_x - _root_x) / (_furthest_node_x - _root_x);
+// drawLine( _clicked_x, 0, _clicked_x, getHeight(),g);
+
+ _partition_tree = false;
+ }
+
if ( ( _phylogeny == null ) || _phylogeny.isEmpty() ) {
return;
}
_current_external_nodes_data_buffer = sb;
}
- final void setFoundNodes0( final Set<Long> found_nodes ) {
+ public final void setFoundNodes0( final Set<Long> found_nodes ) {
_found_nodes_0 = found_nodes;
}
- final void setFoundNodes1( final Set<Long> found_nodes ) {
+ public final void setFoundNodes1( final Set<Long> found_nodes ) {
_found_nodes_1 = found_nodes;
}
getTreeFontSet().tinyFonts();
}
- final void setTreeFile( final File treefile ) {
+ public final void setTreeFile( final File treefile ) {
_treefile = treefile;
}