}
@Override
public PictogramElement add(IAddContext context) {
IGaService gaService = Graphiti.getGaService();
IPeService peService = Graphiti.getPeService();
DataStoreReference store = (DataStoreReference) context.getNewObject();
int width = 50;
int height = 50;
int textArea = 15;
ContainerShape container = peService.createContainerShape(context.getTargetContainer(), true);
Rectangle invisibleRect = gaService.createInvisibleRectangle(container);
gaService.setLocationAndSize(invisibleRect, context.getX(), context.getY(), width, height + textArea);
int whalf = width / 2;
int[] xy = { 0, 10, whalf, 20, width, 10, width, height - 10, whalf, height, 0, height - 10 };
int[] bend = { 0, 0, whalf, whalf, 0, 0, 0, 0, whalf, whalf, 0, 0 };
Polygon polygon = gaService.createPolygon(invisibleRect, xy, bend);
polygon.setFilled(true);
// polygon.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND));
StyleUtil.applyBGStyle(polygon, this);
xy = new int[] { 0, 14, whalf, 24, width, 14 };
bend = new int[] { 0, 0, whalf, whalf, 0, 0 };
Polyline line1 = gaService.createPolyline(invisibleRect, xy, bend);
line1.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND));
xy = new int[] { 0, 18, whalf, 28, width, 18 };
Polyline line2 = gaService.createPolyline(invisibleRect, xy, bend);
line2.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND));
xy = new int[] { 0, 11, whalf, 0, width, 11 };
Polyline lineTop = gaService.createPolyline(invisibleRect, xy, bend);
lineTop.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND));
Shape textShape = peService.createShape(container, false);
peService
.setPropertyValue(textShape, UpdateBaseElementNameFeature.TEXT_ELEMENT, Boolean.toString(true));
Text text = gaService.createDefaultText(getDiagram(), textShape, store.getName());
text.setStyle(StyleUtil.getStyleForText(getDiagram()));
text.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
text.setVerticalAlignment(Orientation.ALIGNMENT_TOP);
gaService.setLocationAndSize(text, 0, height, width, textArea);
peService.createChopboxAnchor(container);
AnchorUtil.addFixedPointAnchors(container, invisibleRect);
createDIShape(container, store);
layoutPictogramElement(container);
return container;
}