/*
* DefaultPriorTableDialog.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.beauti.priorsPanel;
import dr.app.beauti.options.BeautiOptions;
import dr.app.beauti.BeautiFrame;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
/**
* A dialog box that shows a table of priors that are still set to their default values. Intended
* for review before generating the XML.
* @author Andrew Rambaut
* @author Alexei Drummond
* @author Walter Xie
* @version $Id: PriorDialog.java,v 1.4 2006/09/05 13:29:34 rambaut Exp $
*/
public class DefaultPriorTableDialog {
private BeautiFrame frame;
private PriorsPanel priorsPanel;
public DefaultPriorTableDialog(BeautiFrame frame) {
this.frame = frame;
priorsPanel = new PriorsPanel(frame, true);
}
public JButton findButton(String label, Container container) {
for (Component comp : container.getComponents()) {
if (comp instanceof JButton) {
JButton button = (JButton)comp;
if (button.getText().equals(label)) {
return button;
}
} else if (comp instanceof Container) {
JButton button = findButton(label, (Container) comp);
if (button != null) {
return button;
}
}
}
return null;
}
public boolean showDialog(BeautiOptions options) {
priorsPanel.setParametersList(options);
Object[] buttons;
JOptionPane optionPane;
String title;
if (priorsPanel.hasUndefinedPrior) {
title = "Undefined Priors";
} else {
title = "Unchanged Default Priors";
}
buttons = new String[] {"Continue", "Cancel"};
optionPane = new JOptionPane(priorsPanel,
JOptionPane.PLAIN_MESSAGE,
JOptionPane.OK_CANCEL_OPTION,
null,
buttons,
buttons[0]);
JButton button = findButton("Continue", optionPane);
if (button != null) {
priorsPanel.setContinueButton(button);
}
// if (priorsPanel.hasUndefinedPrior) {
// buttons = new String[] {"OK"};
// title = "Undefined Priors";
// optionPane = new JOptionPane(priorsPanel,
// JOptionPane.ERROR_MESSAGE,
// JOptionPane.OK_OPTION,
// null,
// buttons,
// buttons[0]);
// } else {
// buttons = new String[] {"Continue", "Cancel"};
// title = "Unchanged Default Priors";
// optionPane = new JOptionPane(priorsPanel,
// JOptionPane.PLAIN_MESSAGE,
// JOptionPane.OK_CANCEL_OPTION,
// null,
// buttons,
// buttons[0]);
// }
optionPane.setBorder(new EmptyBorder(12, 12, 12, 12));
optionPane.setPreferredSize(new java.awt.Dimension(800, 600));
final JDialog dialog = optionPane.createDialog(frame, title);
dialog.pack();
dialog.setResizable(true);
dialog.setVisible(true);
return optionPane.getValue() != null && optionPane.getValue().equals("Continue");
}
}