- /* GUILHEM_END */
- TreePanel.drawString( label, start_x, start_y, g );
- if ( !using_visual_font && !is_in_found_nodes ) {
- return getFontMetricsForLargeDefaultFont().stringWidth( label );
- }
- return getFontMetrics( g.getFont() ).stringWidth( label );
- }
-
- final private void paintUnrooted( final PhylogenyNode n,
- final double low_angle,
- final double high_angle,
- final boolean radial_labels,
- final Graphics2D g,
- final boolean to_pdf,
- final boolean to_graphics_file ) {
- if ( n.isRoot() ) {
- n.setXcoord( getWidth() / 2 );
- n.setYcoord( getHeight() / 2 );
- }
- if ( n.isExternal() ) {
- paintNodeDataUnrootedCirc( g,
- n,
- to_pdf,
- to_graphics_file,
- radial_labels,
- ( high_angle + low_angle ) / 2,
- isInFoundNodes( n ) || isInCurrentExternalNodes( n ) );
- return;
- }
- final float num_enclosed = n.getNumberOfExternalNodes();
- final float x = n.getXcoord();
- final float y = n.getYcoord();
- double current_angle = low_angle;
- // final boolean n_below = n.getYcoord() < getVisibleRect().getMinY() - 20;
- // final boolean n_above = n.getYcoord() > getVisibleRect().getMaxY() + 20;
- // final boolean n_left = n.getXcoord() < getVisibleRect().getMinX() - 20;
- // final boolean n_right = n.getXcoord() > getVisibleRect().getMaxX() + 20;
- for( int i = 0; i < n.getNumberOfDescendants(); ++i ) {
- final PhylogenyNode desc = n.getChildNode( i );
- /// if ( ( ( n_below ) & ( desc.getYcoord() < getVisibleRect().getMinY() - 20 ) )
- // || ( ( n_above ) & ( desc.getYcoord() > getVisibleRect().getMaxY() + 20 ) )
- // || ( ( n_left ) & ( desc.getXcoord() < getVisibleRect().getMinX() - 20 ) )
- // || ( ( n_right ) & ( desc.getXcoord() > getVisibleRect().getMaxX() + 20 ) ) ) {
- // continue;
- // }
- //if ( ( desc.getYcoord() > n.getYcoord() ) && ( n.getYcoord() > getVisibleRect().getMaxY() - 20 ) ) {
- // continue;
- //}
- //if ( ( desc.getYcoord() < n.getYcoord() ) && ( n.getYcoord() < getVisibleRect().getMinY() + 20 ) ) {
- // continue;
- // }
- final int desc_num_enclosed = desc.getNumberOfExternalNodes();
- final double arc_size = ( desc_num_enclosed / num_enclosed ) * ( high_angle - low_angle );
- float length;
- if ( isPhyHasBranchLengths() && getControlPanel().isDrawPhylogram() ) {
- if ( desc.getDistanceToParent() < 0 ) {
- length = 0;
- }
- else {
- length = ( float ) ( desc.getDistanceToParent() * getUrtFactor() );
- }
- }
- else {
- length = getUrtFactor();
- }
- final double mid_angle = current_angle + ( arc_size / 2 );
- final float new_x = ( float ) ( x + ( Math.cos( mid_angle ) * length ) );
- final float new_y = ( float ) ( y + ( Math.sin( mid_angle ) * length ) );
- desc.setXcoord( new_x );
- desc.setYcoord( new_y );
- paintUnrooted( desc, current_angle, current_angle + arc_size, radial_labels, g, to_pdf, to_graphics_file );
- current_angle += arc_size;
- assignGraphicsForBranchWithColorForParentBranch( desc, false, g, to_pdf, to_graphics_file );
- drawLine( x, y, new_x, new_y, g );
- paintNodeBox( new_x, new_y, desc, g, to_pdf, to_graphics_file );
- }
- if ( n.isRoot() ) {
- paintNodeBox( n.getXcoord(), n.getYcoord(), n, g, to_pdf, to_graphics_file );
- }
- }
-
- final private void paintUnrootedLite( final PhylogenyNode n,
- final double low_angle,
- final double high_angle,
- final Graphics2D g,
- final float urt_ov_factor ) {
- if ( n.isRoot() ) {
- final int x_pos = ( int ) ( getVisibleRect().x + getOvXPosition() + ( getOvMaxWidth() / 2 ) );
- final int y_pos = ( int ) ( getVisibleRect().y + getOvYPosition() + ( getOvMaxHeight() / 2 ) );
- n.setXSecondary( x_pos );
- n.setYSecondary( y_pos );
- }
- if ( n.isExternal() ) {
- return;
- }
- final float num_enclosed = n.getNumberOfExternalNodes();
- final float x = n.getXSecondary();
- final float y = n.getYSecondary();
- double current_angle = low_angle;
- for( int i = 0; i < n.getNumberOfDescendants(); ++i ) {
- final PhylogenyNode desc = n.getChildNode( i );
- final int desc_num_enclosed = desc.getNumberOfExternalNodes();
- final double arc_size = ( desc_num_enclosed / num_enclosed ) * ( high_angle - low_angle );
- float length;
- if ( isPhyHasBranchLengths() && getControlPanel().isDrawPhylogram() ) {
- if ( desc.getDistanceToParent() < 0 ) {
- length = 0;
- }
- else {
- length = ( float ) ( desc.getDistanceToParent() * urt_ov_factor );
- }
- }
- else {
- length = urt_ov_factor;
- }
- final double mid_angle = current_angle + ( arc_size / 2 );
- final float new_x = ( float ) ( x + ( Math.cos( mid_angle ) * length ) );
- final float new_y = ( float ) ( y + ( Math.sin( mid_angle ) * length ) );
- desc.setXSecondary( new_x );
- desc.setYSecondary( new_y );
- if ( isInFoundNodes( desc ) || isInCurrentExternalNodes( desc ) ) {
- g.setColor( getColorForFoundNode( desc ) );
- drawRectFilled( desc.getXSecondary() - OVERVIEW_FOUND_NODE_BOX_SIZE_HALF,
- desc.getYSecondary() - OVERVIEW_FOUND_NODE_BOX_SIZE_HALF,
- OVERVIEW_FOUND_NODE_BOX_SIZE,
- OVERVIEW_FOUND_NODE_BOX_SIZE,
- g );
- g.setColor( getTreeColorSet().getOvColor() );
- }
- paintUnrootedLite( desc, current_angle, current_angle + arc_size, g, urt_ov_factor );
- current_angle += arc_size;
- drawLine( x, y, new_x, new_y, g );
- }
- }
-
- final private void pasteSubtree( final PhylogenyNode node ) {
- if ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED ) {
- errorMessageNoCutCopyPasteInUnrootedDisplay();
- return;
- }
- if ( ( getCutOrCopiedTree() == null ) || getCutOrCopiedTree().isEmpty() ) {
- JOptionPane.showMessageDialog( this,
- "No tree in buffer (need to copy or cut a subtree first)",
- "Attempt to paste with empty buffer",
- JOptionPane.ERROR_MESSAGE );
- return;
- }
- final String label = createASimpleTextRepresentationOfANode( getCutOrCopiedTree().getRoot() );
- final Object[] options = { "As sibling", "As descendant", "Cancel" };
- final int r = JOptionPane.showOptionDialog( this,
- "How to paste subtree" + label + "?",
- "Paste Subtree",
- JOptionPane.CLOSED_OPTION,
- JOptionPane.QUESTION_MESSAGE,
- null,
- options,
- options[ 2 ] );
- boolean paste_as_sibling = true;
- if ( r == 1 ) {
- paste_as_sibling = false;
- }
- else if ( r != 0 ) {
- return;
- }
- final Phylogeny buffer_phy = getCutOrCopiedTree().copy();
- buffer_phy.setAllNodesToNotCollapse();
- PhylogenyMethods.preOrderReId( buffer_phy );
- buffer_phy.setRooted( true );
- boolean need_to_show_whole = false;
- if ( paste_as_sibling ) {
- if ( node.isRoot() ) {
- JOptionPane.showMessageDialog( this,
- "Cannot paste sibling to root",
- "Attempt to paste sibling to root",
- JOptionPane.ERROR_MESSAGE );
- return;
- }
- buffer_phy.addAsSibling( node );
- }
- else {
- if ( ( node.getNumberOfExternalNodes() == 1 ) && node.isRoot() ) {
- need_to_show_whole = true;
- _phylogeny = buffer_phy;
- }
- else {
- buffer_phy.addAsChild( node );
- }
- }
- if ( getCopiedAndPastedNodes() == null ) {
- setCopiedAndPastedNodes( new HashSet<Long>() );
- }
- final List<PhylogenyNode> nodes = PhylogenyMethods.obtainAllNodesAsList( buffer_phy );
- final Set<Long> node_ids = new HashSet<Long>( nodes.size() );
- for( final PhylogenyNode n : nodes ) {
- node_ids.add( n.getId() );
- }
- node_ids.add( node.getId() );
- getCopiedAndPastedNodes().addAll( node_ids );
- setNodeInPreorderToNull();
- _phylogeny.externalNodesHaveChanged();
- _phylogeny.clearHashIdToNodeMap();
- _phylogeny.recalculateNumberOfExternalDescendants( true );
- resetNodeIdToDistToLeafMap();
- setEdited( true );
- if ( need_to_show_whole ) {
- getControlPanel().showWhole();
- }
- repaint();
- }
-
- private final StringBuffer propertiesToString( final PhylogenyNode node ) {
- final PropertiesMap properties = node.getNodeData().getProperties();
- final StringBuffer sb = new StringBuffer();
- boolean first = true;
- for( final String ref : properties.getPropertyRefs() ) {
- if ( first ) {
- first = false;
- }
- else {
- sb.append( " " );
- }
- final Property p = properties.getProperty( ref );
- sb.append( TreePanelUtil.getPartAfterColon( p.getRef() ) );
- sb.append( "=" );
- sb.append( p.getValue() );
- if ( !ForesterUtil.isEmpty( p.getUnit() ) ) {
- sb.append( TreePanelUtil.getPartAfterColon( p.getUnit() ) );
- }
- }
- return sb;
- }
-
- private void setColor( final Graphics2D g,
- final PhylogenyNode node,
- final boolean to_graphics_file,
- final boolean to_pdf,
- final boolean is_in_found_nodes,
- final Color default_color ) {
- if ( ( to_pdf || to_graphics_file ) && getOptions().isPrintBlackAndWhite() ) {
- g.setColor( Color.BLACK );
- }
- else if ( is_in_found_nodes ) {
- g.setColor( getColorForFoundNode( node ) );
- }
- else if ( getControlPanel().isUseVisualStyles() && ( node.getNodeData().getNodeVisualData() != null )
- && ( node.getNodeData().getNodeVisualData().getFontColor() != null ) ) {
- g.setColor( node.getNodeData().getNodeVisualData().getFontColor() );
- }
- else if ( getControlPanel().isColorAccordingToSequence() ) {
- g.setColor( getSequenceBasedColor( node ) );
- }
- else if ( getControlPanel().isColorAccordingToTaxonomy() ) {
- g.setColor( getTaxonomyBasedColor( node ) );
- }
- else if ( getControlPanel().isColorAccordingToAnnotation()
- && ( node.getNodeData().isHasSequence() && ( node.getNodeData().getSequence().getAnnotations() != null ) && ( !node
- .getNodeData().getSequence().getAnnotations().isEmpty() ) ) ) {
- g.setColor( calculateColorForAnnotation( node.getNodeData().getSequence().getAnnotations() ) );
- }
- else if ( getOptions().isColorLabelsSameAsParentBranch() && getControlPanel().isUseVisualStyles()
- && ( PhylogenyMethods.getBranchColorValue( node ) != null ) ) {
- g.setColor( PhylogenyMethods.getBranchColorValue( node ) );
- }
- else if ( to_pdf ) {
- g.setColor( Color.BLACK );
- }
- else {
- g.setColor( default_color );
- }
- }
-
- final private void setCopiedAndPastedNodes( final Set<Long> nodeIds ) {
- getMainPanel().setCopiedAndPastedNodes( nodeIds );
- }
-
- final private void setCutOrCopiedTree( final Phylogeny cut_or_copied_tree ) {
- getMainPanel().setCutOrCopiedTree( cut_or_copied_tree );
- }
-
- private boolean setFont( final Graphics2D g, final PhylogenyNode node, final boolean is_in_found_nodes ) {
- Font visual_font = null;
- if ( getControlPanel().isUseVisualStyles() && ( node.getNodeData().getNodeVisualData() != null ) ) {
- visual_font = node.getNodeData().getNodeVisualData().getFont();
- g.setFont( visual_font != null ? visual_font : getTreeFontSet().getLargeFont() );
- }
- else {
- g.setFont( getTreeFontSet().getLargeFont() );
- }
- if ( is_in_found_nodes ) {
- g.setFont( g.getFont().deriveFont( Font.BOLD ) );
- }
- return visual_font != null;
- }
-
- final private void setInOv( final boolean in_ov ) {
- _in_ov = in_ov;
- }
-
- final private void setOvMaxHeight( final float ov_max_height ) {
- _ov_max_height = ov_max_height;
- }
-
- final private void setOvMaxWidth( final float ov_max_width ) {
- _ov_max_width = ov_max_width;
- }
-
- final private void setOvXcorrectionFactor( final float f ) {
- _ov_x_correction_factor = f;
- }
-
- final private void setOvXDistance( final float ov_x_distance ) {
- _ov_x_distance = ov_x_distance;
- }
-
- final private void setOvXPosition( final int ov_x_position ) {
- _ov_x_position = ov_x_position;
- }
-
- final private void setOvYDistance( final float ov_y_distance ) {
- _ov_y_distance = ov_y_distance;
- }
-
- final private void setOvYPosition( final int ov_y_position ) {
- _ov_y_position = ov_y_position;
- }
-
- final private void setOvYStart( final int ov_y_start ) {
- _ov_y_start = ov_y_start;
- }
-
- final private void setScaleDistance( final double scale_distance ) {
- _scale_distance = scale_distance;
- }
-
- final private void setScaleLabel( final String scale_label ) {
- _scale_label = scale_label;
- }
-
- private final void setupStroke( final Graphics2D g ) {
- if ( getYdistance() < 0.0001 ) {
- g.setStroke( STROKE_0025 );
- }
- if ( getYdistance() < 0.001 ) {
- g.setStroke( STROKE_005 );
- }
- else if ( getYdistance() < 0.01 ) {
- g.setStroke( STROKE_01 );
- }
- else if ( getYdistance() < 0.5 ) {
- g.setStroke( STROKE_025 );
- }
- else if ( getYdistance() < 1 ) {
- g.setStroke( STROKE_05 );
- }
- else if ( getYdistance() < 2 ) {
- g.setStroke( STROKE_075 );
- }
- else if ( ( getYdistance() < 20 ) || !getConfiguration().isAllowThickStrokes() ) {
- g.setStroke( STROKE_1 );
- }
- else {
- g.setStroke( STROKE_2 );
- }
- }
-
- final private void setUpUrtFactor() {
- final int d = getVisibleRect().width < getVisibleRect().height ? getVisibleRect().width
- : getVisibleRect().height;
- if ( isPhyHasBranchLengths() && getControlPanel().isDrawPhylogram() ) {
- setUrtFactor( ( float ) ( d / ( 2 * getMaxDistanceToRoot() ) ) );
- }
- else {
- final int max_depth = _circ_max_depth;
- if ( max_depth > 0 ) {
- setUrtFactor( d / ( 2 * max_depth ) );
- }
- else {
- setUrtFactor( d / 2 );
- }
- }
- setUrtFactorOv( getUrtFactor() );
- }
-
- final private void setUrtFactor( final float urt_factor ) {
- _urt_factor = urt_factor;
- }
-
- final private void setUrtFactorOv( final float urt_factor_ov ) {
- _urt_factor_ov = urt_factor_ov;
- }
-
- private void showExtDescNodeData( final PhylogenyNode node ) {
- final List<String> data = new ArrayList<String>();
- final SortedMap<String,Integer> string_int_map = new TreeMap<String,Integer>();
-
-
- final List<PhylogenyNode> nodes = node.getAllExternalDescendants();
- if ( ( getFoundNodes0() != null ) || ( getFoundNodes1() != null ) ) {
- for( final PhylogenyNode n : getFoundNodesAsListOfPhylogenyNodes() ) {
- if ( !nodes.contains( n ) ) {
- nodes.add( n );
- }
- }
- }
- for( final PhylogenyNode n : nodes ) {
- switch ( getOptions().getExtDescNodeDataToReturn() ) {
- case NODE_NAME:
- if ( !ForesterUtil.isEmpty( n.getName() ) ) {
- data.add( n.getName() );
- }
- break;
- case SEQUENCE_NAME:
- if ( n.getNodeData().isHasSequence()
- && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getName() ) ) {
- data.add( n.getNodeData().getSequence().getName() );
- }
- break;
- case GENE_NAME:
- if ( n.getNodeData().isHasSequence()
- && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getGeneName() ) ) {
- data.add( n.getNodeData().getSequence().getGeneName() );
- }
- break;
- case SEQUENCE_SYMBOL:
- if ( n.getNodeData().isHasSequence()
- && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getSymbol() ) ) {
- data.add( n.getNodeData().getSequence().getSymbol() );
- }
- break;
- case SEQUENCE_MOL_SEQ:
- if ( n.getNodeData().isHasSequence()
- && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getMolecularSequence() ) ) {
- data.add( n.getNodeData().getSequence().getMolecularSequence() );
- }
- break;
- case SEQUENCE_MOL_SEQ_FASTA:
- final StringBuilder sb = new StringBuilder();
- if ( n.getNodeData().isHasSequence()
- && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getMolecularSequence() ) ) {
- final StringBuilder ann = new StringBuilder();
- if ( !ForesterUtil.isEmpty( n.getName() ) ) {
- ann.append( n.getName() );
- ann.append( "|" );
- }
- if ( !ForesterUtil.isEmpty( n.getNodeData().getSequence().getSymbol() ) ) {
- ann.append( "SYM=" );
- ann.append( n.getNodeData().getSequence().getSymbol() );
- ann.append( "|" );
- }
- if ( !ForesterUtil.isEmpty( n.getNodeData().getSequence().getName() ) ) {
- ann.append( "NAME=" );
- ann.append( n.getNodeData().getSequence().getName() );
- ann.append( "|" );
- }
- if ( !ForesterUtil.isEmpty( n.getNodeData().getSequence().getGeneName() ) ) {
- ann.append( "GN=" );
- ann.append( n.getNodeData().getSequence().getGeneName() );
- ann.append( "|" );
- }
- if ( n.getNodeData().getSequence().getAccession() != null ) {
- ann.append( "ACC=" );
- ann.append( n.getNodeData().getSequence().getAccession().asText() );
- ann.append( "|" );
- }
- if ( n.getNodeData().isHasTaxonomy() ) {
- if ( !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
- ann.append( "TAXID=" );
- ann.append( n.getNodeData().getTaxonomy().getTaxonomyCode() );
- ann.append( "|" );
- }
- if ( !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) {
- ann.append( "SN=" );
- ann.append( n.getNodeData().getTaxonomy().getScientificName() );
- ann.append( "|" );
- }
- }
- String ann_str;
- if ( ann.charAt( ann.length() - 1 ) == '|' ) {
- ann_str = ann.substring( 0, ann.length() - 1 );
- }
- else {
- ann_str = ann.toString();
- }
- sb.append( SequenceWriter.toFasta( ann_str, n.getNodeData().getSequence()
- .getMolecularSequence(), 60 ) );
- data.add( sb.toString() );
- }
- break;
- case SEQUENCE_ACC:
- if ( n.getNodeData().isHasSequence() && ( n.getNodeData().getSequence().getAccession() != null )
- && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getAccession().toString() ) ) {
- data.add( n.getNodeData().getSequence().getAccession().toString() );
- }
- break;
- case TAXONOMY_SCIENTIFIC_NAME:
- if ( n.getNodeData().isHasTaxonomy()
- && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) {
- data.add( n.getNodeData().getTaxonomy().getScientificName() );
- }
- break;
- case TAXONOMY_COMM0N_NAME:
- if ( n.getNodeData().isHasTaxonomy()
- && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getCommonName() ) ) {
- data.add( n.getNodeData().getTaxonomy().getCommonName() );
- }
- break;
- case TAXONOMY_CODE:
- if ( n.getNodeData().isHasTaxonomy()
- && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
- data.add( n.getNodeData().getTaxonomy().getTaxonomyCode() );
- }
- break;
- case DOMAINS:
- if ( n.getNodeData().isHasSequence()
- && n.getNodeData().getSequence().getDomainArchitecture() != null ) {
- final DomainArchitecture da = n.getNodeData().getSequence().getDomainArchitecture();
- for( int i = 0; i < da.getDomains().size(); ++i ) {
- final ProteinDomain d = da.getDomain( i );
- if ( d.getConfidence() < 1 ) {
- String dn = d.getName();
- if ( !string_int_map.containsKey( dn ) ) {
- string_int_map.put( dn, 1 );
- }
- else {
- string_int_map.put( dn, string_int_map.get( dn ) + 1 );
- }
-
- }
-
- }
- }
- break;
- case GO_ANNOTATIONS:
- if ( n.getNodeData().isHasSequence() ) {
- //TODO do something clever
- }
- break;
-
- case UNKNOWN:
- TreePanelUtil.showExtDescNodeDataUserSelectedHelper( getControlPanel(), n, data );
- break;
- default:
- throw new IllegalArgumentException( "unknown data element: "
- + getOptions().getExtDescNodeDataToReturn() );
- }
- } // for loop
- ///////////////////////////////////////////////////////
- //TODO remove me
- if ( string_int_map != null ) {
- for( final Object key : string_int_map.keySet() ) {
- System.out.print( key.toString() );
- System.out.print( ": " );
- System.out.print( string_int_map.get( key ).toString() );
- System.out.println();
- }
- }
- ///////////////////////////////////////////////////////
- final StringBuilder sb = new StringBuilder();
- final int size = TreePanelUtil.makeSB( data, getOptions(), sb );
- if ( ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.CONSOLE )
- || ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.BUFFER_ONLY ) ) {
- if ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.CONSOLE ) {
- System.out.println( sb );
- }
- if ( sb.length() < 1 ) {
- clearCurrentExternalNodesDataBuffer();
- }
- else {
- setCurrentExternalNodesDataBuffer( sb );
- }
- }
- else if ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.WINODW ) {
- if ( sb.length() < 1 ) {
- TreePanelUtil.showInformationMessage( this, "No Appropriate Data (" + obtainTitleForExtDescNodeData()
- + ")", "Descendants of selected node do not contain selected data" );
- clearCurrentExternalNodesDataBuffer();
- }
- else {
- setCurrentExternalNodesDataBuffer( sb );
- String title;
- if ( ( getFoundNodes0() != null ) && !getFoundNodes0().isEmpty() ) {
- title = ( getOptions().getExtDescNodeDataToReturn() == NODE_DATA.UNKNOWN ? "Data"
- : obtainTitleForExtDescNodeData() )
- + " for "
- + data.size()
- + " nodes, unique entries: "
- + size;
- }
- else {
- title = ( getOptions().getExtDescNodeDataToReturn() == NODE_DATA.UNKNOWN ? "Data"
- : obtainTitleForExtDescNodeData() )
- + " for "
- + data.size()
- + "/"
- + node.getNumberOfExternalNodes()
- + " external descendats of node "
- + node
- + ", unique entries: " + size;
- }
- final String s = sb.toString().trim();
- if ( getMainPanel().getMainFrame() == null ) {
- // Must be "E" applet version.
- final ArchaeopteryxE ae = ( ArchaeopteryxE ) ( ( MainPanelApplets ) getMainPanel() ).getApplet();
- ae.showTextFrame( s, title );
- }
- else {
- getMainPanel().getMainFrame().showTextFrame( s, title );
- }
- }
- }
- }
-
- final private void showNodeDataPopup( final MouseEvent e, final PhylogenyNode node ) {
- try {
- if ( ( node.getName().length() > 0 )
- || ( node.getNodeData().isHasTaxonomy() && !TreePanelUtil.isTaxonomyEmpty( node.getNodeData()
- .getTaxonomy() ) )
- || ( node.getNodeData().isHasSequence() && !TreePanelUtil.isSequenceEmpty( node.getNodeData()
- .getSequence() ) ) || ( node.getNodeData().isHasDate() )
- || ( node.getNodeData().isHasDistribution() ) || node.getBranchData().isHasConfidences() ) {
- _popup_buffer.setLength( 0 );
- short lines = 0;
- if ( node.getName().length() > 0 ) {
- lines++;
- _popup_buffer.append( node.getName() );
- }
- if ( node.getNodeData().isHasTaxonomy()
- && !TreePanelUtil.isTaxonomyEmpty( node.getNodeData().getTaxonomy() ) ) {
- lines++;
- boolean enc_data = false;
- final Taxonomy tax = node.getNodeData().getTaxonomy();
- if ( _popup_buffer.length() > 0 ) {
- _popup_buffer.append( "\n" );
- }
- if ( !ForesterUtil.isEmpty( tax.getTaxonomyCode() ) ) {
- _popup_buffer.append( "[" );
- _popup_buffer.append( tax.getTaxonomyCode() );
- _popup_buffer.append( "]" );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( tax.getScientificName() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " " );
- }
- _popup_buffer.append( tax.getScientificName() );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( tax.getCommonName() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " (" );
- }
- else {
- _popup_buffer.append( "(" );
- }
- _popup_buffer.append( tax.getCommonName() );
- _popup_buffer.append( ")" );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( tax.getAuthority() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " (" );
- }
- else {
- _popup_buffer.append( "(" );
- }
- _popup_buffer.append( tax.getAuthority() );
- _popup_buffer.append( ")" );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( tax.getRank() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " [" );
- }
- else {
- _popup_buffer.append( "[" );
- }
- _popup_buffer.append( tax.getRank() );
- _popup_buffer.append( "]" );
- enc_data = true;
- }
- if ( tax.getSynonyms().size() > 0 ) {
- if ( enc_data ) {
- _popup_buffer.append( " " );
- }
- _popup_buffer.append( "[" );
- int counter = 1;
- for( final String syn : tax.getSynonyms() ) {
- if ( !ForesterUtil.isEmpty( syn ) ) {
- enc_data = true;
- _popup_buffer.append( syn );
- if ( counter < tax.getSynonyms().size() ) {
- _popup_buffer.append( ", " );
- }
- }
- counter++;
- }
- _popup_buffer.append( "]" );
- }
- if ( !enc_data ) {
- if ( ( tax.getIdentifier() != null ) && !ForesterUtil.isEmpty( tax.getIdentifier().getValue() ) ) {
- if ( !ForesterUtil.isEmpty( tax.getIdentifier().getProvider() ) ) {
- _popup_buffer.append( "[" );
- _popup_buffer.append( tax.getIdentifier().getProvider() );
- _popup_buffer.append( "] " );
- }
- _popup_buffer.append( tax.getIdentifier().getValue() );
- }
- }
- }
- if ( node.getNodeData().isHasSequence()
- && !TreePanelUtil.isSequenceEmpty( node.getNodeData().getSequence() ) ) {
- lines++;
- boolean enc_data = false;
- if ( _popup_buffer.length() > 0 ) {
- _popup_buffer.append( "\n" );
- }
- final Sequence seq = node.getNodeData().getSequence();
- if ( seq.getAccession() != null ) {
- _popup_buffer.append( "[" );
- if ( !ForesterUtil.isEmpty( seq.getAccession().getSource() ) ) {
- _popup_buffer.append( seq.getAccession().getSource() );
- _popup_buffer.append( ":" );
- }
- _popup_buffer.append( seq.getAccession().getValue() );
- _popup_buffer.append( "]" );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( seq.getSymbol() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " [" );
- }
- else {
- _popup_buffer.append( "[" );
- }
- _popup_buffer.append( seq.getSymbol() );
- _popup_buffer.append( "]" );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( seq.getGeneName() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " [" );
- }
- else {
- _popup_buffer.append( "[" );
- }
- _popup_buffer.append( seq.getGeneName() );
- _popup_buffer.append( "]" );
- enc_data = true;
- }
- if ( !ForesterUtil.isEmpty( seq.getName() ) ) {
- if ( enc_data ) {
- _popup_buffer.append( " " );
- }
- _popup_buffer.append( seq.getName() );
- }
- }
- if ( node.getNodeData().isHasDate() ) {
- lines++;
- if ( _popup_buffer.length() > 0 ) {
- _popup_buffer.append( "\n" );
- }
- _popup_buffer.append( node.getNodeData().getDate().asSimpleText() );
- }
- if ( node.getNodeData().isHasDistribution() ) {
- lines++;
- if ( _popup_buffer.length() > 0 ) {
- _popup_buffer.append( "\n" );
- }
- _popup_buffer.append( node.getNodeData().getDistribution().asSimpleText() );
- }
- if ( node.getBranchData().isHasConfidences() ) {
- final List<Confidence> confs = node.getBranchData().getConfidences();
- for( final Confidence confidence : confs ) {
- lines++;
- if ( _popup_buffer.length() > 0 ) {
- _popup_buffer.append( "\n" );
- }
- if ( !ForesterUtil.isEmpty( confidence.getType() ) ) {
- _popup_buffer.append( "[" );
- _popup_buffer.append( confidence.getType() );
- _popup_buffer.append( "] " );
- }
- _popup_buffer
- .append( FORMATTER_CONFIDENCE.format( ForesterUtil.round( confidence.getValue(),
- getOptions()
- .getNumberOfDigitsAfterCommaForConfidenceValues() ) ) );
- if ( confidence.getStandardDeviation() != Confidence.CONFIDENCE_DEFAULT_VALUE ) {
- _popup_buffer.append( " (sd=" );
- _popup_buffer.append( FORMATTER_CONFIDENCE.format( ForesterUtil.round( confidence
- .getStandardDeviation(), getOptions()
- .getNumberOfDigitsAfterCommaForConfidenceValues() ) ) );
- _popup_buffer.append( ")" );
- }
- }
- }
- if ( node.getNodeData().isHasProperties() ) {
- final PropertiesMap properties = node.getNodeData().getProperties();
- for( final String ref : properties.getPropertyRefs() ) {
- _popup_buffer.append( "\n" );
- final Property p = properties.getProperty( ref );
- _popup_buffer.append( TreePanelUtil.getPartAfterColon( p.getRef() ) );
- _popup_buffer.append( "=" );
- _popup_buffer.append( p.getValue() );
- if ( !ForesterUtil.isEmpty( p.getUnit() ) ) {
- _popup_buffer.append( TreePanelUtil.getPartAfterColon( p.getUnit() ) );
- }
- }
- }
- if ( _popup_buffer.length() > 0 ) {
- if ( !getConfiguration().isUseNativeUI() ) {
- _rollover_popup
- .setBorder( BorderFactory.createLineBorder( getTreeColorSet().getBranchColor() ) );
- _rollover_popup.setBackground( getTreeColorSet().getBackgroundColor() );
- if ( isInFoundNodes0( node ) && !isInFoundNodes1( node ) ) {
- _rollover_popup.setForeground( getTreeColorSet().getFoundColor0() );
- }
- else if ( !isInFoundNodes0( node ) && isInFoundNodes1( node ) ) {
- _rollover_popup.setForeground( getTreeColorSet().getFoundColor1() );
- }
- else if ( isInFoundNodes0( node ) && isInFoundNodes1( node ) ) {
- _rollover_popup.setForeground( getTreeColorSet().getFoundColor0and1() );
- }
- else {
- _rollover_popup.setForeground( getTreeColorSet().getSequenceColor() );
- }
- }
- else {
- _rollover_popup.setBorder( BorderFactory.createLineBorder( Color.BLACK ) );
- }
- _rollover_popup.setText( _popup_buffer.toString() );
- _node_desc_popup = PopupFactory.getSharedInstance().getPopup( null,
- _rollover_popup,
- e.getLocationOnScreen().x + 10,
- e.getLocationOnScreen().y
- - ( lines * 20 ) );
- _node_desc_popup.show();
- }
- }