package beast.app.beauti;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import beast.app.draw.BEASTObjectInputEditor;
import beast.core.BEASTInterface;
import beast.core.Input;
import beast.core.parameter.RealParameter;
import beast.evolution.alignment.Alignment;
import beast.evolution.substitutionmodel.Frequencies;
public class FrequenciesInputEditor extends BEASTObjectInputEditor {
RealParameter freqsParameter;
Alignment alignment;
private static final long serialVersionUID = 1L;
boolean useDefaultBehavior;
public FrequenciesInputEditor(BeautiDoc doc) {
super(doc);
}
@Override
public Class<?> type() {
return ActionEvent.class;
//return Frequencies.class;
}
@Override
public void init(Input<?> input, BEASTInterface beastObject, int itemNr, ExpandOption isExpandOption, boolean addButtons) {
super.init(input, beastObject, itemNr, isExpandOption, addButtons);
} // init
@Override
/** suppress combobox **/
protected void addComboBox(JComponent box, Input<?> input, BEASTInterface beastObject) {
Frequencies freqs = (Frequencies) input.get();
JComboBox<String> comboBox = new JComboBox<>(new String[]{"Estimated", "Empirical", "All equal"});
if (freqs.frequenciesInput.get() != null) {
comboBox.setSelectedIndex(0);
freqsParameter = freqs.frequenciesInput.get();
alignment = (Alignment) getCandidate(freqs.dataInput, freqs);
} else if (freqs.estimateInput.get()) {
comboBox.setSelectedIndex(1);
alignment = freqs.dataInput.get();
freqsParameter = (RealParameter) getCandidate(freqs.frequenciesInput, freqs);
} else {
comboBox.setSelectedIndex(2);
alignment = freqs.dataInput.get();
freqsParameter = (RealParameter) getCandidate(freqs.frequenciesInput, freqs);
}
comboBox.addActionListener(e -> {
//@SuppressWarnings("unchecked")
//JComboBox<String> comboBox = (JComboBox<String>) e.getSource();
int selected = comboBox.getSelectedIndex();
//Frequencies freqs = (Frequencies) m_input.get();
try {
switch (selected) {
case 0:
freqs.frequenciesInput.setValue(freqsParameter, freqs);
freqs.dataInput.setValue(null, freqs);
break;
case 1:
freqs.frequenciesInput.setValue(null, freqs);
freqs.dataInput.setValue(alignment, freqs);
freqs.estimateInput.setValue(true, freqs);
break;
case 2:
freqs.frequenciesInput.setValue(null, freqs);
freqs.dataInput.setValue(alignment, freqs);
freqs.estimateInput.setValue(false, freqs);
break;
}
} catch (Exception e2) {
e2.printStackTrace();
}
//System.err.println(freqs.frequencies.get() + " " + freqs.m_data.get() + " " + freqs.m_bEstimate.get());
});
box.add(comboBox);
}
private BEASTInterface getCandidate(Input<?> input, Frequencies freqs) {
return getDoc().getPartition(freqs);
// List<String> candidates = PluginPanel.getAvailablePlugins(input, freqs, null);
// String id = candidates.get(0);
// BEASTObject beastObject = PluginPanel.g_plugins.get(id);
// return beastObject;
}
@Override
/** suppress input label**/
protected void addInputLabel() {
super.addInputLabel();
}
}