package dr.app.tracer.application; import dr.app.util.OSType; import dr.inference.trace.LogFileTraces; import jam.framework.*; import javax.swing.*; import java.awt.*; import java.io.File; import java.util.Locale; public class TracerApp extends MultiDocApplication { public TracerApp(String nameString, String aboutString, Icon icon, String websiteURLString, String helpURLString) { super(new TracerMenuBarFactory(), nameString, aboutString, icon, websiteURLString, helpURLString); addPreferencesSection(new GeneralPreferencesSection()); } // Main entry point static public void main(String[] args) { // There is a major issue with languages that use the comma as a decimal separator. // To ensure compatibility between programs in the package, enforce the US locale. Locale.setDefault(Locale.US); boolean lafLoaded = false; if (OSType.isMac()) { System.setProperty("apple.awt.graphics.UseQuartz", "true"); System.setProperty("apple.awt.antialiasing","true"); System.setProperty("apple.awt.rendering","VALUE_RENDER_QUALITY"); System.setProperty("apple.laf.useScreenMenuBar","true"); System.setProperty("apple.awt.draggableWindowBackground","true"); System.setProperty("apple.awt.showGrowBox","true"); // set the Quaqua Look and Feel in the UIManager try { UIManager.setLookAndFeel( "ch.randelshofer.quaqua.QuaquaLookAndFeel" ); lafLoaded = true; } catch (Exception e) { // } UIManager.put("SystemFont", new Font("Lucida Grande", Font.PLAIN, 13)); UIManager.put("SmallSystemFont", new Font("Lucida Grande", Font.PLAIN, 11)); } if (!lafLoaded) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e1) { e1.printStackTrace(); } } try { java.net.URL url = TracerApp.class.getResource("images/Tracer.png"); Icon icon = null; if (url != null) { icon = new ImageIcon(url); } final String nameString = "Tracer"; final String versionString = "v1.6.0pre"; String aboutString = "<html><center><p>MCMC Trace Analysis Tool<br>" + "Version " + versionString + ", 2003-2011</p>" + "<p>by<br>" + "Andrew Rambaut, Marc A. Suchard, Walter Xie and Alexei J. Drummond</p>" + "<p>Institute of Evolutionary Biology, University of Edinburgh<br>" + "<a href=\"mailto:a.rambaut@ed.ac.uk\">a.rambaut@ed.ac.uk</a></p>" + "<p>Departments of Biomathematics, Biostatistics and Human Genetics, UCLA<br>" + "<a href=\"mailto:msuchard@ucla.edu\">msuchard@ucla.edu</a></p>" + "<p>Department of Computer Science, University of Auckland<br>" + "<a href=\"mailto:alexei@cs.auckland.ac.nz\">alexei@cs.auckland.ac.nz</a></p>" + "<p>Available from the BEAST site:<br>" + "<a href=\"http://beast.bio.ed.ac.uk/\">http://beast.bio.ed.ac.uk/</a></p>" + "<p>Source code distributed under the GNU LGPL:<br>" + "<a href=\"http://code.google.com/p/beast-mcmc/\">http://code.google.com/p/beast-mcmc/</a></p>" + "<p>Thanks for contributions to: Joseph Heled, Oliver Pybus & Benjamin Redelings</p>" + "</center></html>"; String websiteURLString = "http://beast.bio.ed.ac.uk/"; String helpURLString = "http://beast.bio.ed.ac.uk/Tracer"; TracerApp app = new TracerApp(nameString, aboutString, icon, websiteURLString, helpURLString); app.setDocumentFrameFactory(new DocumentFrameFactory() { public DocumentFrame createDocumentFrame(Application app, MenuBarFactory menuBarFactory) { return new TracerFrame("Tracer"); } }); app.initialize(); app.doNew(); if (args.length > 0) { TracerFrame frame = (TracerFrame) app.getDefaultFrame(); for (String fileName : args) { File file = new File(fileName); LogFileTraces[] traces = { new LogFileTraces(fileName, file) }; frame.processTraces(traces); } } } catch (Exception e) { JOptionPane.showMessageDialog(new JFrame(), "Fatal exception: " + e, "Please report this to the authors", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } } }