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;
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;
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();
@Override
public void componentResized( final ComponentEvent e ) {
if ( _mainpanel.getCurrentTreePanel() != null ) {
- _mainpanel.getCurrentTreePanel().setParametersForPainting( _mainpanel.getCurrentTreePanel()
- .getWidth(),
- _mainpanel.getCurrentTreePanel()
- .getHeight(),
- false );
+ _mainpanel.getCurrentTreePanel().calcParametersForPainting( _mainpanel.getCurrentTreePanel()
+ .getWidth(),
+ _mainpanel.getCurrentTreePanel()
+ .getHeight(),
+ getOptions().isAllowFontSizeChange() );
}
}
} );
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() {
if ( getConfiguration().doDisplayOption( Configuration.show_domain_architectures ) ) {
_options_jmenu.add( _show_domain_labels = new JCheckBoxMenuItem( SHOW_DOMAIN_LABELS_LABEL ) );
}
+ _options_jmenu.add( _show_annotation_ref_source = new JCheckBoxMenuItem( SHOW_ANN_REF_SOURCE_LABEL ) );
_options_jmenu.add( _choose_minimal_confidence_mi = new JMenuItem( "" ) );
_options_jmenu.add( _overview_placment_mi = new JMenuItem( "" ) );
_options_jmenu.add( _switch_colors_mi = new JMenuItem( "" ) );
customizeCheckBoxMenuItem( _screen_antialias_cbmi, getOptions().isAntialiasScreen() );
customizeCheckBoxMenuItem( _background_gradient_cbmi, getOptions().isBackgroundColorGradient() );
customizeCheckBoxMenuItem( _show_domain_labels, getOptions().isShowDomainLabels() );
+ customizeCheckBoxMenuItem( _show_annotation_ref_source, getOptions().isShowAnnotationRefSource() );
customizeCheckBoxMenuItem( _abbreviate_scientific_names, getOptions().isAbbreviateScientificTaxonNames() );
customizeCheckBoxMenuItem( _search_case_senstive_cbmi, getOptions().isSearchCaseSensitive() );
customizeCheckBoxMenuItem( _show_scale_cbmi, getOptions().isShowScale() );
}
@Override
- public MainPanel getMainPanel() {
- return _mainpanel;
- }
-
- @Override
void readPhylogeniesFromURL() {
throw new NoSuchMethodError( "not implemented" );
}