+ \r
+ void setCurrentDir( final File current_dir ) {\r
+ _current_dir = current_dir;\r
+ } \r
+ \r
+ 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
+ \r
+ void printPhylogenyToPdf( final String file_name ) {\r
+ if ( !getOptions().isPrintUsingActualSize() ) {\r
+ getCurrentTreePanel()\r
+ .calcParametersForPainting( getOptions().getPrintSizeX(), getOptions().getPrintSizeY() );\r
+ getCurrentTreePanel().resetPreferredSize();\r
+ getCurrentTreePanel().repaint();\r
+ }\r
+ String pdf_written_to = "";\r
+ boolean error = false;\r
+ try {\r
+ if ( getOptions().isPrintUsingActualSize() ) {\r
+ pdf_written_to = PdfExporter.writePhylogenyToPdf( file_name,\r
+ getCurrentTreePanel(),\r
+ getCurrentTreePanel().getWidth(),\r
+ getCurrentTreePanel().getHeight() );\r
+ }\r
+ else {\r
+ pdf_written_to = PdfExporter.writePhylogenyToPdf( file_name, getCurrentTreePanel(), getOptions()\r
+ .getPrintSizeX(), getOptions().getPrintSizeY() );\r
+ }\r
+ }\r
+ catch ( final IOException e ) {\r
+ error = true;\r
+ JOptionPane.showMessageDialog( this, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE );\r
+ }\r
+ if ( !error ) {\r
+ if ( !ForesterUtil.isEmpty( pdf_written_to ) ) {\r
+ JOptionPane.showMessageDialog( this,\r
+ "Wrote PDF to: " + pdf_written_to,\r
+ "Information",\r
+ JOptionPane.INFORMATION_MESSAGE );\r
+ }\r
+ else {\r
+ JOptionPane.showMessageDialog( this,\r
+ "There was an unknown problem when attempting to write to PDF file: \""\r
+ + file_name + "\"",\r
+ "Error",\r
+ JOptionPane.ERROR_MESSAGE );\r
+ }\r
+ }\r
+ if ( !getOptions().isPrintUsingActualSize() ) {\r
+ getControlPanel().showWhole();\r
+ }\r
+ }\r
+ \r
+ ControlPanel getControlPanel() {\r
+ return getMainPanel().getControlPanel();\r
+ }\r
+\r
+ \r
+ File getCurrentDir() {\r
+ if ( ( _current_dir == null ) || !_current_dir.canRead() ) {\r
+ if ( ForesterUtil.isWindows() ) {\r
+ try {\r
+ _current_dir = new File( WindowsUtils.getCurrentUserDesktopPath() );\r
+ }\r
+ catch ( final Exception e ) {\r
+ _current_dir = null;\r
+ }\r
+ }\r
+ }\r
+ if ( ( _current_dir == null ) || !_current_dir.canRead() ) {\r
+ if ( System.getProperty( "user.home" ) != null ) {\r
+ _current_dir = new File( System.getProperty( "user.home" ) );\r
+ }\r
+ else if ( System.getProperty( "user.dir" ) != null ) {\r
+ _current_dir = new File( System.getProperty( "user.dir" ) );\r
+ }\r
+ }\r
+ return _current_dir;\r
+ }\r
+ \r