package dr.app.bss; import jam.framework.Exportable; import jam.panels.OptionsPanel; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import org.virion.jam.components.WholeNumberField; @SuppressWarnings("serial") public class SimulationPanel extends JPanel implements Exportable { private BeagleSequenceSimulatorFrame frame; private PartitionDataList dataList; private OptionsPanel optionPanel; private JLabel sequenceLengthLabel; private WholeNumberField sequenceLengthField; private JLabel simulationsNumberLabel; private WholeNumberField simulationsNumberField; // Buttons private JButton simulate; private JButton generateXML; public SimulationPanel(final BeagleSequenceSimulatorFrame frame, final PartitionDataList dataList) { this.frame = frame; this.dataList = dataList; optionPanel = new OptionsPanel(12, 12, SwingConstants.CENTER); // number of simulations simulationsNumberLabel = new JLabel("Number of simulations:"); simulationsNumberField = new WholeNumberField(1, Integer.MAX_VALUE); simulationsNumberField.setColumns(8); simulationsNumberField.setValue(dataList.simulationsNumber); optionPanel.addComponents(simulationsNumberLabel, simulationsNumberField); // number of sites sequenceLengthLabel = new JLabel("Number of sites:"); sequenceLengthField = new WholeNumberField(1, Integer.MAX_VALUE); sequenceLengthField.setColumns(8); sequenceLengthField.setValue(dataList.sequenceLength); optionPanel.addComponents(sequenceLengthLabel, sequenceLengthField); // Buttons holder JPanel buttonsHolder = new JPanel(); buttonsHolder.setOpaque(false); // simulate button simulate = new JButton("Simulate", BeagleSequenceSimulatorApp.nuclearIcon); simulate.addActionListener(new ListenSimulate()); buttonsHolder.add(simulate); generateXML = new JButton("Generate XML", BeagleSequenceSimulatorApp.hammerIcon); generateXML.addActionListener(new ListenGenerateXML()); buttonsHolder.add(generateXML); setOpaque(false); setLayout(new BorderLayout()); add(optionPanel, BorderLayout.NORTH); add(buttonsHolder, BorderLayout.SOUTH); }// END: SimulationPanel public final void collectSettings() { dataList.sequenceLength = sequenceLengthField.getValue(); // frame.fireModelChanged(); }// END: collectSettings @Override public JComponent getExportableComponent() { return this; }// END: getExportableComponent private class ListenSimulate implements ActionListener { public void actionPerformed(ActionEvent ev) { frame.doExport(); }// END: actionPerformed }// END: ListenSaveLocationCoordinates private class ListenGenerateXML implements ActionListener { public void actionPerformed(ActionEvent ev) { System.out.println("TODO: ListenGenerateXML"); }// END: actionPerformed }// END: ListenSaveLocationCoordinates }// END: class