domain + go output work begins
authorcmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Tue, 16 Dec 2014 22:04:20 +0000 (22:04 +0000)
committercmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Tue, 16 Dec 2014 22:04:20 +0000 (22:04 +0000)
forester/java/src/org/forester/archaeopteryx/ControlPanel.java
forester/java/src/org/forester/archaeopteryx/MainFrame.java
forester/java/src/org/forester/archaeopteryx/MainFrameApplet.java
forester/java/src/org/forester/archaeopteryx/MainFrameApplication.java
forester/java/src/org/forester/archaeopteryx/TreePanel.java
forester/java/src/org/forester/archaeopteryx/TreePanelUtil.java
forester/java/src/org/forester/phylogeny/data/NodeData.java
forester/java/src/org/forester/util/StringInt.java [new file with mode: 0644]

index 7a48b1d..e51d654 100644 (file)
@@ -2085,7 +2085,7 @@ final class ControlPanel extends JPanel implements ActionListener {
                         s = "Sequence Annotations";
                         break;
                     case UNKNOWN:
-                        s = "User Selected Data";
+                        s = "User/UI Selected Data Fields";
                         break;
                     default:
                         throw new IllegalStateException( "dont know how to deal with "
index c0881be..81f8251 100644 (file)
@@ -65,6 +65,7 @@ import org.forester.phylogeny.PhylogenyMethods.DESCENDANT_SORT_PRIORITY;
 import org.forester.phylogeny.PhylogenyNode;\r
 import org.forester.phylogeny.PhylogenyNode.NH_CONVERSION_SUPPORT_VALUE_STYLE;\r
 import org.forester.phylogeny.data.Annotation;\r
+import org.forester.phylogeny.data.NodeData;\r
 import org.forester.phylogeny.data.NodeVisualData.NodeFill;\r
 import org.forester.phylogeny.data.NodeVisualData.NodeShape;\r
 import org.forester.phylogeny.iterators.PhylogenyNodeIterator;\r
@@ -200,6 +201,7 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     JMenuItem                   _cycle_node_shape_mi;\r
     JMenuItem                   _cycle_node_fill_mi;\r
     JMenuItem                   _choose_node_size_mi;\r
+    JMenuItem                   _cycle_data_return;\r
     JCheckBoxMenuItem           _show_confidence_stddev_cbmi;\r
     JCheckBoxMenuItem           _right_line_up_domains_cbmi;\r
     JCheckBoxMenuItem           _line_up_renderable_data_cbmi;\r
@@ -409,6 +411,9 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         else if ( o == _cycle_node_shape_mi ) {\r
             MainFrame.cycleNodeShape( getOptions(), getCurrentTreePanel() );\r
         }\r
+        else if ( o == _cycle_data_return ) {\r
+            MainFrame.cycleNodeDataReturn( getOptions(), getCurrentTreePanel() );\r
+        }\r
         else if ( o == _screen_antialias_cbmi ) {\r
             updateOptions( getOptions() );\r
             updateScreenTextAntialias( getMainPanel().getTreePanels() );\r
@@ -600,10 +605,10 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         }\r
         if ( ( nodes == null ) || nodes.isEmpty() ) {\r
             JOptionPane\r
-                    .showMessageDialog( this,\r
-                                        "Need to select external nodes, either via direct selection or via the \"Search\" function",\r
-                                        "No external nodes selected to " + function.toLowerCase(),\r
-                                        JOptionPane.ERROR_MESSAGE );\r
+            .showMessageDialog( this,\r
+                                "Need to select external nodes, either via direct selection or via the \"Search\" function",\r
+                                "No external nodes selected to " + function.toLowerCase(),\r
+                                JOptionPane.ERROR_MESSAGE );\r
             return;\r
         }\r
         final int todo = nodes.size();\r
@@ -620,8 +625,8 @@ public abstract class MainFrame extends JFrame implements ActionListener {
             return;\r
         }\r
         final int result = JOptionPane.showConfirmDialog( null, function + " " + todo\r
-                + " external node(s), from a total of " + ext + " external nodes," + "\nresulting in tree with " + res\r
-                + " nodes?", function + " external nodes", JOptionPane.OK_CANCEL_OPTION );\r
+                                                          + " external node(s), from a total of " + ext + " external nodes," + "\nresulting in tree with " + res\r
+                                                          + " nodes?", function + " external nodes", JOptionPane.OK_CANCEL_OPTION );\r
         if ( result == JOptionPane.OK_OPTION ) {\r
             if ( !delete ) {\r
                 final List<PhylogenyNode> to_delete = new ArrayList<PhylogenyNode>();\r
@@ -990,8 +995,8 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                                                    + gsdi.getStrippedExternalGeneTreeNodes().size() + "\n"\r
                                                    + "Taxonomy linkage based on: " + gsdi.getTaxCompBase() + "\n"\r
                                                    + "Number of polytomies in species tree used: " + poly + "\n",\r
-                                           "GSDI successfully completed",\r
-                                           JOptionPane.WARNING_MESSAGE );\r
+                                                   "GSDI successfully completed",\r
+                                                   JOptionPane.WARNING_MESSAGE );\r
         }\r
         else {\r
             JOptionPane.showMessageDialog( this,\r
@@ -1003,8 +1008,8 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                                                    + gsdi.getStrippedExternalGeneTreeNodes().size() + "\n"\r
                                                    + "Taxonomy linkage based on: " + gsdi.getTaxCompBase() + "\n"\r
                                                    + "Number of polytomies in species tree used: " + poly + "\n",\r
-                                           "GSDI successfully completed",\r
-                                           JOptionPane.INFORMATION_MESSAGE );\r
+                                                   "GSDI successfully completed",\r
+                                                   JOptionPane.INFORMATION_MESSAGE );\r
         }\r
     }\r
 \r
@@ -1063,8 +1068,8 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                                                    + gsdir.getStrippedExternalGeneTreeNodes().size() + "\n"\r
                                                    + "Taxonomy linkage based on: " + gsdir.getTaxCompBase() + "\n"\r
                                                    + "Number of polytomies in species tree used: " + poly + "\n",\r
-                                           "GSDIR successfully completed",\r
-                                           JOptionPane.WARNING_MESSAGE );\r
+                                                   "GSDIR successfully completed",\r
+                                                   JOptionPane.WARNING_MESSAGE );\r
         }\r
         else {\r
             JOptionPane.showMessageDialog( this,\r
@@ -1074,8 +1079,8 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                                                    + gsdir.getStrippedExternalGeneTreeNodes().size() + "\n"\r
                                                    + "Taxonomy linkage based on: " + gsdir.getTaxCompBase() + "\n"\r
                                                    + "Number of polytomies in species tree used: " + poly + "\n",\r
-                                           "GSDIR successfully completed",\r
-                                           JOptionPane.INFORMATION_MESSAGE );\r
+                                                   "GSDIR successfully completed",\r
+                                                   JOptionPane.INFORMATION_MESSAGE );\r
         }\r
     }\r
 \r
@@ -1183,10 +1188,10 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         if ( getCurrentTreePanel() != null ) {\r
             if ( getCurrentTreePanel().isCurrentTreeIsSubtree() ) {\r
                 JOptionPane\r
-                        .showMessageDialog( this,\r
-                                            "This operation can only be performed on a complete tree, not on the currently displayed sub-tree only.",\r
-                                            "Operation can not be exectuted on a sub-tree",\r
-                                            JOptionPane.WARNING_MESSAGE );\r
+                .showMessageDialog( this,\r
+                                    "This operation can only be performed on a complete tree, not on the currently displayed sub-tree only.",\r
+                                    "Operation can not be exectuted on a sub-tree",\r
+                                    JOptionPane.WARNING_MESSAGE );\r
                 return true;\r
             }\r
         }\r
@@ -1318,20 +1323,20 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     void updateOptions( final Options options ) {\r
         options.setAntialiasScreen( ( _screen_antialias_cbmi != null ) && _screen_antialias_cbmi.isSelected() );\r
         options.setBackgroundColorGradient( ( _background_gradient_cbmi != null )\r
-                && _background_gradient_cbmi.isSelected() );\r
+                                            && _background_gradient_cbmi.isSelected() );\r
         options.setShowDomainLabels( ( _show_domain_labels != null ) && _show_domain_labels.isSelected() );\r
         options.setShowAnnotationRefSource( ( _show_annotation_ref_source != null )\r
-                && _show_annotation_ref_source.isSelected() );\r
+                                            && _show_annotation_ref_source.isSelected() );\r
         options.setAbbreviateScientificTaxonNames( ( _abbreviate_scientific_names != null )\r
-                && _abbreviate_scientific_names.isSelected() );\r
+                                                   && _abbreviate_scientific_names.isSelected() );\r
         options.setColorLabelsSameAsParentBranch( ( _color_labels_same_as_parent_branch != null )\r
-                && _color_labels_same_as_parent_branch.isSelected() );\r
+                                                  && _color_labels_same_as_parent_branch.isSelected() );\r
         options.setShowDefaultNodeShapesInternal( ( _show_default_node_shapes_internal_cbmi != null )\r
-                && _show_default_node_shapes_internal_cbmi.isSelected() );\r
+                                                  && _show_default_node_shapes_internal_cbmi.isSelected() );\r
         options.setShowDefaultNodeShapesExternal( ( _show_default_node_shapes_external_cbmi != null )\r
-                && _show_default_node_shapes_external_cbmi.isSelected() );\r
+                                                  && _show_default_node_shapes_external_cbmi.isSelected() );\r
         options.setShowDefaultNodeShapesForMarkedNodes( ( _show_default_node_shapes_for_marked_cbmi != null )\r
-                && _show_default_node_shapes_for_marked_cbmi.isSelected() );\r
+                                                        && _show_default_node_shapes_for_marked_cbmi.isSelected() );\r
         if ( ( _non_lined_up_cladograms_rbmi != null ) && ( _non_lined_up_cladograms_rbmi.isSelected() ) ) {\r
             options.setCladogramType( CLADOGRAM_TYPE.NON_LINED_UP );\r
         }\r
@@ -1342,7 +1347,7 @@ public abstract class MainFrame extends JFrame implements ActionListener {
             options.setCladogramType( CLADOGRAM_TYPE.EXT_NODE_SUM_DEP );\r
         }\r
         options.setSearchCaseSensitive( ( _search_case_senstive_cbmi != null )\r
-                && _search_case_senstive_cbmi.isSelected() );\r
+                                        && _search_case_senstive_cbmi.isSelected() );\r
         if ( ( _show_scale_cbmi != null ) && _show_scale_cbmi.isEnabled() ) {\r
             options.setShowScale( _show_scale_cbmi.isSelected() );\r
         }\r
@@ -1356,14 +1361,14 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         }\r
         options.setShowOverview( ( _show_overview_cbmi != null ) && _show_overview_cbmi.isSelected() );\r
         options.setShowConfidenceStddev( ( _show_confidence_stddev_cbmi != null )\r
-                && _show_confidence_stddev_cbmi.isSelected() );\r
+                                         && _show_confidence_stddev_cbmi.isSelected() );\r
         if ( ( _color_by_taxonomic_group_cbmi != null ) && _color_by_taxonomic_group_cbmi.isEnabled() ) {\r
             options.setColorByTaxonomicGroup( _color_by_taxonomic_group_cbmi.isSelected() );\r
         }\r
         options.setPrintUsingActualSize( ( _print_using_actual_size_cbmi != null )\r
-                && ( _print_using_actual_size_cbmi.isSelected() ) );\r
+                                         && ( _print_using_actual_size_cbmi.isSelected() ) );\r
         options.setGraphicsExportUsingActualSize( ( _graphics_export_using_actual_size_cbmi != null )\r
-                && ( _graphics_export_using_actual_size_cbmi.isSelected() ) );\r
+                                                  && ( _graphics_export_using_actual_size_cbmi.isSelected() ) );\r
         options.setAntialiasPrint( ( _antialias_print_cbmi != null ) && _antialias_print_cbmi.isSelected() );\r
         if ( ( _use_brackets_for_conf_in_nh_export_cbmi != null )\r
                 && _use_brackets_for_conf_in_nh_export_cbmi.isSelected() ) {\r
@@ -1377,9 +1382,9 @@ public abstract class MainFrame extends JFrame implements ActionListener {
             options.setNhConversionSupportValueStyle( NH_CONVERSION_SUPPORT_VALUE_STYLE.NONE );\r
         }\r
         options.setPrintBlackAndWhite( ( _print_black_and_white_cbmi != null )\r
-                && _print_black_and_white_cbmi.isSelected() );\r
+                                       && _print_black_and_white_cbmi.isSelected() );\r
         options.setInternalNumberAreConfidenceForNhParsing( ( _internal_number_are_confidence_for_nh_parsing_cbmi != null )\r
-                && _internal_number_are_confidence_for_nh_parsing_cbmi.isSelected() );\r
+                                                            && _internal_number_are_confidence_for_nh_parsing_cbmi.isSelected() );\r
         if ( ( _extract_taxonomy_pfam_strict_rbmi != null ) && _extract_taxonomy_pfam_strict_rbmi.isSelected() ) {\r
             options.setTaxonomyExtraction( TAXONOMY_EXTRACTION.PFAM_STYLE_STRICT );\r
         }\r
@@ -1393,14 +1398,14 @@ public abstract class MainFrame extends JFrame implements ActionListener {
             options.setTaxonomyExtraction( TAXONOMY_EXTRACTION.NO );\r
         }\r
         options.setReplaceUnderscoresInNhParsing( ( _replace_underscores_cbmi != null )\r
-                && _replace_underscores_cbmi.isSelected() );\r
+                                                  && _replace_underscores_cbmi.isSelected() );\r
         options.setAllowErrorsInDistanceToParent( ( _allow_errors_in_distance_to_parent_cbmi != null )\r
-                && _allow_errors_in_distance_to_parent_cbmi.isSelected() );\r
+                                                  && _allow_errors_in_distance_to_parent_cbmi.isSelected() );\r
         options.setMatchWholeTermsOnly( ( _search_whole_words_only_cbmi != null )\r
-                && _search_whole_words_only_cbmi.isSelected() );\r
+                                        && _search_whole_words_only_cbmi.isSelected() );\r
         options.setSearchWithRegex( ( _search_with_regex_cbmi != null ) && _search_with_regex_cbmi.isSelected() );\r
         options.setInverseSearchResult( ( _inverse_search_result_cbmi != null )\r
-                && _inverse_search_result_cbmi.isSelected() );\r
+                                        && _inverse_search_result_cbmi.isSelected() );\r
         if ( _graphics_export_visible_only_cbmi != null ) {\r
             options.setGraphicsExportVisibleOnly( _graphics_export_visible_only_cbmi.isSelected() );\r
             if ( _graphics_export_visible_only_cbmi.isSelected() && ( _graphics_export_using_actual_size_cbmi != null ) ) {\r
@@ -1466,8 +1471,8 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                 title = "\"" + getMainPanel().getCurrentPhylogeny().getName() + "\" in " + title;\r
             }\r
             showTextFrame( _mainpanel.getCurrentPhylogeny().toNewHampshire( getOptions()\r
-                                   .getNhConversionSupportValueStyle() ),\r
-                           title );\r
+                                                                            .getNhConversionSupportValueStyle() ),\r
+                                                                            title );\r
         }\r
     }\r
 \r
@@ -1490,10 +1495,10 @@ public abstract class MainFrame extends JFrame implements ActionListener {
             }\r
             if ( ( nodes == null ) || nodes.isEmpty() ) {\r
                 JOptionPane\r
-                        .showMessageDialog( this,\r
-                                            "Need to select nodes, either via direct selection or via the \"Search\" function",\r
-                                            "No nodes selected for annotation",\r
-                                            JOptionPane.ERROR_MESSAGE );\r
+                .showMessageDialog( this,\r
+                                    "Need to select nodes, either via direct selection or via the \"Search\" function",\r
+                                    "No nodes selected for annotation",\r
+                                    JOptionPane.ERROR_MESSAGE );\r
                 return;\r
             }\r
             final Phylogeny phy = getMainPanel().getCurrentPhylogeny();\r
@@ -1512,7 +1517,7 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                                                                   my_panel,\r
                                                                   "Enter the sequence annotation(s) for the "\r
                                                                           + nodes.size() + " selected nodes",\r
-                                                                  JOptionPane.OK_CANCEL_OPTION );\r
+                                                                          JOptionPane.OK_CANCEL_OPTION );\r
                 if ( result == JOptionPane.OK_OPTION ) {\r
                     String ref = ref_field.getText();\r
                     String desc = desc_filed.getText();\r
@@ -1539,7 +1544,7 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                         for( final PhylogenyNode n : nodes ) {\r
                             ForesterUtil.ensurePresenceOfSequence( n );\r
                             final Annotation ann = ForesterUtil.isEmpty( ref ) ? new Annotation()\r
-                                    : new Annotation( ref );\r
+                            : new Annotation( ref );\r
                             if ( !ForesterUtil.isEmpty( desc ) ) {\r
                                 ann.setDesc( desc );\r
                             }\r
@@ -1564,11 +1569,11 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                 .showInputDialog( this,\r
                                   "Please enter the minimum for confidence values to be displayed.\n"\r
                                           + "[current value: " + getOptions().getMinConfidenceValue() + "]\n",\r
-                                  "Minimal Confidence Value",\r
-                                  JOptionPane.QUESTION_MESSAGE,\r
-                                  null,\r
-                                  null,\r
-                                  getOptions().getMinConfidenceValue() );\r
+                                          "Minimal Confidence Value",\r
+                                          JOptionPane.QUESTION_MESSAGE,\r
+                                          null,\r
+                                          null,\r
+                                          getOptions().getMinConfidenceValue() );\r
         if ( !ForesterUtil.isEmpty( s ) ) {\r
             boolean success = true;\r
             double m = 0.0;\r
@@ -1676,11 +1681,11 @@ public abstract class MainFrame extends JFrame implements ActionListener {
                                                                  "Please enter the default size for node shapes.\n"\r
                                                                          + "[current value: "\r
                                                                          + options.getDefaultNodeShapeSize() + "]\n",\r
-                                                                 "Node Shape Size",\r
-                                                                 JOptionPane.QUESTION_MESSAGE,\r
-                                                                 null,\r
-                                                                 null,\r
-                                                                 options.getDefaultNodeShapeSize() );\r
+                                                                         "Node Shape Size",\r
+                                                                         JOptionPane.QUESTION_MESSAGE,\r
+                                                                         null,\r
+                                                                         null,\r
+                                                                         options.getDefaultNodeShapeSize() );\r
         if ( !ForesterUtil.isEmpty( s ) ) {\r
             boolean success = true;\r
             double m = 0.0;\r
@@ -1760,6 +1765,28 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         }\r
     }\r
 \r
+    static void cycleNodeDataReturn( final Options op, final TreePanel tree_panel ) {\r
+        switch ( op.getExtDescNodeDataToReturn() ) {\r
+            case UNKNOWN:\r
+                op.setExtDescNodeDataToReturn( NodeData.NODE_DATA.DOMAINS_ALL );\r
+                break;\r
+            case DOMAINS_ALL:\r
+                op.setExtDescNodeDataToReturn( NodeData.NODE_DATA.DOMAINS_COLLAPSED_PER_PROTEIN );\r
+                break;\r
+            case DOMAINS_COLLAPSED_PER_PROTEIN:\r
+                op.setExtDescNodeDataToReturn( NodeData.NODE_DATA.GO_TERM_IDS );\r
+                break;\r
+            case GO_TERM_IDS:\r
+                op.setExtDescNodeDataToReturn( NodeData.NODE_DATA.SEQUENCE_MOL_SEQ );\r
+                break;\r
+            case SEQUENCE_MOL_SEQ:\r
+                op.setExtDescNodeDataToReturn( NodeData.NODE_DATA.SEQUENCE_MOL_SEQ_FASTA );\r
+                break;\r
+            default:\r
+                op.setExtDescNodeDataToReturn( NodeData.NODE_DATA.UNKNOWN );\r
+        }\r
+    }\r
+\r
     static void cycleOverview( final Options op, final TreePanel tree_panel ) {\r
         switch ( op.getOvPlacement() ) {\r
             case LOWER_LEFT:\r
@@ -1802,6 +1829,16 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         }\r
     }\r
 \r
+    static void setCycleDataReturnMenuItem( final JMenuItem mi, final Options options ) {\r
+        if ( ( options != null ) && ( options.getExtDescNodeDataToReturn() != null ) ) {\r
+            mi.setText( "Cycle Node Return Data... (current: "\r
+                    + options.getExtDescNodeDataToReturn().toString().toLowerCase() + ")" );\r
+        }\r
+        else {\r
+            mi.setText( "Cycle Node Return Data..." );\r
+        }\r
+    }\r
+\r
     static void setOvPlacementColorChooseMenuItem( final JMenuItem mi, final Options options ) {\r
         if ( ( options != null ) && ( options.getOvPlacement() != null ) ) {\r
             mi.setText( "Cycle Overview Placement... (current: " + options.getOvPlacement() + ")" );\r
@@ -1814,7 +1851,7 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     static void setTextColorChooseMenuItem( final JMenuItem mi, final TreePanel tree_panel ) {\r
         if ( ( tree_panel != null ) && ( tree_panel.getTreeColorSet() != null ) ) {\r
             mi.setText( "Select Color Scheme... (current: " + tree_panel.getTreeColorSet().getCurrentColorSchemeName()\r
-                    + ")" );\r
+                        + ")" );\r
         }\r
         else {\r
             mi.setText( "Select Color Scheme..." );\r
index 74588a2..d2a3233 100644 (file)
@@ -188,6 +188,7 @@ public final class MainFrameApplet extends MainFrame {
                 MainFrame.setCycleNodeFillMenuItem( _cycle_node_fill_mi, getOptions() );
                 MainFrame.setCycleNodeShapeMenuItem( _cycle_node_shape_mi, getOptions() );
                 MainFrame.setTextNodeSizeMenuItem( _choose_node_size_mi, getOptions() );
+                MainFrame.setCycleDataReturnMenuItem( _cycle_data_return, getOptions() );
                 try {
                     getMainPanel().getControlPanel().setVisibilityOfDomainStrucureCB();
                     getMainPanel().getControlPanel().setVisibilityOfX();
index 57c2cb4..bccdd9d 100644 (file)
@@ -881,6 +881,8 @@ public final class MainFrameApplication extends MainFrame {
                 setTextForPdfLineWidthChooserMenuItem( _choose_pdf_width_mi, getOptions() );\r
                 MainFrame.setCycleNodeFillMenuItem( _cycle_node_fill_mi, getOptions() );\r
                 MainFrame.setCycleNodeShapeMenuItem( _cycle_node_shape_mi, getOptions() );\r
+                \r
+                MainFrame.setCycleDataReturnMenuItem( _cycle_data_return, getOptions() );\r
                 MainFrame.setTextNodeSizeMenuItem( _choose_node_size_mi, getOptions() );\r
                 try {\r
                     getMainPanel().getControlPanel().setVisibilityOfDomainStrucureCB();\r
@@ -931,6 +933,8 @@ public final class MainFrameApplication extends MainFrame {
         _options_jmenu.add( _switch_colors_mi = new JMenuItem( "" ) );\r
         _options_jmenu.add( _choose_font_mi = new JMenuItem( "" ) );\r
         _options_jmenu.addSeparator();\r
+        _options_jmenu.add( _cycle_data_return = new JMenuItem( "Cycle Data Return" ) );\r
+        _options_jmenu.addSeparator();\r
         _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( SEARCH_SUBHEADER ), getConfiguration() ) );\r
         _options_jmenu.add( _search_case_senstive_cbmi = new JCheckBoxMenuItem( SEARCH_CASE_SENSITIVE_LABEL ) );\r
         _options_jmenu.add( _search_whole_words_only_cbmi = new JCheckBoxMenuItem( SEARCH_TERMS_ONLY_LABEL ) );\r
@@ -997,6 +1001,8 @@ public final class MainFrameApplication extends MainFrame {
         customizeJMenuItem( _cycle_node_shape_mi );\r
         customizeJMenuItem( _cycle_node_fill_mi );\r
         customizeJMenuItem( _choose_node_size_mi );\r
+        customizeJMenuItem( _cycle_data_return);\r
+        \r
         customizeCheckBoxMenuItem( _color_labels_same_as_parent_branch, getOptions().isColorLabelsSameAsParentBranch() );\r
         customizeCheckBoxMenuItem( _color_by_taxonomic_group_cbmi, getOptions().isColorByTaxonomicGroup() );\r
         customizeCheckBoxMenuItem( _screen_antialias_cbmi, getOptions().isAntialiasScreen() );\r
index 10d03ab..6f21d82 100644 (file)
@@ -3608,7 +3608,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee
             case GO_TERM_IDS:
                 return "GO Term IDs";    
             case UNKNOWN:
-                return "User Selected Data";
+                return "User/UI Selected Data Fields";
             default:
                 throw new IllegalArgumentException( "unknown data element: "
                         + getOptions().getExtDescNodeDataToReturn() );
@@ -5674,7 +5674,7 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee
             }
         } // for loop
         final StringBuilder sb = new StringBuilder();
-        final int size = TreePanelUtil.makeSB( data, getOptions(), sb );
+        final int size = TreePanelUtil.nodeDataIntoStringBuffer( data, getOptions(), sb );
         if ( ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.CONSOLE )
                 || ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.BUFFER_ONLY ) ) {
             if ( getConfiguration().getExtNodeDataReturnOn() == EXT_NODE_DATA_RETURN_ON.CONSOLE ) {
index 812ff3f..fd537b0 100644 (file)
@@ -6,6 +6,7 @@ import java.awt.Component;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -33,6 +34,7 @@ import org.forester.phylogeny.iterators.PreorderTreeIterator;
 import org.forester.util.ForesterConstants;
 import org.forester.util.ForesterUtil;
 import org.forester.util.SequenceAccessionTools;
+import org.forester.util.StringInt;
 import org.forester.ws.seqdb.UniProtTaxonomy;
 
 public class TreePanelUtil {
@@ -437,7 +439,7 @@ public class TreePanelUtil {
                 .getSynonyms().isEmpty() );
     }
 
-    static int makeSB( final List<String> data, final Options optz, final StringBuilder sb ) {
+    static int nodeDataIntoStringBuffer( final List<String> data, final Options optz, final StringBuilder sb ) {
         final SortedMap<String, Integer> map = new TreeMap<String, Integer>();
         int size = 0;
         if ( ( optz.getExtDescNodeDataToReturn() != NODE_DATA.SEQUENCE_MOL_SEQ )
@@ -453,13 +455,30 @@ public class TreePanelUtil {
                     }
                 }
             }
-            for( final Entry<String, Integer> e : map.entrySet() ) {
-                final String v = e.getKey();
-                final Object c = e.getValue();
-                sb.append( v );
-                sb.append( "\t" );
-                sb.append( c );
-                sb.append( ForesterUtil.LINE_SEPARATOR );
+            if ( ( optz.getExtDescNodeDataToReturn() == NODE_DATA.DOMAINS_ALL )
+                    || ( optz.getExtDescNodeDataToReturn() == NODE_DATA.DOMAINS_COLLAPSED_PER_PROTEIN )
+                    || ( optz.getExtDescNodeDataToReturn() == NODE_DATA.SEQ_ANNOTATIONS ) ) {
+                final ArrayList<StringInt> sis = new ArrayList<StringInt>();
+                for( final Entry<String, Integer> e : map.entrySet() ) {
+                    sis.add( new StringInt( e.getKey(), e.getValue() ) );
+                }
+                Collections.sort( sis, new StringInt.DescendingIntComparator() );
+                for( final StringInt si : sis ) {
+                    sb.append( si.getString() );
+                    sb.append( "\t" );
+                    sb.append( si.getInt() );
+                    sb.append( ForesterUtil.LINE_SEPARATOR );
+                }
+            }
+            else {
+                for( final Entry<String, Integer> e : map.entrySet() ) {
+                    final String v = e.getKey();
+                    final Object c = e.getValue();
+                    sb.append( v );
+                    sb.append( "\t" );
+                    sb.append( c );
+                    sb.append( ForesterUtil.LINE_SEPARATOR );
+                }
             }
             size = map.size();
         }
index a9799db..60d52f3 100644 (file)
@@ -55,6 +55,27 @@ public class NodeData implements PhylogenyData {
         SEQ_ANNOTATIONS,
         DOMAINS_ALL,
         DOMAINS_COLLAPSED_PER_PROTEIN;
+        public String toString() {
+            switch(this) {
+                case DOMAINS_ALL: return "horseshit";
+                case DOMAINS_COLLAPSED_PER_PROTEIN: return "horseshit";
+                case EVENT: return "horseshit";
+                case GENE_NAME: return "horseshit";
+                case GO_TERM_IDS: return "horseshit";
+                case NODE_NAME: return "horseshit";
+                case SEQ_ANNOTATIONS: return "horseshit";
+                case SEQUENCE_ACC: return "horseshit";
+                case SEQUENCE_MOL_SEQ: return "horseshit";
+                case SEQUENCE_MOL_SEQ_FASTA: return "horseshit";
+                case SEQUENCE_NAME: return "horseshit";
+                case SEQUENCE_SYMBOL: return "horseshit";
+                case TAXONOMY_CODE: return "horseshit";
+                case TAXONOMY_COMM0N_NAME: return "horseshit";
+                case TAXONOMY_SCIENTIFIC_NAME: return "horseshit";
+                case UNKNOWN: return "horseshit";
+                default: throw new IllegalArgumentException();
+              }
+        }
     }
     private String             _node_name;
     private Event              _event;
diff --git a/forester/java/src/org/forester/util/StringInt.java b/forester/java/src/org/forester/util/StringInt.java
new file mode 100644 (file)
index 0000000..84f0726
--- /dev/null
@@ -0,0 +1,37 @@
+\r
+package org.forester.util;\r
+\r
+import java.util.Comparator;\r
+\r
+public class StringInt {\r
+\r
+    private final String _s;\r
+    private final int    _i;\r
+\r
+    public StringInt( final String s, final int i ) {\r
+        _s = s;\r
+        _i = i;\r
+    }\r
+\r
+    public String getString() {\r
+        return _s;\r
+    }\r
+\r
+    public int getInt() {\r
+        return _i;\r
+    }\r
+\r
+    public static final class DescendingIntComparator implements Comparator<StringInt> {\r
+\r
+        @Override\r
+        public int compare( final StringInt o1, final StringInt o2 ) {\r
+            if ( o1.getInt() > o2.getInt() ) {\r
+                return -1;\r
+            }\r
+            if ( o1.getInt() < o2.getInt() ) {\r
+                return 1;\r
+            }\r
+            return 0;\r
+        }\r
+    }\r
+}\r