package com.baselet.element.elementnew.uml;
import java.util.Arrays;
import java.util.List;
import com.baselet.control.basics.geom.PointDouble;
import com.baselet.control.enums.ElementId;
import com.baselet.diagram.draw.DrawHandler;
import com.baselet.diagram.draw.helper.ColorOwn;
import com.baselet.diagram.draw.helper.ColorOwn.Transparency;
import com.baselet.diagram.draw.helper.Style;
import com.baselet.element.NewGridElement;
import com.baselet.element.facet.Facet;
import com.baselet.element.facet.PropertiesParserState;
import com.baselet.element.facet.Settings;
import com.baselet.element.facet.common.SeparatorLineFacet;
import com.baselet.element.settings.SettingsManualResizeTop;
public class Deployment extends NewGridElement {
@Override
protected Settings createSettings() {
return new SettingsManualResizeTop() {
@Override
protected List<Facet> createFacets() {
return listOf(super.createFacets(), SeparatorLineFacet.INSTANCE);
}
};
}
@Override
public ElementId getId() {
return ElementId.UMLDeployment;
}
private static final int BORDER = 10;
@Override
protected void drawCommonContent(PropertiesParserState state) {
DrawHandler drawer = state.getDrawer();
double w = getRealSize().getWidth();
double h = getRealSize().getHeight();
List<PointDouble> p = Arrays.asList(
new PointDouble(0, BORDER),
new PointDouble(BORDER, 0),
new PointDouble(w, 0),
new PointDouble(w, h - BORDER),
new PointDouble(w - BORDER, h));
PointDouble pLine = new PointDouble(w - BORDER, BORDER);
// Fill 3d-rectangle
Style oldStyle = drawer.getStyleClone();
drawer.setForegroundColor(ColorOwn.TRANSPARENT);
if (oldStyle.getBackgroundColor() == ColorOwn.DEFAULT_BACKGROUND) {
drawer.setBackgroundColor(ColorOwn.WHITE.transparency(Transparency.BACKGROUND).darken(80));
}
else {
drawer.setBackgroundColor(oldStyle.getBackgroundColor().darken(80));
}
drawer.drawLines(p.get(0), p.get(1), p.get(2), p.get(3), p.get(4), pLine, p.get(0));
drawer.setStyle(oldStyle);
// Draw 3d-rectangle border
drawer.drawLines(p);
drawer.drawLines(pLine, p.get(2));
// Draw Content-Rectangle
drawer.drawRectangle(0, BORDER, w - BORDER, h - BORDER);
state.getBuffer().setTopMin(BORDER);
state.getBuffer().addToRight(BORDER);
}
}