X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FNodePanel.java;h=c7a9ce815d3f0bcbe7f9d91519af5f09b8bf2618;hb=bfc7a76aa65c3fafda5602bfff43b3e3222a04f7;hp=ff6e275fb70a4d0c0caad8b5a8b8534e8583c348;hpb=ccf4c584032d16ed0ed8d0678f01305887724f96;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/NodePanel.java b/forester/java/src/org/forester/archaeopteryx/NodePanel.java index ff6e275..c7a9ce8 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/NodePanel.java @@ -5,7 +5,7 @@ // Copyright (C) 2008-2009 Christian M. Zmasek // Copyright (C) 2008-2009 Burnham Institute for Medical Research // All rights reserved -// +// // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either @@ -15,7 +15,7 @@ // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. -// +// // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA @@ -25,6 +25,7 @@ package org.forester.archaeopteryx; +import java.awt.Color; import java.util.List; import java.util.SortedMap; import java.util.SortedSet; @@ -44,10 +45,12 @@ import org.forester.phylogeny.PhylogenyMethods; import org.forester.phylogeny.PhylogenyNode; import org.forester.phylogeny.data.Annotation; import org.forester.phylogeny.data.BinaryCharacters; +import org.forester.phylogeny.data.BranchWidth; import org.forester.phylogeny.data.Date; import org.forester.phylogeny.data.Distribution; import org.forester.phylogeny.data.Event; import org.forester.phylogeny.data.PhylogenyData; +import org.forester.phylogeny.data.PhylogenyDataUtil; import org.forester.phylogeny.data.Point; import org.forester.phylogeny.data.PropertiesMap; import org.forester.phylogeny.data.Property; @@ -92,6 +95,8 @@ class NodePanel extends JPanel implements TreeSelectionListener { static final String SEQ_SYMBOL = "Symbol"; static final String SEQ_URI = "URI"; static final String NODE_BRANCH_LENGTH = "Branch length"; + static final String NODE_BRANCH_WIDTH = "Branch width"; + static final String NODE_BRANCH_COLOR = "Branch color"; static final String NODE_NAME = "Name"; static final String TAXONOMY_URI = "URI"; static final String TAXONOMY_RANK = "Rank"; @@ -206,15 +211,37 @@ class NodePanel extends JPanel implements TreeSelectionListener { } } + private static void addLineage( final DefaultMutableTreeNode top, + final List lineage, + final DefaultMutableTreeNode category ) { + if ( ( lineage != null ) && ( lineage.size() > 0 ) ) { + final StringBuilder sb = new StringBuilder(); + for( final String lin : lineage ) { + if ( !ForesterUtil.isEmpty( lin ) ) { + sb.append( lin ); + sb.append( " > " ); + } + } + String str = null; + if ( sb.length() > 1 ) { + str = sb.substring( 0, sb.length() - 3 ); + } + if ( !ForesterUtil.isEmpty( str ) ) { + addSubelement( category, "Lineage", str ); + } + } + } + private static void addBasics( final DefaultMutableTreeNode top, final PhylogenyNode phylogeny_node, final String name ) { final DefaultMutableTreeNode category = new DefaultMutableTreeNode( name ); top.add( category ); addSubelement( category, NODE_NAME, phylogeny_node.getName() ); - if ( phylogeny_node.getDistanceToParent() != PhylogenyNode.DISTANCE_DEFAULT ) { - addSubelement( category, NODE_BRANCH_LENGTH, ForesterUtil.FORMATTER_6.format( phylogeny_node - .getDistanceToParent() ) ); + if ( phylogeny_node.getDistanceToParent() != PhylogenyDataUtil.BRANCH_LENGTH_DEFAULT ) { + addSubelement( category, + NODE_BRANCH_LENGTH, + ForesterUtil.FORMATTER_6.format( phylogeny_node.getDistanceToParent() ) ); } if ( phylogeny_node.getBranchData().isHasConfidences() ) { for( final PhylogenyData conf : phylogeny_node.getBranchData().getConfidences() ) { @@ -223,8 +250,9 @@ class NodePanel extends JPanel implements TreeSelectionListener { } if ( !phylogeny_node.isExternal() ) { addSubelement( category, "Children", String.valueOf( phylogeny_node.getNumberOfDescendants() ) ); - addSubelement( category, "External children", String.valueOf( phylogeny_node.getAllExternalDescendants() - .size() ) ); + addSubelement( category, + "External children", + String.valueOf( phylogeny_node.getAllExternalDescendants().size() ) ); final SortedMap distinct_tax = PhylogenyMethods .obtainDistinctTaxonomyCounts( phylogeny_node ); if ( distinct_tax != null ) { @@ -234,10 +262,6 @@ class NodePanel extends JPanel implements TreeSelectionListener { if ( no_tax > 0 ) { addSubelement( category, "External nodes without taxonomy", String.valueOf( no_tax ) ); } - //TODO remove me... - for( final Taxonomy taxonomy : distinct_tax.keySet() ) { - System.out.println( taxonomy + ": " + distinct_tax.get( taxonomy ) ); - } } } if ( !phylogeny_node.isRoot() ) { @@ -247,6 +271,16 @@ class NodePanel extends JPanel implements TreeSelectionListener { addSubelement( category, "Distance to root", String.valueOf( ForesterUtil.FORMATTER_6.format( d ) ) ); } } + if ( ( phylogeny_node.getBranchData().getBranchWidth() != null ) + && ( phylogeny_node.getBranchData().getBranchWidth().getValue() != BranchWidth.BRANCH_WIDTH_DEFAULT_VALUE ) ) { + addSubelement( category, + NODE_BRANCH_WIDTH, + ForesterUtil.FORMATTER_3.format( phylogeny_node.getBranchData().getBranchWidth().getValue() ) ); + } + if ( ( phylogeny_node.getBranchData().getBranchColor() != null ) ) { + final Color c = phylogeny_node.getBranchData().getBranchColor().getValue(); + addSubelement( category, NODE_BRANCH_COLOR, c.getRed() + ", " + c.getGreen() + ", " + c.getBlue() ); + } } private static void addBinaryCharacters( final DefaultMutableTreeNode top, @@ -323,7 +357,7 @@ class NodePanel extends JPanel implements TreeSelectionListener { top.add( category ); for( final String key : properties_map.keySet() ) { final Property prop = properties_map.get( key ); - category.add( new DefaultMutableTreeNode( prop.getRef() + " " + prop.getValue() + " " + prop.getUnit() + category.add( new DefaultMutableTreeNode( prop.getRef() + "=" + prop.getValue() + " " + prop.getUnit() + " [" + prop.getAppliesTo().toString() + "]" ) ); } } @@ -375,6 +409,9 @@ class NodePanel extends JPanel implements TreeSelectionListener { if ( ( tax.getUris() != null ) && !tax.getUris().isEmpty() ) { addUris( top, tax.getUris(), category ); } + if ( ( tax.getLineage() != null ) && !tax.getLineage().isEmpty() ) { + addLineage( top, tax.getLineage(), category ); + } } private static void createNodes( final DefaultMutableTreeNode top, final PhylogenyNode phylogeny_node ) {