package beast.app.beauti; import java.util.List; import beast.core.Distribution; /** packages can implement a PriorProvider. The PrioListInputEditor will * pick up these PriorProviders by introspection. When a user selects the + * button, the user can check whichever PriorProvider to add a new Distribution * to the list of priors. */ public interface PriorProvider { /** create a distribution, but do not add to the prior -- this is handled * by the PrioListInputEditor. If null is returned, the operator is canceled. * @param doc useful to get information about the model being edited * @return Distribution to be added to prior, or null if nothing should * be done. */ public List<Distribution> createDistribution(BeautiDoc doc); /** return description to be used in drop-down box for selecting among PriorProviders **/ public String getDescription(); /** * A provider can check that the document contains components it can provide * a prior for, e.g. a prior over a geographical region can only be provided * if there is a partition with geographical info in it. * @return true if a prior can be provided for this document, false otherwise. **/ default public boolean canProvidePrior(BeautiDoc doc) { return true; } }