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