package ovh.gasser.newshapes.ui; import ovh.gasser.newshapes.ShapeVisitor; import ovh.gasser.newshapes.shapes.SCollection; import ovh.gasser.newshapes.shapes.Shape; import ovh.gasser.newshapes.ui.listeners.SelectionListener; import javax.swing.*; import java.awt.*; public class ShapesView extends JPanel { private final Shape model; private final Controller controller; private ShapeVisitor draftman; private boolean resizeMode; public ShapesView(SCollection model) { this.model = model; this.controller = new Controller(this, model); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); this.draftman = new ShapeDraftman(g); ((ShapeDraftman) this.draftman).setResizeMode(resizeMode); model.accept(draftman); } public Controller getController() { return controller; } public void addSelectionChangeListener(SelectionListener listener) { controller.addSelectionChangeListener(listener); } public void setResizeMode(boolean resizeMode) { this.resizeMode = resizeMode; } }