added a close button
[jalview.git] / forester / java / src / org / forester / archaeopteryx / MainFrameApplication.java
index 6b2c76c..b940f35 100644 (file)
@@ -63,7 +63,6 @@ import org.forester.analysis.TaxonomyDataManager;
 import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE;\r
 import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION;\r
 import org.forester.archaeopteryx.Options.PHYLOGENY_GRAPHICS_TYPE;\r
-import org.forester.archaeopteryx.tools.AncestralTaxonomyInferrer;\r
 import org.forester.archaeopteryx.tools.InferenceManager;\r
 import org.forester.archaeopteryx.tools.PhyloInferenceDialog;\r
 import org.forester.archaeopteryx.tools.PhylogeneticInferenceOptions;\r
@@ -105,13 +104,11 @@ import org.forester.util.ForesterUtil;
 \r
 public final class MainFrameApplication extends MainFrame {\r
 \r
-    static final String                  INFER_ANCESTOR_TAXONOMIES             = "Infer Ancestor Taxonomies";\r
-    static final String                  OBTAIN_DETAILED_TAXONOMIC_INFORMATION = "Obtain Detailed Taxonomic Information";\r
-    private final static int             FRAME_X_SIZE                          = 800;\r
-    private final static int             FRAME_Y_SIZE                          = 800;\r
+    private final static int             FRAME_X_SIZE                    = 800;\r
+    private final static int             FRAME_Y_SIZE                    = 800;\r
     // Filters for the file-open dialog (classes defined in this file)\r
-    private static final long            serialVersionUID                      = -799735726778865234L;\r
-    private static final boolean         PREPROCESS_TREES                      = false;\r
+    private static final long            serialVersionUID                = -799735726778865234L;\r
+    private static final boolean         PREPROCESS_TREES                = false;\r
     private final JFileChooser           _values_filechooser;\r
     private final JFileChooser           _sequences_filechooser;\r
     private final JFileChooser           _open_filechooser;\r
@@ -124,18 +121,18 @@ public final class MainFrameApplication extends MainFrame {
     private ButtonGroup                  _radio_group_1;\r
     private ButtonGroup                  _radio_group_2;\r
     // Others:\r
-    double                               _min_not_collapse                     = Constants.MIN_NOT_COLLAPSE_DEFAULT;\r
-    double                               _min_not_collapse_bl                  = 0.001;\r
+    double                               _min_not_collapse               = AptxConstants.MIN_NOT_COLLAPSE_DEFAULT;\r
+    double                               _min_not_collapse_bl            = 0.001;\r
     // Phylogeny Inference menu\r
     private JMenu                        _inference_menu;\r
     private JMenuItem                    _inference_from_msa_item;\r
     private JMenuItem                    _inference_from_seqs_item;\r
     // Phylogeny Inference\r
-    private PhylogeneticInferenceOptions _phylogenetic_inference_options       = null;\r
-    private Msa                          _msa                                  = null;\r
-    private File                         _msa_file                             = null;\r
-    private List<MolecularSequence>      _seqs                                 = null;\r
-    private File                         _seqs_file                            = null;\r
+    private PhylogeneticInferenceOptions _phylogenetic_inference_options = null;\r
+    private Msa                          _msa                            = null;\r
+    private File                         _msa_file                       = null;\r
+    private List<MolecularSequence>      _seqs                           = null;\r
+    private File                         _seqs_file                      = null;\r
     JMenuItem                            _read_values_jmi;\r
     JMenuItem                            _read_seqs_jmi;\r
 \r
@@ -200,7 +197,7 @@ public final class MainFrameApplication extends MainFrame {
         }\r
         try {\r
             boolean synth_exception = false;\r
-            if ( Constants.__SYNTH_LF ) {\r
+            if ( AptxConstants.__SYNTH_LF ) {\r
                 try {\r
                     final SynthLookAndFeel synth = new SynthLookAndFeel();\r
                     synth.load( MainFrameApplication.class.getResourceAsStream( "/resources/synth_look_and_feel_1.xml" ),\r
@@ -209,12 +206,12 @@ public final class MainFrameApplication extends MainFrame {
                 }\r
                 catch ( final Exception ex ) {\r
                     synth_exception = true;\r
-                    ForesterUtil.printWarningMessage( Constants.PRG_NAME,\r
+                    ForesterUtil.printWarningMessage( AptxConstants.PRG_NAME,\r
                                                       "could not create synth look and feel: "\r
                                                               + ex.getLocalizedMessage() );\r
                 }\r
             }\r
-            if ( !Constants.__SYNTH_LF || synth_exception ) {\r
+            if ( !AptxConstants.__SYNTH_LF || synth_exception ) {\r
                 if ( _configuration.isUseNativeUI() ) {\r
                     UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );\r
                 }\r
@@ -244,14 +241,12 @@ public final class MainFrameApplication extends MainFrame {
         setOptions( Options.createInstance( _configuration ) );\r
         setInferenceManager( InferenceManager.createInstance( _configuration ) );\r
         setPhylogeneticInferenceOptions( PhylogeneticInferenceOptions.createInstance( _configuration ) );\r
-        //     _textframe = null; #~~~~\r
         // set title\r
-        setTitle( Constants.PRG_NAME + " " + Constants.VERSION + " (" + Constants.PRG_DATE + ")" );\r
+        setTitle( AptxConstants.PRG_NAME + " " + AptxConstants.VERSION + " (" + AptxConstants.PRG_DATE + ")" );\r
         _mainpanel = new MainPanel( _configuration, this );\r
         // The file dialogs\r
         _open_filechooser = new JFileChooser();\r
-        _open_filechooser.setCurrentDirectory( new File( "." ) );\r
-        _open_filechooser.setMultiSelectionEnabled( false );\r
+        _open_filechooser.setMultiSelectionEnabled( true );\r
         _open_filechooser.addChoosableFileFilter( MainFrame.xmlfilter );\r
         _open_filechooser.addChoosableFileFilter( MainFrame.nhxfilter );\r
         _open_filechooser.addChoosableFileFilter( MainFrame.nhfilter );\r
@@ -260,51 +255,48 @@ public final class MainFrameApplication extends MainFrame {
         _open_filechooser.addChoosableFileFilter( _open_filechooser.getAcceptAllFileFilter() );\r
         _open_filechooser.setFileFilter( MainFrame.defaultfilter );\r
         _open_filechooser_for_species_tree = new JFileChooser();\r
-        _open_filechooser_for_species_tree.setCurrentDirectory( new File( "." ) );\r
         _open_filechooser_for_species_tree.setMultiSelectionEnabled( false );\r
         _open_filechooser_for_species_tree.addChoosableFileFilter( MainFrame.xmlfilter );\r
         _open_filechooser_for_species_tree.addChoosableFileFilter( MainFrame.tolfilter );\r
         _open_filechooser_for_species_tree.setFileFilter( MainFrame.xmlfilter );\r
-        _save_filechooser = new JFileChooser();\r
-        _save_filechooser.setCurrentDirectory( new File( "." ) );\r
-        _save_filechooser.setMultiSelectionEnabled( false );\r
-        _save_filechooser.setFileFilter( MainFrame.xmlfilter );\r
-        _save_filechooser.addChoosableFileFilter( MainFrame.nhfilter );\r
-        _save_filechooser.addChoosableFileFilter( MainFrame.nexusfilter );\r
-        _save_filechooser.addChoosableFileFilter( _save_filechooser.getAcceptAllFileFilter() );\r
-        _writetopdf_filechooser = new JFileChooser();\r
-        _writetopdf_filechooser.addChoosableFileFilter( MainFrame.pdffilter );\r
-        _writetographics_filechooser = new JFileChooser();\r
-        _writetographics_filechooser.addChoosableFileFilter( MainFrame.graphicsfilefilter );\r
         // Msa:\r
         _msa_filechooser = new JFileChooser();\r
         _msa_filechooser.setName( "Read Multiple Sequence Alignment File" );\r
-        _msa_filechooser.setCurrentDirectory( new File( "." ) );\r
         _msa_filechooser.setMultiSelectionEnabled( false );\r
         _msa_filechooser.addChoosableFileFilter( _msa_filechooser.getAcceptAllFileFilter() );\r
         _msa_filechooser.addChoosableFileFilter( MainFrame.msafilter );\r
         // Seqs:\r
         _seqs_pi_filechooser = new JFileChooser();\r
         _seqs_pi_filechooser.setName( "Read Sequences File" );\r
-        _seqs_pi_filechooser.setCurrentDirectory( new File( "." ) );\r
         _seqs_pi_filechooser.setMultiSelectionEnabled( false );\r
         _seqs_pi_filechooser.addChoosableFileFilter( _seqs_pi_filechooser.getAcceptAllFileFilter() );\r
         _seqs_pi_filechooser.addChoosableFileFilter( MainFrame.seqsfilter );\r
         // Expression\r
         _values_filechooser = new JFileChooser();\r
-        _values_filechooser.setCurrentDirectory( new File( "." ) );\r
         _values_filechooser.setMultiSelectionEnabled( false );\r
         // Sequences\r
         _sequences_filechooser = new JFileChooser();\r
-        _sequences_filechooser.setCurrentDirectory( new File( "." ) );\r
         _sequences_filechooser.setMultiSelectionEnabled( false );\r
+        try {\r
+            final String home_dir = System.getProperty( "user.home" );\r
+            _open_filechooser.setCurrentDirectory( new File( home_dir ) );\r
+            _open_filechooser_for_species_tree.setCurrentDirectory( new File( home_dir ) );\r
+            _msa_filechooser.setCurrentDirectory( new File( home_dir ) );\r
+            _seqs_pi_filechooser.setCurrentDirectory( new File( home_dir ) );\r
+            _values_filechooser.setCurrentDirectory( new File( home_dir ) );\r
+            _sequences_filechooser.setCurrentDirectory( new File( home_dir ) );\r
+        }\r
+        catch ( final Exception e ) {\r
+            e.printStackTrace();\r
+            // Do nothing. Not important.\r
+        }\r
         // build the menu bar\r
         _jmenubar = new JMenuBar();\r
         if ( !_configuration.isUseNativeUI() ) {\r
             _jmenubar.setBackground( getConfiguration().getGuiMenuBackgroundColor() );\r
         }\r
         buildFileMenu();\r
-        if ( Constants.__ALLOW_PHYLOGENETIC_INFERENCE ) {\r
+        if ( AptxConstants.__ALLOW_PHYLOGENETIC_INFERENCE ) {\r
             buildPhylogeneticInferenceMenu();\r
         }\r
         buildAnalysisMenu();\r
@@ -409,16 +401,6 @@ public final class MainFrameApplication extends MainFrame {
             else if ( o == _load_species_tree_item ) {\r
                 readSpeciesTreeFromFile();\r
             }\r
-            else if ( o == _lineage_inference ) {\r
-                if ( isSubtreeDisplayed() ) {\r
-                    JOptionPane.showMessageDialog( this,\r
-                                                   "Subtree is shown.",\r
-                                                   "Cannot infer ancestral taxonomies",\r
-                                                   JOptionPane.ERROR_MESSAGE );\r
-                    return;\r
-                }\r
-                executeLineageInference();\r
-            }\r
             else if ( o == _obtain_detailed_taxonomic_information_jmi ) {\r
                 if ( isSubtreeDisplayed() ) {\r
                     return;\r
@@ -1440,7 +1422,6 @@ public final class MainFrameApplication extends MainFrame {
         Phylogeny[] phys = null;\r
         // Set an initial directory if none set yet\r
         final File my_dir = getCurrentDir();\r
-        _open_filechooser.setMultiSelectionEnabled( true );\r
         // Open file-open dialog and set current directory\r
         if ( my_dir != null ) {\r
             _open_filechooser.setCurrentDirectory( my_dir );\r
@@ -1863,6 +1844,7 @@ public final class MainFrameApplication extends MainFrame {
         _options_jmenu.add( _search_with_regex_cbmi = new JCheckBoxMenuItem( MainFrame.SEARCH_REGEX_LABEL ) );\r
         _search_with_regex_cbmi.setToolTipText( MainFrame.SEARCH_WITH_REGEX_TIP );\r
         _options_jmenu.add( _inverse_search_result_cbmi = new JCheckBoxMenuItem( INVERSE_SEARCH_RESULT_LABEL ) );\r
+        _options_jmenu.add( _color_all_found_nodes_when_coloring_subtree_cbmi = new JCheckBoxMenuItem( "Colorize All Found Nodes When Colorizing Subtree(s)" ) ); \r
         _options_jmenu.addSeparator();\r
         _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( "Graphics Export & Printing:" ),\r
                                                       getConfiguration() ) );\r
@@ -1877,7 +1859,7 @@ public final class MainFrameApplication extends MainFrame {
         _options_jmenu.add( _print_size_mi = new JMenuItem( "" ) );\r
         _options_jmenu.add( _choose_pdf_width_mi = new JMenuItem( "" ) );\r
         _options_jmenu.addSeparator();\r
-        _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( "Newick/NHX/Nexus Input:" ), getConfiguration() ) );\r
+        _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( "Newick/NHX/Nexus Read:" ), getConfiguration() ) );\r
         _options_jmenu\r
         .add( _internal_number_are_confidence_for_nh_parsing_cbmi = new JCheckBoxMenuItem( "Internal Node Names are Confidence Values" ) );\r
         _options_jmenu.add( _replace_underscores_cbmi = new JCheckBoxMenuItem( "Replace Underscores with Spaces" ) );\r
@@ -1901,7 +1883,7 @@ public final class MainFrameApplication extends MainFrame {
         _radio_group_2.add( _extract_taxonomy_pfam_strict_rbmi );\r
         _radio_group_2.add( _extract_taxonomy_pfam_relaxed_rbmi );\r
         _radio_group_2.add( _extract_taxonomy_agressive_rbmi );\r
-        _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( "Newick/Nexus Output:" ), getConfiguration() ) );\r
+        _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( "Newick/Nexus Save:" ), getConfiguration() ) );\r
         _options_jmenu\r
         .add( _use_brackets_for_conf_in_nh_export_cbmi = new JCheckBoxMenuItem( USE_BRACKETS_FOR_CONF_IN_NH_LABEL ) );\r
         _use_brackets_for_conf_in_nh_export_cbmi\r
@@ -1960,6 +1942,7 @@ public final class MainFrameApplication extends MainFrame {
         customizeCheckBoxMenuItem( _search_with_regex_cbmi, getOptions().isSearchWithRegex() );\r
         customizeCheckBoxMenuItem( _search_whole_words_only_cbmi, getOptions().isMatchWholeTermsOnly() );\r
         customizeCheckBoxMenuItem( _inverse_search_result_cbmi, getOptions().isInverseSearchResult() );\r
+        customizeCheckBoxMenuItem( _color_all_found_nodes_when_coloring_subtree_cbmi, getOptions().isColorAllFoundNodesWhenColoringSubtree() ); \r
         customizeCheckBoxMenuItem( _graphics_export_visible_only_cbmi, getOptions().isGraphicsExportVisibleOnly() );\r
         customizeCheckBoxMenuItem( _print_using_actual_size_cbmi, getOptions().isPrintUsingActualSize() );\r
         customizeCheckBoxMenuItem( _graphics_export_using_actual_size_cbmi, getOptions()\r
@@ -2094,24 +2077,6 @@ public final class MainFrameApplication extends MainFrame {
         exit();\r
     }\r
 \r
-    void executeLineageInference() {\r
-        if ( ( _mainpanel.getCurrentPhylogeny() == null ) || ( _mainpanel.getCurrentPhylogeny().isEmpty() ) ) {\r
-            return;\r
-        }\r
-        if ( !_mainpanel.getCurrentPhylogeny().isRooted() ) {\r
-            JOptionPane.showMessageDialog( this,\r
-                                           "Phylogeny is not rooted.",\r
-                                           "Cannot infer ancestral taxonomies",\r
-                                           JOptionPane.ERROR_MESSAGE );\r
-            return;\r
-        }\r
-        final AncestralTaxonomyInferrer inferrer = new AncestralTaxonomyInferrer( this,\r
-                                                                                  _mainpanel.getCurrentTreePanel(),\r
-                                                                                  _mainpanel.getCurrentPhylogeny()\r
-                                                                                  .copy() );\r
-        new Thread( inferrer ).start();\r
-    }\r
-\r
     void exit() {\r
         removeAllTextFrames();\r
         _mainpanel.terminate();\r