package jalview.ext.forester.io; import jalview.ext.archaeopteryx.AptxInit; import jalview.gui.AlignViewport; //import jalview.ext.treeviewer.ExternalTreeParserI; import jalview.gui.Desktop; import jalview.gui.JvOptionPane; import jalview.io.DataSourceType; import jalview.io.NewickFile; import jalview.util.MessageManager; import java.io.File; import java.io.IOException; import org.forester.util.ForesterUtil; public class TreeParser // implements ExternalTreeParserI { private final String filePath; private final File file; public TreeParser(final String treeFilePath) { final String possibleError = ForesterUtil.isReadableFile(treeFilePath); if (possibleError != null) { JvOptionPane.showMessageDialog(Desktop.desktop, possibleError, MessageManager.getString("label.problem_reading_tree_file"), JvOptionPane.WARNING_MESSAGE); } filePath = treeFilePath; file = new File(filePath); } public TreeParser(final File treeFile) throws IOException { final String possibleError = ForesterUtil.isReadableFile(treeFile); if (possibleError != null) { JvOptionPane.showMessageDialog(Desktop.desktop, possibleError, MessageManager.getString("label.problem_reading_tree_file"), JvOptionPane.WARNING_MESSAGE); } file = treeFile; filePath = file.getCanonicalPath(); } public void loadTree(AlignViewport viewport) { NewickFile fin = null; // old tree try { AptxInit.createInstanceFromFile(filePath, viewport); fin = new NewickFile(filePath, DataSourceType.FILE); viewport.setCurrentTree(viewport.getAlignPanel().alignFrame .showNewickTree(fin, filePath).getTree()); } catch (Exception ex) { JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(), MessageManager.getString("label.problem_reading_tree_file"), JvOptionPane.WARNING_MESSAGE); ex.printStackTrace(); } if (fin != null && fin.hasWarningMessage()) { JvOptionPane.showMessageDialog(Desktop.desktop, fin.getWarningMessage(), MessageManager .getString("label.possible_problem_with_tree_file"), JvOptionPane.WARNING_MESSAGE); } } } // // @Override // public MainFrame loadTreeFile(AlignmentViewport viewport) // { // String[] AptxArgs = new String[] { "-c", // "_aptx_jalview_configuration_file", filePath }; // MainFrame aptx = Archaeopteryx.main(AptxArgs); // // LoadedTreeAssociation bindAptxNodes = new LoadedTreeAssociation( // viewport.getAlignment().getSequencesArray(), // aptx.getMainPanel().getCurrentTreePanel().getPhylogeny()); // // bindAptxNodes.associateLeavesToSequences(); // // new JalviewBinding(aptx, viewport, bindAptxNodes.getAlignmentWithNodes(), // bindAptxNodes.getNodesWithAlignment()); // // AptxInit.bindFrameToJalview(aptx); // // return aptx; // // // } // // // void readPhylogeniesFromURL() { // URL url = null; // Phylogeny[] phys = null; // final String message = "Please enter a complete URL, for example // \"http://purl.org/phylo/treebase/phylows/study/TB2:S15480?format=nexus\""; // final String url_string = JOptionPane // .showInputDialog( this, // message, // "Use URL/webservice to obtain a phylogeny", // JOptionPane.QUESTION_MESSAGE ); // boolean nhx_or_nexus = false; // if ( ( url_string != null ) && ( url_string.length() > 0 ) ) { // try { // url = new URL( url_string ); // PhylogenyParser parser = null; // if ( url.getHost().toLowerCase().indexOf( "tolweb" ) >= 0 ) { // parser = new TolParser(); // } // else { // parser = ParserUtils // .createParserDependingOnUrlContents( url, // getConfiguration().isValidatePhyloXmlAgainstSchema() ); // } // if ( parser instanceof NexusPhylogeniesParser ) { // nhx_or_nexus = true; // } // else if ( parser instanceof NHXParser ) { // nhx_or_nexus = true; // } // if ( _mainpanel.getCurrentTreePanel() != null ) { // _mainpanel.getCurrentTreePanel().setWaitCursor(); // } // else { // _mainpanel.setWaitCursor(); // } // final PhylogenyFactory factory = // ParserBasedPhylogenyFactory.getInstance(); // phys = factory.create( url.openStream(), parser ); // } // catch ( final MalformedURLException e ) { // JOptionPane.showMessageDialog( this, // "Malformed URL: " + url + "\n" + e.getLocalizedMessage(), // "Malformed URL", // JOptionPane.ERROR_MESSAGE ); // } // catch ( final IOException e ) { // JOptionPane.showMessageDialog( this, // "Could not read from " + url + "\n" // + ForesterUtil.wordWrap( e.getLocalizedMessage(), 80 ), // "Failed to read URL", // JOptionPane.ERROR_MESSAGE ); // } // catch ( final Exception e ) { // JOptionPane.showMessageDialog( this, // ForesterUtil.wordWrap( e.getLocalizedMessage(), 80 ), // "Unexpected Exception", // JOptionPane.ERROR_MESSAGE ); // } // finally { // if ( _mainpanel.getCurrentTreePanel() != null ) { // _mainpanel.getCurrentTreePanel().setArrowCursor(); // } // else { // _mainpanel.setArrowCursor(); // } // } // if ( ( phys != null ) && ( phys.length > 0 ) ) { // if ( nhx_or_nexus && // getOptions().isInternalNumberAreConfidenceForNhParsing() ) { // for( final Phylogeny phy : phys ) { // PhylogenyMethods.transferInternalNodeNamesToConfidence( phy, "" ); // } // } // AptxUtil.addPhylogeniesToTabs( phys, // new File( url.getFile() ).getName(), // new File( url.getFile() ).toString(), // getConfiguration(), // getMainPanel() ); // _mainpanel.getControlPanel().showWhole(); // } // } // activateSaveAllIfNeeded(); // System.gc(); // } // // } // // // // // //