42 lines
1.1 KiB
Java
42 lines
1.1 KiB
Java
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;
|
|
}
|
|
}
|