X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FMainFrameApplet.java;h=11bbba5f3984ad015bb911c6f2b60fd7eb361f98;hb=12b27463955ee6d787d5c5e7cfbef303d8327669;hp=35cba7b73518cc892dd50bc6c9b73e1e798123ca;hpb=f6d7dfa06e34eaf7cc773cf7484e7b641296d452;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/MainFrameApplet.java b/forester/java/src/org/forester/archaeopteryx/MainFrameApplet.java index 35cba7b..11bbba5 100644 --- a/forester/java/src/org/forester/archaeopteryx/MainFrameApplet.java +++ b/forester/java/src/org/forester/archaeopteryx/MainFrameApplet.java @@ -33,6 +33,9 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.MalformedURLException; import java.net.URL; import javax.swing.ButtonGroup; @@ -40,13 +43,13 @@ import javax.swing.JApplet; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenuBar; import javax.swing.JMenuItem; -import javax.swing.JOptionPane; import javax.swing.JRadioButtonMenuItem; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE; import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION; +import org.forester.io.parsers.nhx.NHXParser.TAXONOMY_EXTRACTION; import org.forester.phylogeny.Phylogeny; import org.forester.util.ForesterUtil; @@ -58,61 +61,32 @@ public final class MainFrameApplet extends MainFrame { private final ArchaeopteryxA _applet; private ButtonGroup _radio_group_1; - MainFrameApplet( final ArchaeopteryxA parent_applet, final Configuration configuration ) { + MainFrameApplet( final ArchaeopteryxA parent_applet, + final Configuration configuration, + final String species_tree_url_str ) { setTitle( ArchaeopteryxA.NAME ); _applet = parent_applet; setConfiguration( configuration ); setOptions( Options.createInstance( configuration ) ); - //_textframes = null; //~~~~ - URL url = null; - Phylogeny[] phys = null; - // Get URL to tree file - if ( _applet.getUrlString() != null ) { - try { - url = new URL( _applet.getUrlString() ); - } - catch ( final Exception e ) { - ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, e.toString() ); - e.printStackTrace(); - JOptionPane.showMessageDialog( this, - ArchaeopteryxA.NAME + ": Could not create URL from: \"" - + _applet.getUrlString() + "\"\nError: " + e, - "Failed to create URL", - JOptionPane.ERROR_MESSAGE ); - close(); - } - } - // Load the tree from URL - if ( url != null ) { + _mainpanel = new MainPanelApplets( _configuration, this ); + if ( !ForesterUtil.isEmpty( species_tree_url_str ) ) { try { - phys = AptxUtil.readPhylogeniesFromUrl( url, - configuration.isValidatePhyloXmlAgainstSchema(), - configuration.isReplaceUnderscoresInNhParsing(), - configuration.isInternalNumberAreConfidenceForNhParsing(), - configuration.getTaxonomyExtraction() ); + readSpeciesTree( configuration, species_tree_url_str ); } catch ( final Exception e ) { + ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, "failed to read species tree from " + + species_tree_url_str ); ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, e.toString() ); - e.printStackTrace(); - JOptionPane.showMessageDialog( this, ArchaeopteryxA.NAME + ": Failed to read phylogenies: " - + "\nError: " + e, "Failed to read phylogenies", JOptionPane.ERROR_MESSAGE ); - close(); } } - if ( ( phys == null ) || ( phys.length < 1 ) ) { - ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, "phylogenies from [" + url + "] are null or empty" ); - JOptionPane.showMessageDialog( this, ArchaeopteryxA.NAME + ": phylogenies from [" + url - + "] are null or empty", "Failed to read phylogenies", JOptionPane.ERROR_MESSAGE ); - } - else { - AptxUtil.printAppletMessage( ArchaeopteryxA.NAME, "loaded " + phys.length + " phylogenies from: " + url ); - } - _mainpanel = new MainPanelApplets( _configuration, this ); // build the menu bar _jmenubar = new JMenuBar(); if ( !_configuration.isUseNativeUI() ) { _jmenubar.setBackground( _configuration.getGuiMenuBackgroundColor() ); } + if ( getSpeciesTree() != null ) { + buildAnalysisMenu(); + } buildToolsMenu(); buildViewMenu(); buildFontSizeMenu(); @@ -152,6 +126,54 @@ public final class MainFrameApplet extends MainFrame { System.gc(); } + private void readSpeciesTree( final Configuration configuration, final String species_tree_url_str ) + throws MalformedURLException, FileNotFoundException, IOException { + final URL species_tree_url = new URL( species_tree_url_str ); + final Phylogeny[] species_trees = AptxUtil.readPhylogeniesFromUrl( species_tree_url, + configuration + .isValidatePhyloXmlAgainstSchema(), + configuration + .isReplaceUnderscoresInNhParsing(), + false, + TAXONOMY_EXTRACTION.NO, + false ); + if ( ( species_trees != null ) && ( species_trees.length > 0 ) ) { + AptxUtil.printAppletMessage( ArchaeopteryxA.NAME, "successfully read species tree" ); + if ( species_trees[ 0 ].isEmpty() ) { + ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, "species tree is empty" ); + } + else if ( !species_trees[ 0 ].isRooted() ) { + ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, "species tree is not rooted" ); + } + else { + setSpeciesTree( species_trees[ 0 ] ); + AptxUtil.printAppletMessage( ArchaeopteryxA.NAME, "species tree OK" ); + } + } + else { + ForesterUtil.printErrorMessage( ArchaeopteryxA.NAME, "failed to read species tree from " + + species_tree_url_str ); + } + } + + @Override + public MainPanel getMainPanel() { + return _mainpanel; + } + + void buildAnalysisMenu() { + _analysis_menu = MainFrame.createMenu( "Analysis", getConfiguration() ); + _analysis_menu.add( _gsdi_item = new JMenuItem( "GSDI (Generalized Speciation Duplication Inference)" ) ); + _analysis_menu.add( _gsdir_item = new JMenuItem( "GSDIR (GSDI with re-rooting)" ) ); + customizeJMenuItem( _gsdi_item ); + customizeJMenuItem( _gsdir_item ); + // _analysis_menu.addSeparator(); + // _analysis_menu.add( _lineage_inference = new JMenuItem( INFER_ANCESTOR_TAXONOMIES ) ); + // customizeJMenuItem( _lineage_inference ); + // _lineage_inference.setToolTipText( "Inference of ancestor taxonomies/lineages" ); + _jmenubar.add( _analysis_menu ); + } + void buildOptionsMenu() { _options_jmenu = MainFrame.createMenu( MainFrame.OPTIONS_HEADER, getConfiguration() ); _options_jmenu.addChangeListener( new ChangeListener() { @@ -279,11 +301,6 @@ public final class MainFrameApplet extends MainFrame { } @Override - public MainPanel getMainPanel() { - return _mainpanel; - } - - @Override void readPhylogeniesFromURL() { throw new NoSuchMethodError( "not implemented" ); }