in progress
[jalview.git] / forester / java / src / org / forester / archaeopteryx / MainFrame.java
index 95d8b92..0e8f328 100644 (file)
@@ -47,6 +47,8 @@ import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE;
 import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION;
 import org.forester.archaeopteryx.Options.PHYLOGENY_GRAPHICS_TYPE;
 import org.forester.phylogeny.Phylogeny;
+import org.forester.phylogeny.data.NodeVisualization.NodeFill;
+import org.forester.phylogeny.data.NodeVisualization.NodeShape;
 import org.forester.util.ForesterConstants;
 import org.forester.util.ForesterUtil;
 
@@ -114,10 +116,12 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     JMenuItem                 _midpoint_root_item;
     JMenuItem                 _taxcolor_item;
     JMenuItem                 _confcolor_item;
+    JMenuItem                 _color_rank_jmi;
     JMenuItem                 _infer_common_sn_names_item;
     JMenuItem                 _collapse_species_specific_subtrees;
     JMenuItem                 _collapse_below_threshold;                                                                                                                                                                                //TODO implememt me
     JMenuItem                 _obtain_detailed_taxonomic_information_jmi;
+    JMenuItem                 _obtain_detailed_taxonomic_information_deleting_jmi;
     JMenuItem                 _obtain_uniprot_seq_information_jmi;
     JMenuItem                 _move_node_names_to_tax_sn_jmi;
     JMenuItem                 _move_node_names_to_seq_names_jmi;
@@ -228,6 +232,9 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         else if ( o == _confcolor_item ) {
             confColor();
         }
+        else if ( o == _color_rank_jmi ) {
+            colorRank();
+        }
         else if ( o == _infer_common_sn_names_item ) {
             if ( isSubtreeDisplayed() ) {
                 return;
@@ -636,6 +643,30 @@ public abstract class MainFrame extends JFrame implements ActionListener {
         }
     }
 
+    void colorRank() {
+        if ( _mainpanel.getCurrentTreePanel() != null ) {
+            final String[] ranks = Util.getAllRanks( _mainpanel.getCurrentTreePanel().getPhylogeny() );
+            if ( ranks.length < 1 ) {
+                JOptionPane.showMessageDialog( this,
+                                               "No rank information was found",
+                                               "No Rank Inoformation",
+                                               JOptionPane.WARNING_MESSAGE );
+                return;
+            }
+            final String rank = ( String ) JOptionPane
+                    .showInputDialog( this,
+                                      "What rank should the colorization be based on",
+                                      "Rank Selection",
+                                      JOptionPane.PLAIN_MESSAGE,
+                                      null,
+                                      ranks,
+                                      null );
+            if ( !ForesterUtil.isEmpty( rank ) ) {
+                _mainpanel.getCurrentTreePanel().colorRank( rank );
+            }
+        }
+    }
+
     void customizeCheckBoxMenuItem( final JCheckBoxMenuItem item, final boolean is_selected ) {
         if ( item != null ) {
             item.setFont( MainFrame.menu_font );
@@ -1118,13 +1149,13 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     static void cycleNodeFill( final Options op, final TreePanel tree_panel ) {
         switch ( op.getDefaultNodeFill() ) {
             case GRADIENT:
-                op.setDefaultNodeFill( Options.NodeFill.SOLID );
+                op.setDefaultNodeFill( NodeFill.SOLID );
                 break;
             case NONE:
-                op.setDefaultNodeFill( Options.NodeFill.GRADIENT );
+                op.setDefaultNodeFill( NodeFill.GRADIENT );
                 break;
             case SOLID:
-                op.setDefaultNodeFill( Options.NodeFill.NONE );
+                op.setDefaultNodeFill( NodeFill.NONE );
                 break;
             default:
                 throw new RuntimeException( "unknown fill: " + op.getDefaultNodeFill() );
@@ -1134,10 +1165,10 @@ public abstract class MainFrame extends JFrame implements ActionListener {
     static void cycleNodeShape( final Options op, final TreePanel tree_panel ) {
         switch ( op.getDefaultNodeShape() ) {
             case CIRCLE:
-                op.setDefaultNodeShape( Options.NodeShape.RECTANGLE );
+                op.setDefaultNodeShape( NodeShape.RECTANGLE );
                 break;
             case RECTANGLE:
-                op.setDefaultNodeShape( Options.NodeShape.CIRCLE );
+                op.setDefaultNodeShape( NodeShape.CIRCLE );
                 break;
             default:
                 throw new RuntimeException( "unknown shape: " + op.getDefaultNodeShape() );