001package org.biopax.paxtools.controller;
002
003import org.biopax.paxtools.model.BioPAXElement;
004import org.biopax.paxtools.model.Model;
005
006/**
007 * Basic visitor interface for classes using Traverser.
008 */
009public interface Visitor
010{
011// -------------------------- OTHER METHODS --------------------------
012
013    /**
014     * An implementation of this method should perform a BioPAX element
015     * and editor dependent operation on the <em>model</em>. Examples of uses of this
016     * method include adding a BioPAX element--with all its dependent
017     * elements that can be reached via the <em>editor</em>--into the model, or
018     * updating an element that is equivalent to the given BioPAX element
019     * using the latter's/former's values.
020     *
021     * @param domain BioPAXElement which is the domain of this property
022     * @param range  Object which is the range of this property
023     * @param model model on which the visiting operation will be done
024     * @param editor editor
025     */
026    public void visit(BioPAXElement domain, Object range, Model model, PropertyEditor<?,?> editor); //TODO looks, using of <?,?> makes editor "read-only"...
027}