package dr.app.tracer.traces;
import dr.inference.trace.TraceList;
import jam.framework.Exportable;
import jam.util.IconUtils;
import javax.swing.*;
import java.awt.*;
/**
* A panel that displays information about traces
*
* @author Alexei Drummond
* @author Andrew Rambaut
* @version $Id: TracePanel.java,v 1.2 2006/05/15 23:32:30 rambaut Exp $
*/
public class TracePanel extends javax.swing.JPanel implements Exportable {
private final JTabbedPane tabbedPane = new JTabbedPane();
private final SummaryStatisticsPanel summaryPanel;
private final DensityPanel densityPanel;
private final JointDensityPanel jointDensityPanel;
private final RawTracePanel tracePanel;
private static final boolean USE_KDE = false;
/**
* Creates new form TracePanel
*/
public TracePanel(JFrame parent) {
//JFrame parent1 = parent;
Icon traceIcon = new ImageIcon(IconUtils.getImage(TracePanel.class, "images/trace-small-icon.gif"));
Icon frequencyIcon = new ImageIcon(IconUtils.getImage(TracePanel.class, "images/frequency-small-icon.gif"));
Icon densityIcon = new ImageIcon(IconUtils.getImage(TracePanel.class, "images/density-small-icon.gif"));
Icon summaryIcon = new ImageIcon(IconUtils.getImage(TracePanel.class, "images/summary-small-icon.png"));
Icon correlationIcon = new ImageIcon(IconUtils.getImage(TracePanel.class, "images/correlation-small-icon.gif"));
summaryPanel = new SummaryStatisticsPanel(parent);
densityPanel = new DensityPanel(parent);
jointDensityPanel = new JointDensityPanel(parent);
tracePanel = new RawTracePanel(parent);
tabbedPane.addTab("Estimates", summaryIcon, summaryPanel);
tabbedPane.addTab("Marginal Prob Distribution", densityIcon, densityPanel);
tabbedPane.addTab("Joint-Marginal", correlationIcon, jointDensityPanel);
tabbedPane.addTab("Trace", traceIcon, tracePanel);
setLayout(new BorderLayout());
add(tabbedPane, BorderLayout.CENTER);
}
/**
* This function takes a multiple statistics in a single log files
*/
public void setTraces(TraceList[] traceLists, java.util.List<String> traces) {
summaryPanel.setTraces(traceLists, traces);
densityPanel.setTraces(traceLists, traces);
jointDensityPanel.setTraces(traceLists, traces);
tracePanel.setTraces(traceLists, traces);
}
public void doCopy() {
java.awt.datatransfer.Clipboard clipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
java.awt.datatransfer.StringSelection selection =
new java.awt.datatransfer.StringSelection(getExportText());
clipboard.setContents(selection, selection);
}
public String getExportText() {
switch (tabbedPane.getSelectedIndex()) {
case 0:
return summaryPanel.toString();
case 1:
return densityPanel.toString();
case 2:
return jointDensityPanel.toString();
case 3:
return tracePanel.toString();
}
return "";
}
public JComponent getExportableComponent() {
JComponent exportable = null;
Component comp = tabbedPane.getSelectedComponent();
if (comp instanceof Exportable) {
exportable = ((Exportable) comp).getExportableComponent();
} else if (comp instanceof JComponent) {
exportable = (JComponent) comp;
}
return exportable;
}
}