package com.baselet.element.elementnew.uml;
import java.util.Arrays;
import com.baselet.control.basics.geom.PointDouble;
import com.baselet.control.basics.geom.Rectangle;
import com.baselet.control.enums.ElementId;
import com.baselet.diagram.draw.DrawHandler;
import com.baselet.element.NewGridElement;
import com.baselet.element.facet.PropertiesParserState;
import com.baselet.element.facet.Settings;
import com.baselet.element.settings.SettingsAutoresize;
import com.baselet.element.sticking.StickingPolygon;
import com.baselet.element.sticking.polygon.StickingPolygonGenerator;
public class Timer extends NewGridElement {
private static final int CLOCK_DIM = 40;
private final StickingPolygonGenerator timerStickingPolygonGenerator = new StickingPolygonGenerator() {
@Override
public StickingPolygon generateStickingBorder(Rectangle rect) {
StickingPolygon p = new StickingPolygon(rect.x, rect.y);
p.addPoint(xClock(), 0);
p.addPoint(x2Clock(), CLOCK_DIM);
p.addPoint(xClock(), CLOCK_DIM);
p.addPoint(x2Clock(), 0, true);
return p;
}
};
@Override
public ElementId getId() {
return ElementId.UMLTimer;
}
@Override
protected void drawCommonContent(PropertiesParserState state) {
DrawHandler drawer = state.getDrawer();
state.updateMinimumSize(CLOCK_DIM, CLOCK_DIM);
drawer.drawLines(Arrays.asList(new PointDouble(xClock(), 0), new PointDouble(x2Clock(), CLOCK_DIM), new PointDouble(xClock(), CLOCK_DIM), new PointDouble(x2Clock(), 0), new PointDouble(xClock(), 0)));
state.setStickingPolygonGenerator(timerStickingPolygonGenerator);
}
private int x2Clock() {
return xClock() + CLOCK_DIM;
}
private int xClock() {
return (getRealSize().width - CLOCK_DIM) / 2;
}
@Override
protected Settings createSettings() {
return new SettingsAutoresize();
}
}