Search in sources :

Example 1 with OneOnX

use of beast.math.distributions.OneOnX in project beast2 by CompEvol.

the class MRCAPriorInputEditor method init.

@Override
public void init(Input<?> input, BEASTInterface beastObject, final int listItemNr, ExpandOption isExpandOption, boolean addButtons) {
    m_bAddButtons = addButtons;
    m_input = input;
    m_beastObject = beastObject;
    this.itemNr = listItemNr;
    Box itemBox = Box.createHorizontalBox();
    MRCAPrior prior = (MRCAPrior) beastObject;
    String text = prior.getID();
    JButton taxonButton = new JButton(text);
    // taxonButton.setMinimumSize(Base.PREFERRED_SIZE);
    // taxonButton.setPreferredSize(Base.PREFERRED_SIZE);
    itemBox.add(taxonButton);
    taxonButton.addActionListener(e -> {
        List<?> list = (List<?>) m_input.get();
        MRCAPrior prior2 = (MRCAPrior) list.get(itemNr);
        try {
            TaxonSet taxonset = prior2.taxonsetInput.get();
            List<Taxon> originalTaxa = new ArrayList<>();
            originalTaxa.addAll(taxonset.taxonsetInput.get());
            Set<Taxon> candidates = getTaxonCandidates(prior2);
            TaxonSetDialog dlg = new TaxonSetDialog(taxonset, candidates, doc);
            if (dlg.showDialog()) {
                if (dlg.taxonSet.taxonsetInput.get().size() == 0) {
                    JOptionPane.showMessageDialog(doc.beauti, "At least one taxon should be included in the taxon set", "Error specifying taxon set", JOptionPane.ERROR_MESSAGE);
                    taxonset.taxonsetInput.get().addAll(originalTaxa);
                    return;
                }
                prior2.taxonsetInput.setValue(dlg.taxonSet, prior2);
                int i = 1;
                String id = dlg.taxonSet.getID();
                while (doc.pluginmap.containsKey(dlg.taxonSet.getID()) && doc.pluginmap.get(dlg.taxonSet.getID()) != dlg.taxonSet) {
                    dlg.taxonSet.setID(id + i);
                    i++;
                }
                BEASTObjectPanel.addPluginToMap(dlg.taxonSet, doc);
                prior2.setID(dlg.taxonSet.getID() + ".prior");
            }
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        refreshPanel();
    });
    if (prior.distInput.getType() == null) {
        try {
            prior.distInput.setValue(new OneOnX(), prior);
            prior.distInput.setValue(null, prior);
        } catch (Exception e) {
        // TODO: handle exception
        }
    }
    List<BeautiSubTemplate> availableBEASTObjects = doc.getInputEditorFactory().getAvailableTemplates(prior.distInput, prior, null, doc);
    JComboBox<BeautiSubTemplate> comboBox = new JComboBox<>(availableBEASTObjects.toArray(new BeautiSubTemplate[] {}));
    comboBox.setName(text + ".distr");
    if (prior.distInput.get() != null) {
        String id = prior.distInput.get().getID();
        // id = BeautiDoc.parsePartition(id);
        id = id.substring(0, id.indexOf('.'));
        for (BeautiSubTemplate template : availableBEASTObjects) {
            if (template.classInput.get() != null && template.shortClassName.equals(id)) {
                comboBox.setSelectedItem(template);
            }
        }
    } else {
        comboBox.setSelectedItem(BeautiConfig.NULL_TEMPLATE);
    }
    comboBox.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            @SuppressWarnings("unchecked") JComboBox<BeautiSubTemplate> comboBox = (JComboBox<BeautiSubTemplate>) e.getSource();
            BeautiSubTemplate template = (BeautiSubTemplate) comboBox.getSelectedItem();
            List<?> list = (List<?>) m_input.get();
            MRCAPrior prior = (MRCAPrior) list.get(itemNr);
            // }
            try {
                // BEASTObject beastObject2 =
                template.createSubNet(new PartitionContext(""), prior, prior.distInput, true);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            refreshPanel();
        }
    });
    itemBox.add(comboBox);
    JCheckBox isMonophyleticdBox = new JCheckBox(doc.beautiConfig.getInputLabel(prior, prior.isMonophyleticInput.getName()));
    isMonophyleticdBox.setName(text + ".isMonophyletic");
    isMonophyleticdBox.setSelected(prior.isMonophyleticInput.get());
    isMonophyleticdBox.setToolTipText(prior.isMonophyleticInput.getHTMLTipText());
    isMonophyleticdBox.addActionListener(new MRCAPriorActionListener(prior));
    itemBox.add(isMonophyleticdBox);
    JButton deleteButton = new SmallButton("-", true);
    deleteButton.setToolTipText("Delete this calibration");
    deleteButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            Log.warning.println("Trying to delete a calibration");
            List<?> list = (List<?>) m_input.get();
            MRCAPrior prior = (MRCAPrior) list.get(itemNr);
            doc.disconnect(prior, "prior", "distribution");
            doc.disconnect(prior, "tracelog", "log");
            if (prior.onlyUseTipsInput.get()) {
                disableTipSampling(m_beastObject, doc);
            }
            doc.unregisterPlugin(prior);
            refreshPanel();
        }
    });
    itemBox.add(Box.createGlue());
    itemBox.add(deleteButton);
    add(itemBox);
}
Also used : ActionEvent(java.awt.event.ActionEvent) JButton(javax.swing.JButton) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) JComboBox(javax.swing.JComboBox) Taxon(beast.evolution.alignment.Taxon) JComboBox(javax.swing.JComboBox) Box(javax.swing.Box) JCheckBox(javax.swing.JCheckBox) TaxonSet(beast.evolution.alignment.TaxonSet) InvocationTargetException(java.lang.reflect.InvocationTargetException) JCheckBox(javax.swing.JCheckBox) ActionListener(java.awt.event.ActionListener) MRCAPrior(beast.math.distributions.MRCAPrior) SmallButton(beast.app.draw.SmallButton) OneOnX(beast.math.distributions.OneOnX)

Aggregations

SmallButton (beast.app.draw.SmallButton)1 Taxon (beast.evolution.alignment.Taxon)1 TaxonSet (beast.evolution.alignment.TaxonSet)1 MRCAPrior (beast.math.distributions.MRCAPrior)1 OneOnX (beast.math.distributions.OneOnX)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Box (javax.swing.Box)1 JButton (javax.swing.JButton)1 JCheckBox (javax.swing.JCheckBox)1 JComboBox (javax.swing.JComboBox)1