package lectures.mvc.graphics;
import util.annotations.WebDocuments;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import lectures.composite.objects_shapes.CartesianPlane;
import lectures.graphics.Line;
import lectures.graphics.StringShape;
import lectures.mvc.properties.ObservableCartesianPlane;
@WebDocuments({"Lectures/MvcGraphics.pptx", "Lectures/MvcGraphics.pdf", "Videos/MvcGraphics.avi"})
public class ACartesianPlaneView
extends Component implements PropertyChangeListener {
BasicStroke dotted = new BasicStroke(
1f,
BasicStroke.CAP_ROUND,
BasicStroke.JOIN_ROUND,
1f,
new float[] {2f},
0f);
ObservableCartesianPlane cartesianPlane;
public ACartesianPlaneView(ObservableCartesianPlane aCartesianPlane) {
cartesianPlane = aCartesianPlane;
}
public void propertyChange(PropertyChangeEvent evt) {
System.out.println(("Repaint called by:" + Thread.currentThread()));
repaint();
}
@Override
public void paint(Graphics g) {
System.out.println(("Paint called by:" + Thread.currentThread()));
super.paint(g); Graphics2D g2 = (Graphics2D) g;
g2.setStroke(dotted); g.setColor(Color.BLUE); draw(g, cartesianPlane); }
public void draw(Graphics g, CartesianPlane aCartesianPlane) {
draw(g, aCartesianPlane.getXAxis());
draw(g, aCartesianPlane.getYAxis());
draw(g, aCartesianPlane.getXLabel());
draw(g, aCartesianPlane.getYLabel());
}
public void draw(Graphics g, Line aLine) {
g.drawLine(aLine.getX(), aLine.getY(), aLine.getX() + aLine.getWidth(), aLine.getY() + aLine.getHeight());
}
public void draw(Graphics g, StringShape aLabel) {
String s = aLabel.getText();
g.drawString(s, aLabel.getX(), aLabel.getY());
}
}