package beast.app.draw; import java.awt.Dimension; import java.util.ArrayList; import java.util.List; import javax.swing.Box; import javax.swing.JComboBox; import beast.app.beauti.BeautiDoc; import beast.core.BEASTInterface; import beast.core.Input; /** * Input editor for enumeration inputs * */ public class EnumInputEditor extends InputEditor.Base { public EnumInputEditor(BeautiDoc doc) { super(doc); } //public EnumInputEditor() {} private static final long serialVersionUID = 1L; JComboBox<String> m_selectPluginBox; @Override public Class<?> type() { return Enum.class; } /** * construct an editor consisting of * o a label * o a combo box for selecting another value in the enumeration */ @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; addInputLabel(); List<String> availableValues = new ArrayList<>(); for (int i = 0; i < input.possibleValues.length; i++) { availableValues.add(input.possibleValues[i].toString()); } if (availableValues.size() > 1) { m_selectPluginBox = new JComboBox<>(availableValues.toArray(new String[0])); Dimension maxDim = m_selectPluginBox.getPreferredSize(); m_selectPluginBox.setMaximumSize(maxDim); String selectString = input.get().toString(); m_selectPluginBox.setSelectedItem(selectString); m_selectPluginBox.addActionListener(e -> { String selected = (String) m_selectPluginBox.getSelectedItem(); try { setValue(selected); //lm_input.setValue(selected, m_beastObject); } catch (Exception e1) { e1.printStackTrace(); } }); m_selectPluginBox.setToolTipText(input.getHTMLTipText()); add(m_selectPluginBox); add(Box.createGlue()); } } // init } // class EnumInputEditor