- private void writeAllToFile() {\r
- if ( ( getMainPanel().getTabbedPane() == null ) || ( getMainPanel().getTabbedPane().getTabCount() < 1 ) ) {\r
- return;\r
- }\r
- final File my_dir = getCurrentDir();\r
- if ( my_dir != null ) {\r
- _save_filechooser.setCurrentDirectory( my_dir );\r
- }\r
- _save_filechooser.setSelectedFile( new File( "" ) );\r
- final int result = _save_filechooser.showSaveDialog( _contentpane );\r
- final File file = _save_filechooser.getSelectedFile();\r
- setCurrentDir( _save_filechooser.getCurrentDirectory() );\r
- if ( ( file != null ) && ( result == JFileChooser.APPROVE_OPTION ) ) {\r
- if ( file.exists() ) {\r
- final int i = JOptionPane.showConfirmDialog( this,\r
- file + " already exists. Overwrite?",\r
- "Warning",\r
- JOptionPane.OK_CANCEL_OPTION,\r
- JOptionPane.WARNING_MESSAGE );\r
- if ( i != JOptionPane.OK_OPTION ) {\r
- return;\r
- }\r
- else {\r
- try {\r
- file.delete();\r
- }\r
- catch ( final Exception e ) {\r
- JOptionPane.showMessageDialog( this,\r
- "Failed to delete: " + file,\r
- "Error",\r
- JOptionPane.WARNING_MESSAGE );\r
- }\r
- }\r
- }\r
- final int count = getMainPanel().getTabbedPane().getTabCount();\r
- final List<Phylogeny> trees = new ArrayList<Phylogeny>();\r
- for( int i = 0; i < count; ++i ) {\r
- final Phylogeny phy = getMainPanel().getPhylogeny( i );\r
- if ( ForesterUtil.isEmpty( phy.getName() )\r
- && !ForesterUtil.isEmpty( getMainPanel().getTabbedPane().getTitleAt( i ) ) ) {\r
- phy.setName( getMainPanel().getTabbedPane().getTitleAt( i ) );\r
- }\r
- trees.add( phy );\r
- getMainPanel().getTreePanels().get( i ).setEdited( false );\r
- }\r
- final PhylogenyWriter writer = new PhylogenyWriter();\r
- try {\r
- writer.toPhyloXML( file, trees, 0, ForesterUtil.LINE_SEPARATOR );\r
- }\r
- catch ( final IOException e ) {\r
- JOptionPane.showMessageDialog( this,\r
- "Failed to write to: " + file,\r
- "Error",\r
- JOptionPane.WARNING_MESSAGE );\r
- }\r
- }\r
- }\r
-\r
- private boolean writeAsNewHampshire( final Phylogeny t, boolean exception, final File file ) {\r
- try {\r
- final PhylogenyWriter writer = new PhylogenyWriter();\r
- writer.toNewHampshire( t, true, getOptions().getNhConversionSupportValueStyle(), file );\r
- }\r
- catch ( final Exception e ) {\r
- exception = true;\r
- exceptionOccuredDuringSaveAs( e );\r
- }\r
- return exception;\r
- }\r
-\r
- private boolean writeAsNexus( final Phylogeny t, boolean exception, final File file ) {\r
- try {\r
- final PhylogenyWriter writer = new PhylogenyWriter();\r
- writer.toNexus( file, t, getOptions().getNhConversionSupportValueStyle() );\r
- }\r
- catch ( final Exception e ) {\r
- exception = true;\r
- exceptionOccuredDuringSaveAs( e );\r
- }\r
- return exception;\r
- }\r
-\r
- private boolean writeAsPhyloXml( final Phylogeny t, boolean exception, final File file ) {\r
- try {\r
- final PhylogenyWriter writer = new PhylogenyWriter();\r
- writer.toPhyloXML( file, t, 0 );\r
- }\r
- catch ( final Exception e ) {\r
- exception = true;\r
- exceptionOccuredDuringSaveAs( e );\r
- }\r
- return exception;\r
- }\r
-\r
- private void writeToFile( final Phylogeny t ) {\r
- if ( t == null ) {\r
- return;\r
- }\r
- String initial_filename = null;\r
- if ( getMainPanel().getCurrentTreePanel().getTreeFile() != null ) {\r
- try {\r
- initial_filename = getMainPanel().getCurrentTreePanel().getTreeFile().getCanonicalPath();\r
- }\r
- catch ( final IOException e ) {\r
- initial_filename = null;\r
- }\r
- }\r
- if ( !ForesterUtil.isEmpty( initial_filename ) ) {\r
- _save_filechooser.setSelectedFile( new File( initial_filename ) );\r
- }\r
- else {\r
- _save_filechooser.setSelectedFile( new File( "" ) );\r
- }\r
- final File my_dir = getCurrentDir();\r
- if ( my_dir != null ) {\r
- _save_filechooser.setCurrentDirectory( my_dir );\r
- }\r
- final int result = _save_filechooser.showSaveDialog( _contentpane );\r
- final File file = _save_filechooser.getSelectedFile();\r
- setCurrentDir( _save_filechooser.getCurrentDirectory() );\r
- boolean exception = false;\r
- if ( ( file != null ) && ( result == JFileChooser.APPROVE_OPTION ) ) {\r
- if ( file.exists() ) {\r
- final int i = JOptionPane.showConfirmDialog( this,\r
- file + " already exists.\nOverwrite?",\r
- "Overwrite?",\r
- JOptionPane.OK_CANCEL_OPTION,\r
- JOptionPane.QUESTION_MESSAGE );\r
- if ( i != JOptionPane.OK_OPTION ) {\r
- return;\r
- }\r
- else {\r
- final File to = new File( file.getAbsoluteFile().toString() + Constants.BACKUP_FILE_SUFFIX );\r
- try {\r
- ForesterUtil.copyFile( file, to );\r
- }\r
- catch ( final Exception e ) {\r
- JOptionPane.showMessageDialog( this,\r
- "Failed to create backup copy " + to,\r
- "Failed to Create Backup Copy",\r
- JOptionPane.WARNING_MESSAGE );\r
- }\r
- try {\r
- file.delete();\r
- }\r
- catch ( final Exception e ) {\r
- JOptionPane.showMessageDialog( this,\r
- "Failed to delete: " + file,\r
- "Failed to Delete",\r
- JOptionPane.WARNING_MESSAGE );\r
- }\r
- }\r
- }\r
- if ( _save_filechooser.getFileFilter() == MainFrameApplication.nhfilter ) {\r
- exception = writeAsNewHampshire( t, exception, file );\r
- }\r
- else if ( _save_filechooser.getFileFilter() == MainFrameApplication.xmlfilter ) {\r
- exception = writeAsPhyloXml( t, exception, file );\r
- }\r
- else if ( _save_filechooser.getFileFilter() == MainFrameApplication.nexusfilter ) {\r
- exception = writeAsNexus( t, exception, file );\r
- }\r
- // "*.*":\r
- else {\r
- final String file_name = file.getName().trim().toLowerCase();\r
- if ( file_name.endsWith( ".nh" ) || file_name.endsWith( ".newick" ) || file_name.endsWith( ".phy" )\r
- || file_name.endsWith( ".tree" ) ) {\r
- exception = writeAsNewHampshire( t, exception, file );\r
- }\r
- else if ( file_name.endsWith( ".nex" ) || file_name.endsWith( ".nexus" ) ) {\r
- exception = writeAsNexus( t, exception, file );\r
- }\r
- // XML is default:\r
- else {\r
- exception = writeAsPhyloXml( t, exception, file );\r
- }\r
- }\r
- if ( !exception ) {\r
- getMainPanel().setTitleOfSelectedTab( file.getName() );\r
- getMainPanel().getCurrentTreePanel().setTreeFile( file );\r
- getMainPanel().getCurrentTreePanel().setEdited( false );\r
- }\r
- }\r
- }\r
-\r
- private void writeToGraphicsFile( final Phylogeny t, final GraphicsExportType type ) {\r
- if ( ( t == null ) || t.isEmpty() ) {\r
- return;\r
- }\r
- String initial_filename = "";\r
- if ( getMainPanel().getCurrentTreePanel().getTreeFile() != null ) {\r
- initial_filename = getMainPanel().getCurrentTreePanel().getTreeFile().toString();\r
- }\r
- if ( initial_filename.indexOf( '.' ) > 0 ) {\r
- initial_filename = initial_filename.substring( 0, initial_filename.lastIndexOf( '.' ) );\r
- }\r
- initial_filename = initial_filename + "." + type;\r
- _writetographics_filechooser.setSelectedFile( new File( initial_filename ) );\r
- final File my_dir = getCurrentDir();\r
- if ( my_dir != null ) {\r
- _writetographics_filechooser.setCurrentDirectory( my_dir );\r
- }\r
- final int result = _writetographics_filechooser.showSaveDialog( _contentpane );\r
- File file = _writetographics_filechooser.getSelectedFile();\r
- setCurrentDir( _writetographics_filechooser.getCurrentDirectory() );\r
- if ( ( file != null ) && ( result == JFileChooser.APPROVE_OPTION ) ) {\r
- if ( !file.toString().toLowerCase().endsWith( type.toString() ) ) {\r
- file = new File( file.toString() + "." + type );\r
- }\r
- if ( file.exists() ) {\r
- final int i = JOptionPane.showConfirmDialog( this,\r
- file + " already exists. Overwrite?",\r
- "Warning",\r
- JOptionPane.OK_CANCEL_OPTION,\r
- JOptionPane.WARNING_MESSAGE );\r
- if ( i != JOptionPane.OK_OPTION ) {\r
- return;\r
- }\r
- else {\r
- try {\r
- file.delete();\r
- }\r
- catch ( final Exception e ) {\r
- JOptionPane.showMessageDialog( this,\r
- "Failed to delete: " + file,\r
- "Error",\r
- JOptionPane.WARNING_MESSAGE );\r
- }\r
- }\r
- }\r
- writePhylogenyToGraphicsFile( file.toString(), type );\r
- }\r
- }\r
-\r
- private void writeToPdf( final Phylogeny t ) {\r
- if ( ( t == null ) || t.isEmpty() ) {\r
- return;\r
- }\r
- String initial_filename = "";\r
- if ( getMainPanel().getCurrentTreePanel().getTreeFile() != null ) {\r
- initial_filename = getMainPanel().getCurrentTreePanel().getTreeFile().toString();\r
- }\r
- if ( initial_filename.indexOf( '.' ) > 0 ) {\r
- initial_filename = initial_filename.substring( 0, initial_filename.lastIndexOf( '.' ) );\r
- }\r
- initial_filename = initial_filename + ".pdf";\r
- _writetopdf_filechooser.setSelectedFile( new File( initial_filename ) );\r
- final File my_dir = getCurrentDir();\r
- if ( my_dir != null ) {\r
- _writetopdf_filechooser.setCurrentDirectory( my_dir );\r
- }\r
- final int result = _writetopdf_filechooser.showSaveDialog( _contentpane );\r
- File file = _writetopdf_filechooser.getSelectedFile();\r
- setCurrentDir( _writetopdf_filechooser.getCurrentDirectory() );\r
- if ( ( file != null ) && ( result == JFileChooser.APPROVE_OPTION ) ) {\r
- if ( !file.toString().toLowerCase().endsWith( ".pdf" ) ) {\r
- file = new File( file.toString() + ".pdf" );\r
- }\r
- if ( file.exists() ) {\r
- final int i = JOptionPane.showConfirmDialog( this,\r
- file + " already exists. Overwrite?",\r
- "WARNING",\r
- JOptionPane.OK_CANCEL_OPTION,\r
- JOptionPane.WARNING_MESSAGE );\r
- if ( i != JOptionPane.OK_OPTION ) {\r
- return;\r
- }\r
- }\r
- printPhylogenyToPdf( file.toString() );\r
- }\r
- }\r
-\r
- public static MainFrameApplication createInstance( final Phylogeny[] phys, final Configuration config ) {\r
- return new MainFrameApplication( phys, config );\r
- }\r
-\r
- public static MainFrame createInstance( final Phylogeny[] phys,\r
- final Configuration config,\r
- final String title,\r
- final File current_dir ) {\r
- return new MainFrameApplication( phys, config, title, current_dir );\r
- }\r
-\r
- static MainFrame createInstance( final Phylogeny[] phys, final Configuration config, final String title ) {\r
- return new MainFrameApplication( phys, config, title );\r
- }\r
-\r
- static MainFrame createInstance( final Phylogeny[] phys, final String config_file_name, final String title ) {\r
- return new MainFrameApplication( phys, config_file_name, title );\r
- }\r
-\r
- static void setTextForGraphicsSizeChooserMenuItem( final JMenuItem mi, final Options o ) {\r
- mi.setText( "Enter Default Size for Graphics Export... (current: " + o.getPrintSizeX() + ", "\r
- + o.getPrintSizeY() + ")" );\r
- }\r
-\r
- static void setTextForPdfLineWidthChooserMenuItem( final JMenuItem mi, final Options o ) {\r
- mi.setText( "Enter Default Line Width for PDF Export... (current: " + o.getPrintLineWidth() + ")" );\r
- }\r
-\r
- static void warnIfNotPhyloXmlValidation( final Configuration c ) {\r
- if ( !c.isValidatePhyloXmlAgainstSchema() ) {\r
- JOptionPane\r
- .showMessageDialog( null,\r
- ForesterUtil\r
- .wordWrap( "phyloXML XSD-based validation is turned off [enable with line 'validate_against_phyloxml_xsd_schem: true' in configuration file]",\r
- 80 ),\r
- "Warning",\r
- JOptionPane.WARNING_MESSAGE );\r
- }\r
- }\r