/*
* MCMCPanel.java
*
* Copyright (C) 2002-2006 Alexei Drummond and Andrew Rambaut
*
* 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.oldbeauti;
import dr.app.gui.components.WholeNumberField;
import jam.framework.Exportable;
import jam.panels.OptionsPanel;
import javax.swing.*;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.event.ActionEvent;
/**
* @author Andrew Rambaut
* @author Alexei Drummond
* @version $Id: MCMCPanel.java,v 1.16 2006/09/05 13:29:34 rambaut Exp $
*/
public class MCMCPanel extends OptionsPanel implements Exportable {
/**
*
*/
private static final long serialVersionUID = -3710586474593827540L;
WholeNumberField chainLengthField = new WholeNumberField(1, Integer.MAX_VALUE);
WholeNumberField echoEveryField = new WholeNumberField(1, Integer.MAX_VALUE);
WholeNumberField logEveryField = new WholeNumberField(1, Integer.MAX_VALUE);
JCheckBox samplePriorCheckBox = new JCheckBox("Sample from prior only - create empty alignment");
JTextField logFileNameField = new JTextField("untitled.log");
JTextField treeFileNameField = new JTextField("untitled.trees");
JCheckBox mapTreeLogCheck = new JCheckBox("Create tree file containing the MAP tree:");
JTextField mapTreeFileNameField = new JTextField("untitled.MAP.tree");
JCheckBox substTreeLogCheck = new JCheckBox("Create tree log file with branch length in substitutions:");
JTextField substTreeFileNameField = new JTextField("untitled(subst).trees");
BeautiFrame frame = null;
public MCMCPanel(BeautiFrame parent) {
super(12, 24);
this.frame = parent;
setOpaque(false);
chainLengthField.setValue(100000);
chainLengthField.setColumns(10);
addComponentWithLabel("Length of chain:", chainLengthField);
addSeparator();
echoEveryField.setValue(1000);
echoEveryField.setColumns(10);
addComponentWithLabel("Echo state to screen every:", echoEveryField);
logEveryField.setValue(100);
logEveryField.setColumns(10);
addComponentWithLabel("Log parameters every:", logEveryField);
addSeparator();
logFileNameField.setColumns(32);
addComponentWithLabel("Log file name:", logFileNameField);
treeFileNameField.setColumns(32);
addComponentWithLabel("Trees file name:", treeFileNameField);
// addComponent(mapTreeLogCheck);
// mapTreeLogCheck.setOpaque(false);
// mapTreeLogCheck.addActionListener(new java.awt.event.ActionListener() {
// public void actionPerformed(ActionEvent e) {
// mapTreeFileNameField.setEnabled(mapTreeLogCheck.isSelected());
// }
// });
//
// mapTreeFileNameField.setColumns(32);
// addComponentWithLabel("MAP tree file name:", mapTreeFileNameField);
addComponent(substTreeLogCheck);
substTreeLogCheck.setOpaque(false);
substTreeLogCheck.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
substTreeFileNameField.setEnabled(substTreeLogCheck.isSelected());
frame.mcmcChanged();
}
});
substTreeFileNameField.setColumns(32);
addComponentWithLabel("Substitutions trees file name:", substTreeFileNameField);
java.awt.event.KeyListener listener = new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent ev) {
frame.mcmcChanged();
}
};
addSeparator();
addComponent(samplePriorCheckBox);
samplePriorCheckBox.setOpaque(false);
samplePriorCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
frame.mcmcChanged();
}
});
chainLengthField.addKeyListener(listener);
echoEveryField.addKeyListener(listener);
logEveryField.addKeyListener(listener);
logFileNameField.addKeyListener(listener);
treeFileNameField.addKeyListener(listener);
//mapTreeFileNameField.addKeyListener(listener);
substTreeFileNameField.addKeyListener(listener);
}
public void setOptions(BeautiOptions options) {
chainLengthField.setValue(options.chainLength);
echoEveryField.setValue(options.echoEvery);
logEveryField.setValue(options.logEvery);
if (options.fileNameStem != null) {
if (options.logFileName == null) {
logFileNameField.setText(options.fileNameStem + ".log");
} else {
logFileNameField.setText(options.logFileName);
}
if (options.treeFileName == null) {
treeFileNameField.setText(options.fileNameStem + ".trees");
} else {
treeFileNameField.setText(options.treeFileName);
}
// if (options.mapTreeFileName == null) {
// mapTreeFileNameField.setText(options.fileNameStem + ".MAP.tree");
// } else {
// mapTreeFileNameField.setText(options.mapTreeFileName);
// }
if (options.substTreeFileName == null) {
substTreeFileNameField.setText(options.fileNameStem + "(subst).trees");
} else {
substTreeFileNameField.setText(options.substTreeFileName);
}
logFileNameField.setEnabled(true);
treeFileNameField.setEnabled(true);
// mapTreeLogCheck.setEnabled(true);
// mapTreeLogCheck.setSelected(options.mapTreeLog);
// mapTreeFileNameField.setEnabled(options.mapTreeLog);
substTreeLogCheck.setEnabled(true);
substTreeLogCheck.setSelected(options.substTreeLog);
substTreeFileNameField.setEnabled(options.substTreeLog);
} else {
logFileNameField.setText("untitled");
logFileNameField.setEnabled(false);
treeFileNameField.setText("untitled");
treeFileNameField.setEnabled(false);
// mapTreeLogCheck.setEnabled(false);
// mapTreeFileNameField.setEnabled(false);
// mapTreeFileNameField.setText("untitled");
substTreeLogCheck.setEnabled(false);
substTreeFileNameField.setEnabled(false);
substTreeFileNameField.setText("untitled");
}
samplePriorCheckBox.setSelected(options.samplePriorOnly);
validate();
repaint();
}
public void getOptions(BeautiOptions options) {
options.chainLength = chainLengthField.getValue().intValue();
options.echoEvery = echoEveryField.getValue().intValue();
options.logEvery = logEveryField.getValue().intValue();
options.logFileName = logFileNameField.getText();
options.treeFileName = treeFileNameField.getText();
// options.mapTreeLog = mapTreeLogCheck.isSelected();
// options.mapTreeFileName = mapTreeFileNameField.getText();
options.substTreeLog = substTreeLogCheck.isSelected();
options.substTreeFileName = substTreeFileNameField.getText();
options.samplePriorOnly = samplePriorCheckBox.isSelected();
}
public JComponent getExportableComponent() {
return this;
}
}