package pipe.controllers;
import pipe.actions.gui.PipeApplicationModel;
import pipe.handlers.ArcHandler;
import pipe.views.InhibitorArcView;
import uk.ac.imperial.pipe.models.petrinet.Arc;
import uk.ac.imperial.pipe.models.petrinet.Connectable;
import uk.ac.imperial.pipe.models.petrinet.Place;
import uk.ac.imperial.pipe.models.petrinet.Transition;
import java.awt.Container;
/**
* Builds the view representation of an inhibitor arc
*/
public class InhibitorArcViewBuilder {
/**
* Underlying arc model
*/
private final Arc<Place, Transition> arc;
/**
* Controller for the Petri net the arc belongs to
*/
private final PetriNetController controller;
/**
*
* @param arc underlying arc model
* @param controller controller for the Petri net the arc belongs to
*/
public InhibitorArcViewBuilder(Arc<Place, Transition> arc, PetriNetController controller) {
this.arc = arc;
this.controller = controller;
}
/**
* @param parent, the parent of this arc view
* @param model application model
* @return an inhibitor arc view
*/
public InhibitorArcView build(Container parent, PipeApplicationModel model) {
ArcHandler<? extends Connectable, ? extends Connectable> handler = new ArcHandler<>(parent, arc, controller, model);
InhibitorArcView view =
new InhibitorArcView(arc, controller, parent, handler, model);
return view;
}
}