X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FNodeEditPanel.java;h=0917131350f46c179aa244d25414725ad0a41ac2;hb=0b39293d1577083551ba528d0ac7afcacbf69dde;hp=5a777cabe1b1ea641a972699bedcb2bb9f19cc5e;hpb=038c34792757a86f24296de5683e722fab3f9307;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java index 5a777ca..0917131 100644 --- a/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java +++ b/forester/java/src/org/forester/archaeopteryx/NodeEditPanel.java @@ -21,7 +21,7 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA // // Contact: phylosoft @ gmail . com -// WWW: www.phylosoft.org/ +// WWW: https://sites.google.com/site/cmzmasek/home/software/forester package org.forester.archaeopteryx; @@ -60,6 +60,7 @@ import org.forester.phylogeny.data.Event; import org.forester.phylogeny.data.Identifier; import org.forester.phylogeny.data.MultipleUris; import org.forester.phylogeny.data.PhylogenyData; +import org.forester.phylogeny.data.PhylogenyDataUtil; import org.forester.phylogeny.data.Point; import org.forester.phylogeny.data.Reference; import org.forester.phylogeny.data.Sequence; @@ -70,6 +71,71 @@ import org.forester.util.ForesterUtil; class NodeEditPanel extends JPanel { + private enum PHYLOXML_TAG { + NODE_NAME, + NODE_BRANCH_LENGTH, + NODE_BRANCH_WIDTH, + TAXONOMY_CODE, + TAXONOMY_SCIENTIFIC_NAME, + TAXONOMY_AUTHORITY, + TAXONOMY_COMMON_NAME, + TAXONOMY_SYNONYM, + TAXONOMY_RANK, + TAXONOMY_URI, + SEQ_SYMBOL, + SEQ_NAME, + SEQ_GENE_NAME, + SEQ_LOCATION, + SEQ_TYPE, + SEQ_MOL_SEQ, + SEQ_URI, + DATE_DESCRIPTION, + DATE_VALUE, + DATE_MIN, + DATE_MAX, + DATE_UNIT, + TAXONOMY_ID_VALUE, + TAXONOMY_ID_PROVIDER, + SEQ_ACC_VALUE, + SEQ_ACC_SOURCE, + CONFIDENCE_VALUE, + CONFIDENCE_TYPE, + LIT_REFERENCE_DESC, + LIT_REFERENCE_DOI, + EVENTS_DUPLICATIONS, + EVENTS_SPECIATIONS, + EVENTS_GENE_LOSSES, + DIST_DESC, + DIST_GEODETIC, + DIST_LAT, + DIST_LONG, + DIST_ALT, + DIST_ALT_UNIT + } + + private class TagNumber { + + final private PHYLOXML_TAG _tag; + final private int _number; + + TagNumber( final PHYLOXML_TAG tag, final int number ) { + _tag = tag; + _number = number; + } + + @Override + public String toString() { + return getTag() + "_" + getNumber(); + } + + int getNumber() { + return _number; + } + + PHYLOXML_TAG getTag() { + return _tag; + } + } private static final long serialVersionUID = 5120159904388100771L; private final JTree _tree; private final JEditorPane _pane; @@ -153,7 +219,7 @@ class NodeEditPanel extends JPanel { top.add( category ); addSubelementEditable( category, NodePanel.NODE_NAME, phylogeny_node.getName(), PHYLOXML_TAG.NODE_NAME ); String bl = ""; - if ( phylogeny_node.getDistanceToParent() != PhylogenyNode.DISTANCE_DEFAULT ) { + if ( phylogeny_node.getDistanceToParent() != PhylogenyDataUtil.BRANCH_LENGTH_DEFAULT ) { bl = ForesterUtil.FORMATTER_6.format( phylogeny_node.getDistanceToParent() ); } addSubelementEditable( category, NodePanel.NODE_BRANCH_LENGTH, bl, PHYLOXML_TAG.NODE_BRANCH_LENGTH ); @@ -336,6 +402,7 @@ class NodeEditPanel extends JPanel { } addSubelementEditable( category, NodePanel.SEQ_NAME, seq.getName(), PHYLOXML_TAG.SEQ_NAME ); addSubelementEditable( category, NodePanel.SEQ_SYMBOL, seq.getSymbol(), PHYLOXML_TAG.SEQ_SYMBOL ); + addSubelementEditable( category, NodePanel.SEQ_GENE_NAME, seq.getGeneName(), PHYLOXML_TAG.SEQ_GENE_NAME ); addSubelementEditable( category, NodePanel.SEQ_ACCESSION, acc.getValue(), @@ -489,6 +556,25 @@ class NodeEditPanel extends JPanel { uri_counter ); } + private void addUri( final DefaultMutableTreeNode mtn, final Uri uri, final int number, final MultipleUris mu ) { + if ( uri != null ) { + if ( mu.getUris() == null ) { + mu.setUris( new ArrayList() ); + } + } + if ( ( uri != null ) && ( mu.getUris() == null ) ) { + mu.setUris( new ArrayList() ); + } + if ( ( uri != null ) && ( mu.getUris().size() == number ) ) { + mu.getUris().add( uri ); + } + if ( ( mu.getUris() != null ) && ( mu.getUris().size() != number ) ) { + mu.getUris().set( number, uri ); + } + final ImageLoader il = new ImageLoader( getTreePanel() ); + new Thread( il ).start(); + } + private void collapsePath( final String name ) { final TreePath tp = getJTree().getNextMatch( name, 0, Position.Bias.Forward ); if ( tp != null ) { @@ -539,10 +625,6 @@ class NodeEditPanel extends JPanel { return getMap().get( mtn ); } - PhylogenyNode getMyNode() { - return _my_node; - } - private DefaultMutableTreeNode getSelectedTreeNode() { final TreePath selectionPath = getJTree().getSelectionPath(); if ( selectionPath != null ) { @@ -565,7 +647,7 @@ class NodeEditPanel extends JPanel { } private List obtainPoints() { - Util.ensurePresenceOfDistribution( getMyNode() ); + ForesterUtil.ensurePresenceOfDistribution( getMyNode() ); Distribution d = getMyNode().getNodeData().getDistribution(); if ( d.getPoints() == null ) { d = new Distribution( d.getDesc(), new ArrayList(), d.getPolygons() ); @@ -615,13 +697,6 @@ class NodeEditPanel extends JPanel { return i; } - void writeAll() { - for( int i = 0; i < getJTree().getRowCount(); i++ ) { - final TreePath p = getJTree().getPathForRow( i ); - writeBack( ( DefaultMutableTreeNode ) p.getLastPathComponent() ); - } - } - private void writeBack( final DefaultMutableTreeNode mtn ) { if ( !getMap().containsKey( mtn ) ) { final DefaultMutableTreeNode parent = ( DefaultMutableTreeNode ) mtn.getParent(); @@ -651,7 +726,7 @@ class NodeEditPanel extends JPanel { break; case NODE_BRANCH_LENGTH: if ( ForesterUtil.isEmpty( value ) ) { - getMyNode().setDistanceToParent( PhylogenyNode.DISTANCE_DEFAULT ); + getMyNode().setDistanceToParent( PhylogenyDataUtil.BRANCH_LENGTH_DEFAULT ); } else { try { @@ -713,7 +788,8 @@ class NodeEditPanel extends JPanel { } else { final String type = getMyNode().getBranchData().getConfidences().get( number ).getType(); - getMyNode().getBranchData().getConfidences().set( number, new Confidence( confidence, type ) ); + final double sd = getMyNode().getBranchData().getConfidences().get( number ).getStandardDeviation(); + getMyNode().getBranchData().getConfidences().set( number, new Confidence( confidence, type, sd ) ); } break; case CONFIDENCE_TYPE: @@ -727,11 +803,12 @@ class NodeEditPanel extends JPanel { } else { final double v = getMyNode().getBranchData().getConfidences().get( number ).getValue(); - getMyNode().getBranchData().getConfidences().set( number, new Confidence( v, value ) ); + final double sd = getMyNode().getBranchData().getConfidences().get( number ).getStandardDeviation(); + getMyNode().getBranchData().getConfidences().set( number, new Confidence( v, value, sd ) ); } break; case TAXONOMY_CODE: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); try { getMyNode().getNodeData().getTaxonomy().setTaxonomyCode( value ); } @@ -741,15 +818,15 @@ class NodeEditPanel extends JPanel { } break; case TAXONOMY_SCIENTIFIC_NAME: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); getMyNode().getNodeData().getTaxonomy().setScientificName( value ); break; case TAXONOMY_COMMON_NAME: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); getMyNode().getNodeData().getTaxonomy().setCommonName( value ); break; case TAXONOMY_RANK: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); try { getMyNode().getNodeData().getTaxonomy().setRank( value.toLowerCase() ); } @@ -759,7 +836,7 @@ class NodeEditPanel extends JPanel { } break; case TAXONOMY_AUTHORITY: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); getMyNode().getNodeData().getTaxonomy().setAuthority( value ); break; case TAXONOMY_URI: { @@ -777,7 +854,7 @@ class NodeEditPanel extends JPanel { } } if ( uri != null ) { - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); } addUri( mtn, uri, number, getMyNode().getNodeData().getTaxonomy() ); break; @@ -788,7 +865,7 @@ class NodeEditPanel extends JPanel { } else if ( getMyNode().getNodeData().getTaxonomy().getSynonyms().size() == number ) { if ( !ForesterUtil.isEmpty( value ) ) { - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); getMyNode().getNodeData().getTaxonomy().getSynonyms().add( value ); } } @@ -797,7 +874,7 @@ class NodeEditPanel extends JPanel { } break; case TAXONOMY_ID_VALUE: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); if ( getMyNode().getNodeData().getTaxonomy().getIdentifier() == null ) { getMyNode().getNodeData().getTaxonomy().setIdentifier( new Identifier( value ) ); } @@ -807,7 +884,7 @@ class NodeEditPanel extends JPanel { } break; case TAXONOMY_ID_PROVIDER: - Util.ensurePresenceOfTaxonomy( getMyNode() ); + ForesterUtil.ensurePresenceOfTaxonomy( getMyNode() ); if ( getMyNode().getNodeData().getTaxonomy().getIdentifier() == null ) { getMyNode().getNodeData().getTaxonomy().setIdentifier( new Identifier( "", value ) ); } @@ -817,19 +894,19 @@ class NodeEditPanel extends JPanel { } break; case SEQ_LOCATION: - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); getMyNode().getNodeData().getSequence().setLocation( value ); break; case SEQ_MOL_SEQ: - Util.ensurePresenceOfSequence( getMyNode() ); - getMyNode().getNodeData().getSequence().setMolecularSequence( value ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); + getMyNode().getNodeData().getSequence().setMolecularSequence( value.replaceAll( "[^a-zA-Z-]", "" ) ); break; case SEQ_NAME: - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); getMyNode().getNodeData().getSequence().setName( value ); break; case SEQ_SYMBOL: - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); try { getMyNode().getNodeData().getSequence().setSymbol( value ); } @@ -838,8 +915,12 @@ class NodeEditPanel extends JPanel { break; } break; + case SEQ_GENE_NAME: + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); + getMyNode().getNodeData().getSequence().setGeneName( value ); + break; case SEQ_TYPE: - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); try { getMyNode().getNodeData().getSequence().setType( value.toLowerCase() ); } @@ -849,7 +930,7 @@ class NodeEditPanel extends JPanel { } break; case SEQ_ACC_SOURCE: - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); if ( getMyNode().getNodeData().getSequence().getAccession() == null ) { getMyNode().getNodeData().getSequence().setAccession( new Accession( "", value ) ); } @@ -859,7 +940,7 @@ class NodeEditPanel extends JPanel { } break; case SEQ_ACC_VALUE: - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); if ( getMyNode().getNodeData().getSequence().getAccession() == null ) { getMyNode().getNodeData().getSequence().setAccession( new Accession( value, "" ) ); } @@ -883,7 +964,7 @@ class NodeEditPanel extends JPanel { } } if ( uri != null ) { - Util.ensurePresenceOfSequence( getMyNode() ); + ForesterUtil.ensurePresenceOfSequence( getMyNode() ); } addUri( mtn, uri, number, getMyNode().getNodeData().getSequence() ); break; @@ -925,23 +1006,23 @@ class NodeEditPanel extends JPanel { getMyNode().getNodeData().getEvent().setGeneLosses( parsePositiveInt( mtn, value ) ); break; case DATE_DESCRIPTION: - Util.ensurePresenceOfDate( getMyNode() ); + ForesterUtil.ensurePresenceOfDate( getMyNode() ); getMyNode().getNodeData().getDate().setDesc( value ); break; case DATE_MAX: - Util.ensurePresenceOfDate( getMyNode() ); + ForesterUtil.ensurePresenceOfDate( getMyNode() ); getMyNode().getNodeData().getDate().setMax( parseBigDecimal( mtn, value ) ); break; case DATE_MIN: - Util.ensurePresenceOfDate( getMyNode() ); + ForesterUtil.ensurePresenceOfDate( getMyNode() ); getMyNode().getNodeData().getDate().setMin( parseBigDecimal( mtn, value ) ); break; case DATE_UNIT: - Util.ensurePresenceOfDate( getMyNode() ); + ForesterUtil.ensurePresenceOfDate( getMyNode() ); getMyNode().getNodeData().getDate().setUnit( value ); break; case DATE_VALUE: - Util.ensurePresenceOfDate( getMyNode() ); + ForesterUtil.ensurePresenceOfDate( getMyNode() ); getMyNode().getNodeData().getDate().setValue( parseBigDecimal( mtn, value ) ); break; case DIST_ALT: { @@ -960,7 +1041,7 @@ class NodeEditPanel extends JPanel { break; } case DIST_DESC: { - Util.ensurePresenceOfDistribution( getMyNode() ); + ForesterUtil.ensurePresenceOfDistribution( getMyNode() ); final Distribution d = getMyNode().getNodeData().getDistribution(); getMyNode().getNodeData().setDistribution( new Distribution( value, d.getPoints(), d.getPolygons() ) ); break; @@ -1027,87 +1108,14 @@ class NodeEditPanel extends JPanel { getTreePanel().repaint(); } - private void addUri( final DefaultMutableTreeNode mtn, final Uri uri, final int number, final MultipleUris mu ) { - if ( uri != null ) { - if ( mu.getUris() == null ) { - mu.setUris( new ArrayList() ); - } - } - if ( ( uri != null ) && ( mu.getUris() == null ) ) { - mu.setUris( new ArrayList() ); - } - if ( ( uri != null ) && ( mu.getUris().size() == number ) ) { - mu.getUris().add( uri ); - } - if ( ( mu.getUris() != null ) && ( mu.getUris().size() != number ) ) { - mu.getUris().set( number, uri ); - } - final ImageLoader il = new ImageLoader( getTreePanel() ); - new Thread( il ).start(); - } - - private enum PHYLOXML_TAG { - NODE_NAME, - NODE_BRANCH_LENGTH, - NODE_BRANCH_WIDTH, - TAXONOMY_CODE, - TAXONOMY_SCIENTIFIC_NAME, - TAXONOMY_AUTHORITY, - TAXONOMY_COMMON_NAME, - TAXONOMY_SYNONYM, - TAXONOMY_RANK, - TAXONOMY_URI, - SEQ_SYMBOL, - SEQ_NAME, - SEQ_LOCATION, - SEQ_TYPE, - SEQ_MOL_SEQ, - SEQ_URI, - DATE_DESCRIPTION, - DATE_VALUE, - DATE_MIN, - DATE_MAX, - DATE_UNIT, - TAXONOMY_ID_VALUE, - TAXONOMY_ID_PROVIDER, - SEQ_ACC_VALUE, - SEQ_ACC_SOURCE, - CONFIDENCE_VALUE, - CONFIDENCE_TYPE, - LIT_REFERENCE_DESC, - LIT_REFERENCE_DOI, - EVENTS_DUPLICATIONS, - EVENTS_SPECIATIONS, - EVENTS_GENE_LOSSES, - DIST_DESC, - DIST_GEODETIC, - DIST_LAT, - DIST_LONG, - DIST_ALT, - DIST_ALT_UNIT + PhylogenyNode getMyNode() { + return _my_node; } - private class TagNumber { - - final private PHYLOXML_TAG _tag; - final private int _number; - - TagNumber( final PHYLOXML_TAG tag, final int number ) { - _tag = tag; - _number = number; - } - - int getNumber() { - return _number; - } - - PHYLOXML_TAG getTag() { - return _tag; - } - - @Override - public String toString() { - return getTag() + "_" + getNumber(); + void writeAll() { + for( int i = 0; i < getJTree().getRowCount(); i++ ) { + final TreePath p = getJTree().getPathForRow( i ); + writeBack( ( DefaultMutableTreeNode ) p.getLastPathComponent() ); } } }