package beast.app.beauti;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import beast.app.beauti.guiutil.S11InitialSelection;
public class ClonePartitionPanel extends JPanel {
private static final long serialVersionUID = 1L;
final BeautiPanel beautiPanel;
final JComboBox<Object> cloneFromComboBox;
final JButton okButton = new JButton("OK");
public ClonePartitionPanel(BeautiPanel beautiPanel) {
this.beautiPanel = beautiPanel;
DefaultListModel<String> listModel = beautiPanel.listModel;
Object[] models = new Object[listModel.getSize()];
for(int i=0; i < listModel.getSize(); i++){
models[i] = listModel.getElementAt(i);
}
cloneFromComboBox = new JComboBox<>(models);
// has to be editable
cloneFromComboBox.setEditable(true);
// change the editor's document
new S11InitialSelection(cloneFromComboBox);
init();
}
public void init() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel jPanel = new JPanel(new FlowLayout());
JLabel label = new JLabel("Clone from");
jPanel.add(label);
cloneFromComboBox.setMaximumRowCount(10);
jPanel.add(cloneFromComboBox);
add(Box.createRigidArea(new Dimension(0, 10)));
add(jPanel);
add(Box.createVerticalGlue());
add(Box.createVerticalStrut(5));
okButton.setName("ok");
okButton.setToolTipText("Click to clone configuration from the above selected partition " +
"into all selected partitions on the left.");
okButton.addActionListener(e -> {
clonePartitions();
});
add(okButton);
} // init
protected void clonePartitions() {
String sourceId = cloneFromComboBox.getSelectedItem().toString();
for (Object targetId : beautiPanel.listOfPartitions.getSelectedValuesList()) {
beautiPanel.cloneFrom(sourceId, targetId.toString());
}
}
}