package com.kartoflane.superluminal2.mvc.views.props; import org.eclipse.swt.events.PaintEvent; import com.kartoflane.superluminal2.mvc.controllers.AbstractController; import com.kartoflane.superluminal2.mvc.controllers.props.TracerPropController; public class TracerPropView extends PropView { private final int[] lines = new int[4]; protected TracerPropController getController() { return (TracerPropController) controller; } @Override public void paintControl(PaintEvent e) { if (alpha > 0) { switch (shape) { case LINE: // Do nothing. break; case RECTANGLE: paintBackgroundSquare(e, backgroundColor, alpha); break; case OVAL: paintBackgroundOval(e, backgroundColor, alpha); break; case POLYGON: paintBackgroundPolygon(e, getController().getPolygon().toArray(), backgroundColor, alpha); break; } paintImage(e, image, cachedImageBounds, alpha); switch (shape) { case LINE: paintLine(e, lines[0], lines[1], lines[2], lines[3], borderColor, borderThickness, alpha); break; case RECTANGLE: paintBorderSquare(e, borderColor, borderThickness, alpha); break; case OVAL: paintBorderOval(e, borderColor, borderThickness, alpha); break; case POLYGON: paintBorderPolygon(e, getController().getPolygon().toArray(), borderColor, borderThickness, alpha); break; } } } @Override public void updateView() { super.updateView(); AbstractController ac = getController().getOrigin(); if (ac == null) { setVisible(false); return; } lines[0] = ac.getX(); lines[1] = ac.getY(); ac = getController().getTarget(); if (ac == null) { setVisible(false); return; } lines[2] = ac.getX(); lines[3] = ac.getY(); } }