error things
[jalview.git] / forester / java / src / org / forester / archaeopteryx / NodePanel.java
index 153d949..00a09d7 100644 (file)
@@ -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,13 +211,34 @@ class NodePanel extends JPanel implements TreeSelectionListener {
         }
     }
 
+    private static void addLineage( final DefaultMutableTreeNode top,
+                                    final List<String> 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 ) {
+        if ( phylogeny_node.getDistanceToParent() != PhylogenyDataUtil.BRANCH_LENGTH_DEFAULT ) {
             addSubelement( category,
                            NODE_BRANCH_LENGTH,
                            ForesterUtil.FORMATTER_6.format( phylogeny_node.getDistanceToParent() ) );
@@ -236,19 +262,25 @@ 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() ) {
-            addSubelement( category, "Depth", String.valueOf( PhylogenyMethods.calculateDepth( phylogeny_node ) ) );
-            final double d = PhylogenyMethods.calculateDistanceToRoot( phylogeny_node );
+            addSubelement( category, "Depth", String.valueOf( phylogeny_node.calculateDepth() ) );
+            final double d = phylogeny_node.calculateDistanceToRoot();
             if ( d > 0 ) {
                 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,
@@ -285,7 +317,7 @@ class NodePanel extends JPanel implements TreeSelectionListener {
         addSubelement( category, DIST_DESCRIPTION, dist.getDesc() );
         if ( ( dist.getPoints() != null ) && ( dist.getPoints().size() > 0 ) ) {
             final Point p0 = dist.getPoints().get( 0 );
-            if ( p0 != null ) {
+            if ( ( p0 != null ) && !Point.isSeemsEmpty( p0 ) ) {
                 addSubelement( category, DIST_GEODETIC_DATUM, p0.getGeodeticDatum() );
                 addSubelement( category, DIST_LATITUDE, String.valueOf( p0.getLatitude() ) );
                 addSubelement( category, DIST_LONGITUDE, String.valueOf( p0.getLongitude() ) );
@@ -325,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() + "]" ) );
         }
     }
@@ -377,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 ) {