/*
* AboutDialog.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 java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
/**
* @author Filip Bielejec
* @version $Id$
*/
@SuppressWarnings("serial")
public class AboutDialog extends JDialog {
// + "A BibTeX entry for LaTeX users: \n\n"
// + "@Article{, \n"
// + "\t AUTHOR = {Bielejec, Filip and Lemey, Philippe and Carvalho, Luiz and Baele, Guy and Rambaut, Andrew and Suchard, Marc A.}, \n"
// + "\t TITLE = {piBUSS: a parallel BEAST/BEAGLE utility for sequence simulation under complex evolutionary scenarios}, \n"
// + "\t JOURNAL = {BMC Bioinformatics}, \n"
// + "\t VOLUME = {15}, \n"
// + "\t YEAR = {2014}, \n"
// + "\t NUMBER = {1}, \n"
// + "\t PAGES = {133} \n" +
// "}";
private static final int WIDTH = 700;
private static final int HEIGHT = 700;
private static final int FONT_SIZE = 15;
private static final String FILIP_BIELEJEC = "Filip Bielejec";
private static final String ANDREW_RAMBAUT = "Andrew Rambaut";
private static final String MARC_SUCHARD = "Marc A. Suchard";
private static final String PHILIPPE_LEMEY = "Philippe Lemey";
private static final String LUIZ_MAX_CARVAHLO = "Luiz Max Carvahlo";
private static final String GUY_BAELE = "Guy Baele";
private static final String CITATION1 = "To cite " + BeagleSequenceSimulatorApp.SHORT_NAME + " in publications, please use:";
private static final String CITATION2 = "Bielejec, F., P. Lemey, L. Carvalho, G. Baele, A. Rambaut, and M. A. Suchard. 2014.";
private static final String CITATION3 = "pibuss: a parallel beast/beagle utility for sequence simulation under complex evolutionary scenarios.";
private static final String CITATION4 = "BMC Bioinformatics 15:133";
public AboutDialog() {
initUI();
}// END: Constructor
public final void initUI() {
JLabel label;
JLabel contact;
JLabel website;
String addres;
setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
getContentPane().setBackground(Color.WHITE);
setLocationRelativeTo(Utils.getActiveFrame());
add(Box.createRigidArea(new Dimension(0, 10)));
// Setup image
label = new JLabel(Utils.createImageIcon(Utils.BSS_ICON));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
// Setup name
label = new JLabel(BeagleSequenceSimulatorApp.SHORT_NAME);
label.setFont(new Font("Serif", Font.BOLD, FONT_SIZE));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
// Setup long name
label = new JLabel(BeagleSequenceSimulatorApp.LONG_NAME);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
// Setup version
label = new JLabel("Version v" + BeagleSequenceSimulatorApp.VERSION
+
// " Prerelease" +
", " + BeagleSequenceSimulatorApp.DATE);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
// Setup authors
label = new JLabel("by " + FILIP_BIELEJEC + ", " + ANDREW_RAMBAUT
+ ", " + MARC_SUCHARD + ", " + GUY_BAELE + ", " + LUIZ_MAX_CARVAHLO + " and "
+ PHILIPPE_LEMEY);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
//Setup citation
label = new JLabel(CITATION1);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
label = new JLabel(CITATION2);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
label = new JLabel(CITATION3);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
label = new JLabel(CITATION4);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 2));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
// Setup about
label = new JLabel("BEAST auxiliary software package");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
website = new JLabel();
addres = "http://beast.bio.ed.ac.uk";
website.setText("<html><p><a href=\"" + addres + "\">" + addres
+ "</a></p></html>");
website.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
website.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
// website.setVerticalAlignment(SwingConstants.CENTER);
// website.setHorizontalAlignment(SwingConstants.CENTER);
website.addMouseListener(new ListenBrowse(addres));
add(website);
add(Box.createRigidArea(new Dimension(0, 10)));
label = new JLabel("Designed and developed by");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
label = new JLabel(FILIP_BIELEJEC + ", " + MARC_SUCHARD + " and " + ANDREW_RAMBAUT);
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
label = new JLabel("Computational and Evolutionary Virology, KU Leuven");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
contact = new JLabel();
addres = "filip.bielejec(AT)rega.kuleuven.be";
contact.setText("<html><center><p><a href=\"mailto:" + addres + "\">"
+ addres + "</a></p></center></html>");
contact.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
contact.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
// contact.setAlignmentX(0.0f);
contact.addMouseListener(new ListenSendMail(addres));
add(contact);
add(Box.createRigidArea(new Dimension(0, 10)));
label = new JLabel("Departments of Biomathematics and Human Genetics, University of California, Los Angeles");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
contact = new JLabel();
addres = "msuchard(AT)ucla.edu";
contact.setText("<html><center><p><a href=\"mailto:" + addres + "\">"
+ addres + "</a></p></center></html>");
contact.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
contact.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
// contact.setAlignmentX(0.0f);
contact.addMouseListener(new ListenSendMail(addres));
add(contact);
add(Box.createRigidArea(new Dimension(0, 10)));
label = new JLabel(
"Institute of Evolutionary Biology, University of Edinburgh");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
contact = new JLabel();
addres = "a.rambaut(AT)ed.ac.uk";
contact.setText("<html><p><a href=\"mailto:" + addres + "\">" + addres
+ "</a></p></html>");
contact.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
contact.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
// contact.setAlignmentX(0.5f);
contact.addMouseListener(new ListenSendMail(addres));
add(contact);
add(Box.createRigidArea(new Dimension(0, 10)));
label = new JLabel("Source code distributed under the GNU LGPL");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
website = new JLabel();
addres = "http://code.google.com/p/beast-mcmc";
website.setText("<html><p><a href=\"" + addres + "\">" + addres
+ "</a></p></html>");
website.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
website.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
// website.setAlignmentX(0.5f);
website.addMouseListener(new ListenBrowse(addres));
add(website);
add(Box.createRigidArea(new Dimension(0, 20)));
label = new JLabel("In case of any problems please contact your local witch doctor or a shaman.");
label.setFont(new Font("Serif", Font.PLAIN, FONT_SIZE - 3));
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 20)));
JButton close = new JButton("Close");
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
dispose();
}
});
close.setAlignmentX(0.5f);
add(close);
setModalityType(ModalityType.APPLICATION_MODAL);
setTitle("About " + BeagleSequenceSimulatorApp.SHORT_NAME);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setSize(WIDTH, HEIGHT);
setResizable(true);
}// END: initUI
private class ListenSendMail extends MouseAdapter {
private String addres;
public ListenSendMail(String addres) {
this.addres = addres;
}
@Override
public void mouseClicked(MouseEvent ev) {
try {
Desktop.getDesktop().mail(new URI("mailto:" + addres));
} catch (IOException e) {
Utils.handleException(
e,
"Problem occurred while trying to open this address in your system's standard email client.");
} catch (URISyntaxException e) {
Utils.handleException(
e,
"Problem occurred while trying to open this address in your system's standard email client.");
}// END: try-catch block
}// END: mouseClicked
}// END: ListenSendMail
private class ListenBrowse extends MouseAdapter {
private String website;
public ListenBrowse(String website) {
this.website = website;
}
@Override
public void mouseClicked(MouseEvent ev) {
try {
Desktop.getDesktop().browse(new URI(website));
} catch (IOException e) {
Utils.handleException(
e,
"Problem occurred while trying to open this link in your system's standard browser.");
} catch (URISyntaxException e) {
Utils.handleException(
e,
"Problem occurred while trying to open this link in your system's standard browser.");
}// END: try-catch block
}// END: mouseClicked
}// END: ListenSendMail
}// END: class