in progress
authorcmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Thu, 4 Oct 2012 01:52:54 +0000 (01:52 +0000)
committercmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Thu, 4 Oct 2012 01:52:54 +0000 (01:52 +0000)
forester/java/src/org/forester/archaeopteryx/Configuration.java
forester/java/src/org/forester/archaeopteryx/Constants.java
forester/java/src/org/forester/archaeopteryx/ControlPanel.java
forester/java/src/org/forester/archaeopteryx/MainFrame.java
forester/java/src/org/forester/archaeopteryx/TreePanel.java
forester/java/src/org/forester/phylogeny/data/NodeData.java

index a7e9379..96299a3 100644 (file)
@@ -55,6 +55,9 @@ import org.forester.util.ForesterUtil;
 
 public final class Configuration {
 
+    public enum EXT_NODE_DATA_RETURN_ON {
+        CONSOLE, WINODW;
+    }
     static final String                     VALIDATE_AGAINST_PHYLOXML_XSD_SCHEMA                   = "validate_against_phyloxml_xsd_schema";
     private static final String             WEB_LINK_KEY                                           = "web_link";
     private static final String             DISPLAY_COLOR_KEY                                      = "display_color";
@@ -175,7 +178,7 @@ public final class Configuration {
             { "Open Sequence Web", "display" }, { "Open Taxonomy Web", "display" }, { "Blast", "display" },
             { "Cut Subtree", "display" }, { "Copy Subtree", "display" }, { "Paste Subtree", "display" },
             { "Delete Subtree/Node", "display" }, { "Add New Node", "display" }, { "Edit Node Data", "display" },
-            { "Sort Descendants", "display" }, { "Get External Node Data", "display" }            };
+            { "Sort Descendants", "display" }, { "Return", "display" }                            };
     // This option is selected in the dropdown
     int                                     default_clickto                                        = Configuration.display_node_data;
     // --------------
@@ -210,8 +213,9 @@ public final class Configuration {
     private Color                           _gui_button_border_color                               = Constants.BUTTON_BORDER_COLOR_DEFAULT;
     private Color                           _domain_structure_font_color                           = Constants.DOMAIN_STRUCTURE_FONT_COLOR_DEFAULT;
     private Color                           _domain_structure_base_color                           = Constants.DOMAIN_STRUCTURE_BASE_COLOR_DEFAULT;
-    private NODE_DATA                       _ext_desc_data_to_return;
-    private String _label_for_get_ext_descendents_data = "";
+    private NODE_DATA                       _ext_desc_data_to_return                               = NODE_DATA.NODE_NAME;
+    private String                          _label_for_get_ext_descendents_data                    = "";
+    private EXT_NODE_DATA_RETURN_ON         _ext_node_data_return_on                               = EXT_NODE_DATA_RETURN_ON.CONSOLE;
     private static String                   DEFAULT_FONT_FAMILY                                    = "";
     static {
         for( final String font_name : Constants.DEFAULT_FONT_CHOICES ) {
@@ -705,7 +709,7 @@ public final class Configuration {
     private double parseDouble( final String str ) {
         double d = 0.0;
         try {
-            d = Double.parseDouble( str );
+            d = Double.parseDouble( str.trim() );
         }
         catch ( final Exception e ) {
             ForesterUtil.printWarningMessage( Constants.PRG_NAME, "could not parse double from [" + str + "]" );
@@ -717,7 +721,7 @@ public final class Configuration {
     private float parseFloat( final String str ) {
         float f = 0.0f;
         try {
-            f = Float.parseFloat( str );
+            f = Float.parseFloat( str.trim() );
         }
         catch ( final Exception e ) {
             ForesterUtil.printWarningMessage( Constants.PRG_NAME, "could not parse float from [" + str + "]" );
@@ -729,7 +733,7 @@ public final class Configuration {
     private int parseInt( final String str ) {
         int i = -1;
         try {
-            i = Integer.parseInt( str );
+            i = Integer.parseInt( str.trim() );
         }
         catch ( final Exception e ) {
             ForesterUtil.printWarningMessage( Constants.PRG_NAME, "could not parse integer from [" + str + "]" );
@@ -741,7 +745,7 @@ public final class Configuration {
     private short parseShort( final String str ) {
         short i = -1;
         try {
-            i = Short.parseShort( str );
+            i = Short.parseShort( str.trim() );
         }
         catch ( final Exception e ) {
             ForesterUtil.printWarningMessage( Constants.PRG_NAME, "could not parse short from [" + str + "]" );
@@ -936,10 +940,10 @@ public final class Configuration {
      * Set a key-value(s) tuple
      */
     private void setKeyValue( final StringTokenizer st ) {
-        String key = ( String ) st.nextElement();
-        key = key.replace( ':', ' ' );
-        key = key.trim();
-        key = key.toLowerCase();
+        final String key = ( ( String ) st.nextElement() ).replace( ':', ' ' ).trim().toLowerCase();
+        if ( !st.hasMoreElements() ) {
+            return;
+        }
         // Handle single value settings first:
         if ( key.equals( "default_click_to" ) ) {
             final String clickto_name = ( String ) st.nextElement();
@@ -1127,11 +1131,11 @@ public final class Configuration {
             _use_tabbed_display = parseBoolean( ( String ) st.nextElement() );
         }
         else if ( key.equals( "overview_width" ) ) {
-            final short i = parseShort( ( ( String ) st.nextElement() ).trim() );
+            final short i = parseShort( ( ( String ) st.nextElement() ) );
             setOvMaxWidth( i );
         }
         else if ( key.equals( "overview_height" ) ) {
-            final short i = parseShort( ( ( String ) st.nextElement() ).trim() );
+            final short i = parseShort( ( ( String ) st.nextElement() ) );
             setOvMaxHeight( i );
         }
         else if ( key.equals( "overview_placement_type" ) ) {
@@ -1305,13 +1309,39 @@ public final class Configuration {
             else if ( s.equalsIgnoreCase( "sequence_symbol" ) ) {
                 setExtDescNodeDataToReturn( NODE_DATA.SEQUENCE_SYMBOL );
             }
+            else if ( s.equalsIgnoreCase( "taxonomy_scientific_name" ) ) {
+                setExtDescNodeDataToReturn( NODE_DATA.TAXONOMY_SCIENTIFIC_NAME );
+            }
+            else if ( s.equalsIgnoreCase( "taxonomy_code" ) ) {
+                setExtDescNodeDataToReturn( NODE_DATA.TAXONOMY_CODE );
+            }
             else {
                 ForesterUtil.printWarningMessage( Constants.PRG_NAME, "unknown value [" + s
                         + "] for [ext_descendents_data_to_return]" );
             }
         }
         else if ( key.equals( "label_for_get_ext_descendents_data" ) ) {
-           setLabelForGetExtDescendentsData( (( String ) st.nextElement() ).replaceAll( "_", " " ) );
+            final String s = ( ( String ) st.nextElement() ).trim();
+            if ( ForesterUtil.isEmpty( s ) || ( s.length() < 2 ) ) {
+                ForesterUtil.printWarningMessage( Constants.PRG_NAME, "illegal value [" + s
+                        + "] for [label_for_get_ext_descendents_data]" );
+            }
+            else {
+                setLabelForGetExtDescendentsData( s.replaceAll( "_", " " ) );
+            }
+        }
+        else if ( key.equals( "ext_descendents_data_to_return_on" ) ) {
+            final String s = ( ( String ) st.nextElement() ).trim().toLowerCase();
+            if ( s.equals( "console" ) ) {
+                setExtNodeDataReturnOn( EXT_NODE_DATA_RETURN_ON.CONSOLE );
+            }
+            else if ( s.equals( "window" ) ) {
+                setExtNodeDataReturnOn( EXT_NODE_DATA_RETURN_ON.WINODW );
+            }
+            else {
+                ForesterUtil.printWarningMessage( Constants.PRG_NAME, "unknown value [" + s
+                        + "] for [ext_descendents_data_to_return_on]" );
+            }
         }
         else if ( st.countTokens() >= 2 ) { // counts the tokens that are not
             // yet retrieved!
@@ -1510,16 +1540,14 @@ public final class Configuration {
         }
     }
 
-    private void setLabelForGetExtDescendentsData( String label_for_get_ext_descendents_data ) {
+    private void setLabelForGetExtDescendentsData( final String label_for_get_ext_descendents_data ) {
         _label_for_get_ext_descendents_data = label_for_get_ext_descendents_data;
-       
     }
 
-    public String getLabelForGetExtDescendentsData( ) {
-        return _label_for_get_ext_descendents_data ;
-       
+    public String getLabelForGetExtDescendentsData() {
+        return _label_for_get_ext_descendents_data;
     }
-    
+
     public void setMinConfidenceValue( final double min_confidence_value ) {
         _min_confidence_value = min_confidence_value;
     }
@@ -1619,4 +1647,12 @@ public final class Configuration {
     public void setExtDescNodeDataToReturn( final NODE_DATA ext_desc_data_to_return ) {
         _ext_desc_data_to_return = ext_desc_data_to_return;
     }
+
+    public EXT_NODE_DATA_RETURN_ON getExtNodeDataReturnOn() {
+        return _ext_node_data_return_on;
+    }
+
+    private void setExtNodeDataReturnOn( final EXT_NODE_DATA_RETURN_ON ext_node_data_return_on ) {
+        _ext_node_data_return_on = ext_node_data_return_on;
+    }
 }
index 70244b5..46d88d2 100644 (file)
@@ -42,8 +42,8 @@ public final class Constants {
     public final static boolean __SYNTH_LF                                                    = false;                                                    // TODO remove me
     public final static boolean ALLOW_DDBJ_BLAST                                              = false;
     public final static String  PRG_NAME                                                      = "Archaeopteryx";
-    final static String         VERSION                                                       = "0.973";
-    final static String         PRG_DATE                                                      = "120921";
+    final static String         VERSION                                                       = "0.974";
+    final static String         PRG_DATE                                                      = "121003";
     final static String         DEFAULT_CONFIGURATION_FILE_NAME                               = "_aptx_configuration_file";
     final static String[]       DEFAULT_FONT_CHOICES                                          = { "Verdana", "Tahoma",
             "Arial", "Helvetica", "Dialog", "Lucida Sans", "SansSerif", "Sans-serif", "Sans" };
index 7554287..4a40c7f 100644 (file)
@@ -1389,13 +1389,38 @@ final class ControlPanel extends JPanel implements ActionListener {
         }
         if ( _configuration.doDisplayClickToOption( Configuration.get_ext_desc_data ) ) {
             _get_ext_desc_data = cb_index;
-            addClickToOption( Configuration.get_ext_desc_data,
-                              _configuration.getClickToTitle( Configuration.get_ext_desc_data ) );
             if ( !ForesterUtil.isEmpty( getConfiguration().getLabelForGetExtDescendentsData() ) ) {
-                fixme
-                getConfiguration().getLabelForGetExtDescendentsData();
+                addClickToOption( Configuration.get_ext_desc_data, getConfiguration()
+                        .getLabelForGetExtDescendentsData() );
+            }
+            else {
+                String s = ";";
+                switch ( getConfiguration().getExtDescNodeDataToReturn() ) {
+                    case NODE_NAME:
+                        s = "Node Names";
+                        break;
+                    case SEQUENCE_ACC:
+                        s = "Sequence Accessors";
+                        break;
+                    case SEQUENCE_MOL_SEQ:
+                        s = "Molecular Sequence";
+                        break;
+                    case SEQUENCE_NAME:
+                        s = "Sequence Names";
+                        break;
+                    case SEQUENCE_SYMBOL:
+                        s = "Sequence Symbols";
+                        break;
+                    case TAXONOMY_CODE:
+                        s = "Taxonomy Codes";
+                        break;
+                    case TAXONOMY_SCIENTIFIC_NAME:
+                        s = "Scientific names";
+                        break;
+                }
+                final String label = _configuration.getClickToTitle( Configuration.get_ext_desc_data ) + " " + s;
+                addClickToOption( Configuration.get_ext_desc_data, label );
             }
-            
             if ( default_option == Configuration.get_ext_desc_data ) {
                 selected_index = cb_index;
             }
index ac08d25..3cffdf0 100644 (file)
@@ -1112,49 +1112,41 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     }
 
     void displayBasicInformation() {
-        if ( ( _mainpanel.getCurrentPhylogeny() == null ) || _mainpanel.getCurrentPhylogeny().isEmpty() ) {
-            return;
+        if ( ( _mainpanel.getCurrentPhylogeny() != null ) && !_mainpanel.getCurrentPhylogeny().isEmpty() ) {
+            showTextFrame( AptxUtil.createBasicInformation( _mainpanel.getCurrentPhylogeny() ) );
         }
-        _textframe = TextFrame.instantiate( AptxUtil.createBasicInformation( _mainpanel.getCurrentPhylogeny() ) );
     }
 
     void viewAsNexus() {
-        removeTextFrame();
-        if ( ( _mainpanel.getCurrentPhylogeny() == null ) || _mainpanel.getCurrentPhylogeny().isEmpty()
-                || ( _mainpanel.getCurrentPhylogeny().getNumberOfExternalNodes() > 20000 ) ) {
-            return;
+        if ( ( _mainpanel.getCurrentPhylogeny() != null ) && !_mainpanel.getCurrentPhylogeny().isEmpty() ) {
+            showTextFrame( _mainpanel.getCurrentPhylogeny().toNexus( getOptions().getNhConversionSupportValueStyle() ) );
         }
-        _textframe = TextFrame.instantiate( _mainpanel.getCurrentPhylogeny().toNexus( getOptions()
-                .getNhConversionSupportValueStyle() ) );
     }
 
     void viewAsNH() {
-        removeTextFrame();
-        if ( ( _mainpanel.getCurrentPhylogeny() == null ) || _mainpanel.getCurrentPhylogeny().isEmpty()
-                || ( _mainpanel.getCurrentPhylogeny().getNumberOfExternalNodes() > 20000 ) ) {
-            return;
+        if ( ( _mainpanel.getCurrentPhylogeny() != null ) && !_mainpanel.getCurrentPhylogeny().isEmpty() ) {
+            showTextFrame( _mainpanel.getCurrentPhylogeny()
+                    .toNewHampshire( false, getOptions().getNhConversionSupportValueStyle() ) );
         }
-        _textframe = TextFrame.instantiate( _mainpanel.getCurrentPhylogeny()
-                .toNewHampshire( false, getOptions().getNhConversionSupportValueStyle() ) );
     }
 
     void viewAsNHX() {
-        removeTextFrame();
-        if ( ( _mainpanel.getCurrentPhylogeny() == null ) || _mainpanel.getCurrentPhylogeny().isEmpty()
-                || ( _mainpanel.getCurrentPhylogeny().getNumberOfExternalNodes() > 10000 ) ) {
-            return;
+        if ( ( _mainpanel.getCurrentPhylogeny() != null ) && !_mainpanel.getCurrentPhylogeny().isEmpty() ) {
+            showTextFrame( _mainpanel.getCurrentPhylogeny().toNewHampshireX() );
         }
-        _textframe = TextFrame.instantiate( _mainpanel.getCurrentPhylogeny().toNewHampshireX() );
     }
 
     void viewAsXML() {
-        removeTextFrame();
-        if ( ( _mainpanel.getCurrentPhylogeny() != null ) && !_mainpanel.getCurrentPhylogeny().isEmpty()
-                && ( _mainpanel.getCurrentPhylogeny().getNumberOfExternalNodes() <= 10000 ) ) {
-            _textframe = TextFrame.instantiate( _mainpanel.getCurrentPhylogeny().toPhyloXML( 0 ) );
+        if ( ( _mainpanel.getCurrentPhylogeny() != null ) && !_mainpanel.getCurrentPhylogeny().isEmpty() ) {
+            showTextFrame( _mainpanel.getCurrentPhylogeny().toPhyloXML( 0 ) );
         }
     }
 
+    public void showTextFrame( final String s ) {
+        removeTextFrame();
+        _textframe = TextFrame.instantiate( s );
+    }
+
     /**
      * Display the about box.
      */
index d256cce..af982e4 100644 (file)
@@ -89,6 +89,7 @@ import javax.swing.JTextArea;
 import javax.swing.Popup;
 import javax.swing.PopupFactory;
 
+import org.forester.archaeopteryx.Configuration.EXT_NODE_DATA_RETURN_ON;
 import org.forester.archaeopteryx.ControlPanel.NodeClickAction;
 import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE;
 import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION;
@@ -1345,38 +1346,66 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee
     }
 
     private void getExtDescNodeData( final PhylogenyNode node ) {
+        final List<String> data = new ArrayList<String>();
         for( final PhylogenyNode n : node.getAllExternalDescendants() ) {
             switch ( getOptions().getExtDescNodeDataToReturn() ) {
                 case NODE_NAME:
-                    System.out.println( n.getName() );
+                    if ( !ForesterUtil.isEmpty( n.getName() ) ) {
+                        data.add( n.getName() );
+                    }
                     break;
                 case SEQUENCE_NAME:
                     if ( n.getNodeData().isHasSequence()
                             && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getName() ) ) {
-                        System.out.println( n.getNodeData().getSequence().getName() );
+                        data.add( n.getNodeData().getSequence().getName() );
                     }
                     break;
                 case SEQUENCE_SYMBOL:
                     if ( n.getNodeData().isHasSequence()
                             && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getSymbol() ) ) {
-                        System.out.println( 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() ) ) {
-                        System.out.println( n.getNodeData().getSequence().getMolecularSequence() );
+                        data.add( n.getNodeData().getSequence().getMolecularSequence() );
                     }
                     break;
                 case SEQUENCE_ACC:
                     if ( n.getNodeData().isHasSequence() && ( n.getNodeData().getSequence().getAccession() != null ) ) {
-                        System.out.println( 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_CODE:
+                    if ( n.getNodeData().isHasTaxonomy()
+                            && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
+                        data.add( n.getNodeData().getTaxonomy().getTaxonomyCode() );
                     }
                     break;
                 default:
                     throw new IllegalArgumentException( "unknown data element: "
                             + getOptions().getExtDescNodeDataToReturn() );
             }
+            if ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.CONSOLE ) {
+                for( final String d : data ) {
+                    System.out.println( d );
+                }
+            }
+            else if ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.WINODW ) {
+                final StringBuilder sb = new StringBuilder();
+                for( final String d : data ) {
+                    sb.append( d );
+                    sb.append( "\n" );
+                }
+                getMainPanel().getMainFrame().showTextFrame( sb.toString() );
+            }
         }
     }
 
index e3af367..daa9d13 100644 (file)
@@ -39,7 +39,14 @@ import org.forester.util.ForesterUtil;
 public class NodeData implements PhylogenyData {
 
     public enum NODE_DATA {
-        NODE_NAME, EVENT, SEQUENCE_NAME, SEQUENCE_SYMBOL, SEQUENCE_MOL_SEQ, SEQUENCE_ACC;
+        NODE_NAME,
+        EVENT,
+        SEQUENCE_NAME,
+        SEQUENCE_SYMBOL,
+        SEQUENCE_MOL_SEQ,
+        SEQUENCE_ACC,
+        TAXONOMY_SCIENTIFIC_NAME,
+        TAXONOMY_CODE;
     }
     private String                  _node_name;
     private Event                   _event;