From c94d818879d93f5a794f905a6312982d348b2752 Mon Sep 17 00:00:00 2001 From: cmzmasek Date: Fri, 12 Aug 2011 07:09:10 +0000 Subject: [PATCH] Can change branch width now [Kyoto] --- .../org/forester/archaeopteryx/Configuration.java | 2 +- .../org/forester/archaeopteryx/NodeEditPanel.java | 33 ++++++++++++++++++++ .../src/org/forester/archaeopteryx/NodePanel.java | 16 ++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/forester/java/src/org/forester/archaeopteryx/Configuration.java b/forester/java/src/org/forester/archaeopteryx/Configuration.java index 3562e10..ffc9104 100644 --- a/forester/java/src/org/forester/archaeopteryx/Configuration.java +++ b/forester/java/src/org/forester/archaeopteryx/Configuration.java @@ -156,7 +156,7 @@ public final class Configuration { { "Phylogram", "display", "?" }, { "Node Name", "display", "yes" }, { "Taxonomy Code", "display", "yes" }, { "Annotation", "nodisplay", "no" }, { "Confidence Value", "display", "?" }, { "Event", "display", "?" }, { "Taxonomy Colorize", "display", "yes" }, { "Colorize Branches", "display", "no" }, - { "Use Branch-Width", "nodisplay", "no" }, { "Show Custom Nodes", "display", "yes" }, + { "Use Branch-Widths", "display", "no" }, { "Show Custom Nodes", "display", "yes" }, { "Domains", "nodisplay", "no" }, { "Binary Characters", "nodisplay", "no" }, { "Binary Char Counts", "nodisplay", "no" }, { "Prot/Gene Name", "display", "yes" }, { "Prot/Gene Acc", "display", "no" }, { "Show Internal Data", "display", "yes" }, diff --git a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java index 81e869d..a485376 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java +++ b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java @@ -52,6 +52,7 @@ import org.forester.archaeopteryx.tools.ImageLoader; import org.forester.io.parsers.phyloxml.PhyloXmlDataFormatException; import org.forester.phylogeny.PhylogenyNode; import org.forester.phylogeny.data.Accession; +import org.forester.phylogeny.data.BranchWidth; import org.forester.phylogeny.data.Confidence; import org.forester.phylogeny.data.Date; import org.forester.phylogeny.data.Distribution; @@ -183,6 +184,15 @@ class NodeEditPanel extends JPanel { "", PHYLOXML_TAG.CONFIDENCE_TYPE, counter ); + String bw = "1"; + if ( phylogeny_node.getBranchData().getBranchWidth() != null + && phylogeny_node.getBranchData().getBranchWidth().getValue() != BranchWidth.BRANCH_WIDTH_DEFAULT_VALUE + ) + { + bw = ForesterUtil.FORMATTER_3.format( phylogeny_node.getBranchData().getBranchWidth().getValue() ); + } + addSubelementEditable( category, NodePanel.NODE_BRANCH_WIDTH, bw, PHYLOXML_TAG.NODE_BRANCH_WIDTH ); + } // private void addAnnotation( final DefaultMutableTreeNode top, final Annotation ann, final String name ) { @@ -659,6 +669,28 @@ class NodeEditPanel extends JPanel { } } break; + case NODE_BRANCH_WIDTH: + if ( ForesterUtil.isEmpty( value ) || value.equals( "1" ) ) { + if ( getMyNode().getBranchData().getBranchWidth() != null ) { + getMyNode().getBranchData().setBranchWidth( new BranchWidth() ); + } + } + else { + try { + final double bw = ForesterUtil.parseDouble( value ); + if ( bw >= 0 ) { + getMyNode().getBranchData().setBranchWidth( new BranchWidth(bw ) ); + } + } + catch ( final ParseException e ) { + JOptionPane.showMessageDialog( this, + "failed to parse branch width from: " + value, + "Error", + JOptionPane.ERROR_MESSAGE ); + mtn.setUserObject( "" ); + } + } + break; case CONFIDENCE_VALUE: double confidence = Confidence.CONFIDENCE_DEFAULT_VALUE; if ( !ForesterUtil.isEmpty( value ) ) { @@ -1020,6 +1052,7 @@ class NodeEditPanel extends JPanel { private enum PHYLOXML_TAG { NODE_NAME, NODE_BRANCH_LENGTH, + NODE_BRANCH_WIDTH, TAXONOMY_CODE, TAXONOMY_SCIENTIFIC_NAME, TAXONOMY_AUTHORITY, diff --git a/forester/java/src/org/forester/archaeopteryx/NodePanel.java b/forester/java/src/org/forester/archaeopteryx/NodePanel.java index 153d949..ebed530 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/NodePanel.java @@ -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,6 +45,7 @@ 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; @@ -92,6 +94,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"; @@ -222,6 +226,18 @@ class NodePanel extends JPanel implements TreeSelectionListener { addSubelement( category, CONFIDENCE, conf.asText().toString() ); } } + 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 ) ) { + Color c = phylogeny_node.getBranchData().getBranchColor().getValue(); + addSubelement( category, + NODE_BRANCH_COLOR, + c.getRed() + ", " + c.getGreen() + ", "+ c.getBlue() ); + } if ( !phylogeny_node.isExternal() ) { addSubelement( category, "Children", String.valueOf( phylogeny_node.getNumberOfDescendants() ) ); addSubelement( category, -- 1.7.10.2