/*
* BeagleSequenceSimulatorApp.java
*
* Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard
*
* This file is part of BEAST.
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership and licensing.
*
* BEAST is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* BEAST is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with BEAST; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
package dr.app.bss;
import jam.framework.SingleDocApplication;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import java.util.Locale;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
/**
* @author Filip Bielejec
* @version $Id$
*/
public class BeagleSequenceSimulatorApp {
public static final boolean DEBUG = false;
public static final boolean VERBOSE = true;
// Share those if neccessary
public static final String SHORT_NAME = "\u03C0BUSS";
public static final String LONG_NAME = "Parallel BEAST/BEAGLE Utility for Sequence Simulation";
public static final String VERSION = "1.3.8rc";
public static final String DATE = "2015";
// Icons
private Image beagleSequenceSimulatorImage;
public BeagleSequenceSimulatorApp() throws ClassNotFoundException,
InstantiationException, IllegalAccessException,
UnsupportedLookAndFeelException {
boolean lafLoaded = false;
// Setup Look & Feel
if (System.getProperty("os.name").toLowerCase().startsWith("mac os x")) {
// Mac stuff
System.setProperty("apple.awt.showGrowBox", "true");
System.setProperty("apple.awt.brushMetalLook", "true");
System.setProperty("apple.laf.useScreenMenuBar", "true");
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");
UIManager.put("SystemFont", new Font("Lucida Grande", Font.PLAIN,
13));
UIManager.put("SmallSystemFont", new Font("Lucida Grande",
Font.PLAIN, 11));
try {
// UIManager.setLookAndFeel(UIManager
// .getSystemLookAndFeelClassName());
UIManager
.setLookAndFeel("ch.randelshofer.quaqua.QuaquaLookAndFeel");
lafLoaded = true;
} catch (Exception e) {
//
}
} else {
try {
// UIManager.setLookAndFeel(UIManager
// .getSystemLookAndFeelClassName());
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
lafLoaded = true;
} catch (Exception e) {
//
}
}
if (!lafLoaded) {
try {
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
System.out
.println("Specified l&f not found. Loading system default l&f");
} catch (Exception e) {
e.printStackTrace();
}
}
ImageIcon bssIcon = Utils.createImageIcon(Utils.BSS_ICON);
SingleDocApplication app = new SingleDocApplication(new MenuBarFactory(), //
LONG_NAME, //
VERSION.concat(" ").concat(
DATE), //
bssIcon //
);
beagleSequenceSimulatorImage = CreateImage(Utils.BSS_ICON);
MainFrame frame = new MainFrame(SHORT_NAME);
frame.setIconImage(beagleSequenceSimulatorImage);
app.setDocumentFrame(frame);
}// END: Constructor
public static void main(String args[]) {
Locale.setDefault(Locale.US);
if (args.length > 0) {
try {
BeagleSequenceSimulatorConsoleApp app = new BeagleSequenceSimulatorConsoleApp();
app.simulate(args);
} catch (UnsupportedClassVersionError e) {
Utils.handleException(e, "Your Java Runtime Environment is too old. Please update");
}//END: try-catch block
} else {
try {
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
new BeagleSequenceSimulatorApp();
// sub-title for a software note
System.out.println("Do the evolution baby!");
} catch (UnsupportedClassVersionError e) {
Utils.handleException(e, "Your Java Runtime Environment is too old. Please update");
} catch (ClassNotFoundException e) {
Utils.handleException(e, e.getMessage());
} catch (InstantiationException e) {
Utils.handleException(e, e.getMessage());
} catch (IllegalAccessException e) {
Utils.handleException(e, e.getMessage());
} catch (UnsupportedLookAndFeelException e) {
Utils.handleException(e, e.getMessage());
}// END: try catch block
}// END: command line check
}// END: main
private Image CreateImage(String path) {
URL imgURL = this.getClass().getResource(path);
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(imgURL);
if (img != null) {
return img;
} else {
System.out.println("Couldn't find file: " + path + "\n");
return null;
}
}// END: CreateImage
}// END: class