package beast.app.beauti; import javax.swing.Box; import javax.swing.JComboBox; import javax.swing.JLabel; import beast.app.draw.InputEditor; import beast.core.BEASTInterface; import beast.core.Input; import beast.evolution.speciation.GeneTreeForSpeciesTreeDistribution; public class GeneTreeForSpeciesTreeDistributionInputEditor extends InputEditor.Base { private static final long serialVersionUID = 1L; public GeneTreeForSpeciesTreeDistributionInputEditor(BeautiDoc doc) { super(doc); } @Override public Class<?> type() { return GeneTreeForSpeciesTreeDistribution.class; } @Override public void init(Input<?> input, BEASTInterface beastObject, int itemNr, ExpandOption isExpandOption, boolean addButtons) { m_bAddButtons = addButtons; m_input = input; m_beastObject = beastObject; this.itemNr= itemNr; String id = beastObject.getID(); if (id.contains(".t:")) { id = id.substring(id.indexOf(".t:") + 3); } add(new JLabel("Gene Tree " + id)); add(Box.createGlue()); } static final int OTHER = 3; String [] valuesString = new String[]{"autosomal_nuclear", "X", "Y or mitochondrial", "other"}; Double [] _values = new Double[]{2.0, 1.5, 0.5, -1.0}; JComboBox<String> m_selectBeastObjectBox; public InputEditor createPloidyEditor() { InputEditor editor = new InputEditor.Base(doc) { private static final long serialVersionUID = 1L; @Override public Class<?> type() { return null; } @Override public void init(Input<?> input, BEASTInterface beastObject, int itemNr, ExpandOption isExpandOption, boolean addButtons) { m_beastObject = beastObject; m_input = input; m_bAddButtons = addButtons; this.itemNr = itemNr; addInputLabel(); m_selectBeastObjectBox = new JComboBox<>(valuesString); setSelection(); String selectString = input.get().toString(); m_selectBeastObjectBox.setSelectedItem(selectString); m_selectBeastObjectBox.addActionListener(e -> { int i = m_selectBeastObjectBox.getSelectedIndex(); if (i == OTHER) { setSelection(); return; } try { setValue(_values[i]); //lm_input.setValue(selected, m_beastObject); } catch (Exception e1) { e1.printStackTrace(); } }); m_selectBeastObjectBox.setToolTipText(input.getHTMLTipText()); add(m_selectBeastObjectBox); add(Box.createGlue()); } private void setSelection() { Double value = (Double) m_input.get(); m_selectBeastObjectBox.setSelectedIndex(OTHER); for (int i = 0; i < _values.length; i++) { if (value.equals(_values[i])) { m_selectBeastObjectBox.setSelectedIndex(i); } } } }; editor.init(((GeneTreeForSpeciesTreeDistribution)m_beastObject).ploidyInput, m_beastObject, -1, ExpandOption.FALSE, true); return editor; } }