package com.kartoflane.superluminal2.mvc.views.props;
import org.eclipse.swt.events.PaintEvent;
import com.kartoflane.superluminal2.components.enums.Shapes;
import com.kartoflane.superluminal2.mvc.controllers.props.PropController;
import com.kartoflane.superluminal2.mvc.views.BaseView;
public class PropView extends BaseView {
protected Shapes shape = Shapes.RECTANGLE;
public PropView() {
super();
}
protected PropController getController() {
return (PropController) 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:
int sx = controller.getParent().getX(),
sy = controller.getParent().getY(),
ex = controller.getX(),
ey = controller.getY();
paintLine(e, sx, sy, ex, ey, 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() {
shape = getController().getShape();
if (controller.isSelected()) {
setBorderColor(controller.isPinned() ? PIN_RGB : SELECT_RGB);
} else if (controller.isHighlighted()) {
setBorderColor(HIGHLIGHT_RGB);
} else {
setBorderColor(defaultBorder);
setBackgroundColor(defaultBackground);
}
}
}