Java Examples for org.eclipse.graphiti.services.IPeCreateService

The following java examples will help you to understand the usage of org.eclipse.graphiti.services.IPeCreateService. These source code samples are taken from different open source projects.

Example 1
Project: gmp.graphiti-master  File: CompartmentPattern.java View source code
@Override
public PictogramElement add(IAddContext context) {
    Object mainBusinessObject = context.getNewObject();
    ContainerShape parentContainerShape = context.getTargetContainer();
    // CONTAINER SHAPE WITH ROUNDED RECTANGLE
    final IPeCreateService peCreateService = Graphiti.getPeCreateService();
    IGaCreateService gaCreateService = Graphiti.getGaCreateService();
    IGaService gaService = Graphiti.getGaService();
    ContainerShape containerShape = peCreateService.createContainerShape(parentContainerShape, true);
    getFeatureProvider().getDirectEditingInfo().setMainPictogramElement(containerShape);
    // check whether valid size is available, e.g. if called from the create
    // feature
    int width = context.getWidth() <= 0 ? 100 : context.getWidth();
    int height = context.getHeight() <= 0 ? 120 : context.getHeight();
    {
        // create and set graphics algorithm
        RoundedRectangle roundedRectangle = gaCreateService.createRoundedRectangle(containerShape, getConfiguration().getCornerWidth(), getConfiguration().getCornerHeight());
        roundedRectangle.setForeground(manageColor(getConfiguration().getForegroundColor()));
        roundedRectangle.setBackground(manageColor(getConfiguration().getBackgroundColor()));
        roundedRectangle.setLineWidth(getConfiguration().getLineWidth());
        roundedRectangle.setTransparency(getConfiguration().getTransparency());
        Graphiti.getGaService().setLocationAndSize(roundedRectangle, context.getX(), context.getY(), width, height);
        // create link and wire it
        link(containerShape, mainBusinessObject);
    }
    // HEADER SHAPE
    {
        // create shape for text
        Shape shape = peCreateService.createShape(containerShape, false);
        Text text;
        if (getConfiguration().isHeaderImageVisible()) {
            Rectangle rectangle = gaCreateService.createRectangle(shape);
            rectangle.setFilled(false);
            rectangle.setLineVisible(false);
            gaCreateService.createImage(rectangle, IPlatformImageConstants.IMG_EDIT_EXPANDALL);
            text = gaCreateService.createText(rectangle);
            text.setForeground(manageColor(getConfiguration().getTextColor()));
            text.setHorizontalAlignment(Orientation.ALIGNMENT_LEFT);
            text.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
            text.setFont(gaService.manageDefaultFont(getDiagram(), false, true));
        } else // just a text data mapping
        {
            text = gaCreateService.createText(shape);
            text.setForeground(manageColor(getConfiguration().getTextColor()));
            text.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
            text.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
            text.setFont(gaService.manageDefaultFont(getDiagram(), false, true));
        }
        IDirectEditingInfo dei = getFeatureProvider().getDirectEditingInfo();
        dei.setPictogramElement(shape);
        dei.setGraphicsAlgorithm(text);
        // create link and wire it
        ILinkCreationInfo linkCreationInfo = getHeaderMapping().getLinkCreationInfo(mainBusinessObject);
        String linkProperty = linkCreationInfo.getProperty();
        if (linkProperty != null) {
            getLinkService().setLinkProperty(shape, linkProperty);
        }
        link(shape, linkCreationInfo.getBusinessObjects());
    }
    {
        for (int compartmentIndex = 0; compartmentIndex < getCompartmentCount(); compartmentIndex++) {
            // create a line shape above each compartment
            // SHAPE WITH LINE
            {
                // create shape for line
                Shape shape = peCreateService.createShape(containerShape, false);
                // create and set graphics algorithm
                Polyline polyline = gaCreateService.createPolyline(shape, new int[] { 0, 0, 0, 0 });
                polyline.setForeground(manageColor(getConfiguration().getForegroundColor()));
                polyline.setLineWidth(getConfiguration().getLineWidth());
            }
            ContainerShape compartmentContainerShape = peCreateService.createContainerShape(containerShape, false);
            Rectangle compartmentRectangle = gaCreateService.createRectangle(compartmentContainerShape);
            compartmentRectangle.setFilled(false);
            compartmentRectangle.setLineVisible(false);
        // createLink(compartmentContainerShape, mainBusinessObject);
        }
    }
    peCreateService.createChopboxAnchor(containerShape);
    updatePictogramElement(containerShape);
    return containerShape;
}
Example 2
Project: Permet-master  File: AddTransitionFeature.java View source code
@Override
public PictogramElement add(IAddContext context) {
    IAddConnectionContext addConContext = (IAddConnectionContext) context;
    Transition transition = (Transition) context.getNewObject();
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    Connection connection = peCreateService.createFreeFormConnection(getDiagram());
    connection.setStart(addConContext.getSourceAnchor());
    connection.setEnd(addConContext.getTargetAnchor());
    IGaService gaService = Graphiti.getGaService();
    Polyline polyline = gaService.createPolyline(connection);
    polyline.setLineWidth(1);
    polyline.setForeground(manageColor(IColorConstant.BLACK));
    addArrow(connection);
    addLabel(connection, transition);
    link(connection, transition);
    return connection;
}
Example 3
Project: jenkow-plugin-master  File: AddTaskFeature.java View source code
@Override
public PictogramElement add(IAddContext context) {
    final Task addedTask = (Task) context.getNewObject();
    final ContainerShape parent = context.getTargetContainer();
    // CONTAINER SHAPE WITH ROUNDED RECTANGLE
    final IPeCreateService peCreateService = Graphiti.getPeCreateService();
    final ContainerShape containerShape = peCreateService.createContainerShape(parent, true);
    final IGaService gaService = Graphiti.getGaService();
    DiagramBaseShape baseShape = DiagramBaseShape.ACTIVITY;
    if (ExtensionUtil.isCustomServiceTask(addedTask)) {
        final ServiceTask serviceTask = (ServiceTask) addedTask;
        final List<CustomServiceTask> customServiceTasks = ExtensionUtil.getCustomServiceTasks(ActivitiUiUtil.getProjectFromDiagram(getDiagram()));
        CustomServiceTask targetTask = null;
        for (final CustomServiceTask customServiceTask : customServiceTasks) {
            if (customServiceTask.getId().equals(serviceTask.getExtensionId())) {
                targetTask = customServiceTask;
                break;
            }
        }
        if (!DiagramBaseShape.ACTIVITY.equals(targetTask.getDiagramBaseShape())) {
            baseShape = targetTask.getDiagramBaseShape();
        }
    }
    int width = 0;
    int height = 0;
    GraphicsAlgorithm algorithm = null;
    switch(baseShape) {
        case ACTIVITY:
            // check whether the context has a size (e.g. from a create feature)
            // otherwise define a default size for the shape
            width = context.getWidth() <= 0 ? 105 : context.getWidth();
            height = context.getHeight() <= 0 ? 55 : context.getHeight();
            // need to access it later
            RoundedRectangle roundedRectangle;
            {
                // create invisible outer rectangle expanded by
                // the width needed for the anchor
                final Rectangle invisibleRectangle = gaService.createInvisibleRectangle(containerShape);
                gaService.setLocationAndSize(invisibleRectangle, context.getX(), context.getY(), width, height);
                // create and set visible rectangle inside invisible rectangle
                roundedRectangle = gaService.createRoundedRectangle(invisibleRectangle, 20, 20);
                algorithm = roundedRectangle;
                roundedRectangle.setParentGraphicsAlgorithm(invisibleRectangle);
                roundedRectangle.setStyle(StyleUtil.getStyleForTask(getDiagram()));
                gaService.setLocationAndSize(roundedRectangle, 0, 0, width, height);
                // create link and wire it
                link(containerShape, addedTask);
            }
            break;
        case GATEWAY:
            // check whether the context has a size (e.g. from a create feature)
            // otherwise define a default size for the shape
            width = context.getWidth() <= 0 ? 60 : context.getWidth();
            height = context.getHeight() <= 0 ? 60 : context.getHeight();
            Polygon polygon;
            {
                int xy[] = new int[] { 0, 30, 30, 0, 60, 30, 30, 60, 0, 30 };
                final Polygon invisiblePolygon = gaService.createPolygon(containerShape, xy);
                invisiblePolygon.setFilled(false);
                invisiblePolygon.setLineVisible(false);
                gaService.setLocationAndSize(invisiblePolygon, context.getX(), context.getY(), width, height);
                // create and set visible circle inside invisible circle
                polygon = gaService.createPolygon(invisiblePolygon, xy);
                algorithm = polygon;
                polygon.setParentGraphicsAlgorithm(invisiblePolygon);
                polygon.setStyle(StyleUtil.getStyleForTask(getDiagram()));
                gaService.setLocationAndSize(polygon, 0, 0, width, height);
                // create link and wire it
                link(containerShape, addedTask);
            }
            break;
        case EVENT:
            // check whether the context has a size (e.g. from a create feature)
            // otherwise define a default size for the shape
            width = context.getWidth() <= 0 ? 55 : context.getWidth();
            height = context.getHeight() <= 0 ? 55 : context.getHeight();
            Ellipse circle;
            {
                final Ellipse invisibleCircle = gaService.createEllipse(containerShape);
                invisibleCircle.setFilled(false);
                invisibleCircle.setLineVisible(false);
                gaService.setLocationAndSize(invisibleCircle, context.getX(), context.getY(), width, height);
                // create and set visible circle inside invisible circle
                circle = gaService.createEllipse(invisibleCircle);
                circle.setParentGraphicsAlgorithm(invisibleCircle);
                circle.setStyle(StyleUtil.getStyleForTask(getDiagram()));
                gaService.setLocationAndSize(circle, 0, 0, width, height);
                // create link and wire it
                link(containerShape, addedTask);
            }
            break;
    }
    // SHAPE WITH TEXT
    {
        // create shape for text
        final Shape shape = peCreateService.createShape(containerShape, false);
        // create and set text graphics algorithm
        final MultiText text = gaService.createDefaultMultiText(getDiagram(), shape, addedTask.getName());
        text.setStyle(StyleUtil.getStyleForTask(getDiagram()));
        text.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
        text.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
        if (OSUtil.getOperatingSystem() == OSEnum.Mac) {
            text.setFont(gaService.manageFont(getDiagram(), text.getFont().getName(), 11));
        }
        switch(baseShape) {
            case ACTIVITY:
                gaService.setLocationAndSize(text, 0, 20, width, height - 25);
                break;
            case GATEWAY:
                gaService.setLocationAndSize(text, 0, height + 5, width, 40);
                break;
            case EVENT:
                gaService.setLocationAndSize(text, 0, height + 5, width, 40);
                break;
        }
        // create link and wire it
        link(shape, addedTask);
        // provide information to support direct-editing directly
        // after object creation (must be activated additionally)
        final IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo();
        // set container shape for direct editing after object creation
        directEditingInfo.setMainPictogramElement(containerShape);
        // set shape and graphics algorithm where the editor for
        // direct editing shall be opened after object creation
        directEditingInfo.setPictogramElement(shape);
        directEditingInfo.setGraphicsAlgorithm(text);
    }
    {
        final Shape shape = peCreateService.createShape(containerShape, false);
        final Image image = gaService.createImage(shape, getIcon(addedTask));
        switch(baseShape) {
            case ACTIVITY:
                gaService.setLocationAndSize(image, 5, 5, IMAGE_SIZE, IMAGE_SIZE);
                break;
            case GATEWAY:
                gaService.setLocationAndSize(image, (width - IMAGE_SIZE) / 2, (height - IMAGE_SIZE) / 2, IMAGE_SIZE, IMAGE_SIZE);
                break;
            case EVENT:
                gaService.setLocationAndSize(image, (width - IMAGE_SIZE) / 2, (height - IMAGE_SIZE) / 2, IMAGE_SIZE, IMAGE_SIZE);
                break;
        }
    }
    // add a chopbox anchor to the shape
    peCreateService.createChopboxAnchor(containerShape);
    // create an additional box relative anchor at middle-right
    final BoxRelativeAnchor boxAnchor = peCreateService.createBoxRelativeAnchor(containerShape);
    boxAnchor.setRelativeWidth(1.0);
    boxAnchor.setRelativeHeight(0.51);
    boxAnchor.setReferencedGraphicsAlgorithm(algorithm);
    final Ellipse ellipse = ActivitiUiUtil.createInvisibleEllipse(boxAnchor, gaService);
    gaService.setLocationAndSize(ellipse, 0, 0, 0, 0);
    layoutPictogramElement(containerShape);
    return containerShape;
}
Example 4
Project: cdo-master  File: AcoreBasicAddElementFeature.java View source code
public PictogramElement add(IAddContext context) {
    ABasicClass addedClass = (ABasicClass) context.getNewObject();
    Diagram targetDiagram = (Diagram) context.getTargetContainer();
    // CONTAINER SHAPE WITH ROUNDED RECTANGLE
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    // define a default size for the shape
    int width = 100;
    int height = 50;
    IGaService gaService = Graphiti.getGaService();
    addToResourceIfNeeded(addedClass);
    ContainerShape containerShape = createContainerShape(context, addedClass, targetDiagram, peCreateService, width, height, gaService);
    return containerShape;
}
Example 5
Project: Security-Service-Validation-and-Verification-master  File: AddSecurityFlowFeature.java View source code
@SuppressWarnings("unchecked")
public PictogramElement add(IAddContext context) {
    IAddConnectionContext addConContext = (IAddConnectionContext) context;
    SecurityFlow addedSecurityFlow = (SecurityFlow) context.getNewObject();
    Anchor sourceAnchor = null;
    Anchor targetAnchor = null;
    if (addConContext.getSourceAnchor() == null) {
        EList<Shape> shapeList = getDiagram().getChildren();
        for (Shape shape : shapeList) {
            FlowNode flowNode = (FlowNode) getBusinessObjectForPictogramElement(shape.getGraphicsAlgorithm().getPictogramElement());
            if (flowNode == null || flowNode.getId() == null || addedSecurityFlow.getSourceRefNode() == null || addedSecurityFlow.getTargetRefNode() == null)
                continue;
            if (flowNode.getId().equals(addedSecurityFlow.getSourceRefNode().getId())) {
                EList<Anchor> anchorList = ((ContainerShape) shape).getAnchors();
                for (Anchor anchor : anchorList) {
                    if (anchor instanceof ChopboxAnchor) {
                        sourceAnchor = anchor;
                        break;
                    }
                }
            }
            if (flowNode.getId().equals(addedSecurityFlow.getTargetRefNode().getId())) {
                EList<Anchor> anchorList = ((ContainerShape) shape).getAnchors();
                for (Anchor anchor : anchorList) {
                    if (anchor instanceof ChopboxAnchor) {
                        targetAnchor = anchor;
                        break;
                    }
                }
            }
        }
    } else {
        sourceAnchor = addConContext.getSourceAnchor();
        targetAnchor = addConContext.getTargetAnchor();
    }
    if (sourceAnchor == null || targetAnchor == null) {
        return null;
    }
    boolean inSubProcess = false;
    Object parentObject = null;
    ContainerShape parentShape = null;
    if (sourceAnchor.eContainer() instanceof ContainerShape) {
        parentShape = (ContainerShape) sourceAnchor.eContainer().eContainer();
        parentObject = getBusinessObjectForPictogramElement(parentShape.getGraphicsAlgorithm().getPictogramElement());
        if (parentObject != null && parentObject instanceof SubProcess == false) {
            parentShape = (ContainerShape) targetAnchor.eContainer().eContainer();
            parentObject = getBusinessObjectForPictogramElement(parentShape.getGraphicsAlgorithm().getPictogramElement());
        }
    }
    if (parentObject != null && parentObject instanceof SubProcess) {
        inSubProcess = true;
    }
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    // CONNECTION WITH POLYLINE
    FreeFormConnection connection = peCreateService.createFreeFormConnection(getDiagram());
    connection.setStart(sourceAnchor);
    connection.setEnd(targetAnchor);
    sourceAnchor.getOutgoingConnections().add(connection);
    targetAnchor.getIncomingConnections().add(connection);
    GraphicsAlgorithm sourceGraphics = getPictogramElement(addedSecurityFlow.getSourceRefNode()).getGraphicsAlgorithm();
    GraphicsAlgorithm targetGraphics = getPictogramElement(addedSecurityFlow.getTargetRefNode()).getGraphicsAlgorithm();
    List<GraphicInfo> bendpointList = null;
    if (addConContext.getProperty("org.activiti.designer.bendpoints") != null) {
        bendpointList = (List<GraphicInfo>) addConContext.getProperty("org.activiti.designer.bendpoints");
    }
    if (bendpointList != null && bendpointList.size() >= 0) {
        for (GraphicInfo graphicInfo : bendpointList) {
            Point bendPoint = StylesFactory.eINSTANCE.createPoint();
            if (inSubProcess == true) {
                bendPoint.setX(parentShape.getGraphicsAlgorithm().getX() + graphicInfo.x);
                bendPoint.setY(parentShape.getGraphicsAlgorithm().getY() + graphicInfo.y);
            } else {
                bendPoint.setX(graphicInfo.x);
                bendPoint.setY(graphicInfo.y);
            }
            connection.getBendpoints().add(bendPoint);
        }
    } else {
    /*if (addedSequenceFlow.getSourceRef() instanceof Gateway && addedSequenceFlow.getTargetRef() instanceof Gateway == false) {
            	if (((sourceGraphics.getY() + 10) < targetGraphics.getY()
            			|| (sourceGraphics.getY() - 10) > targetGraphics.getY())  &&
            			(sourceGraphics.getX() + (sourceGraphics.getWidth() / 2)) < targetGraphics.getX()) {

            		boolean subProcessWithBendPoint = false;
            		if(addedSequenceFlow.getTargetRef() instanceof SubProcess) {
            			int middleSub = targetGraphics.getY() + (targetGraphics.getHeight() / 2);
            			if((sourceGraphics.getY() + 20) < middleSub || (sourceGraphics.getY() - 20) > middleSub) {
            				subProcessWithBendPoint = true;
            			}
            		}

            		if(addedSequenceFlow.getTargetRef() instanceof SubProcess == false || subProcessWithBendPoint == true) {
            			Point bendPoint = StylesFactory.eINSTANCE.createPoint();
            			if(inSubProcess == true) {
            			bendPoint.setX(parentShape.getGraphicsAlgorithm().getX() + sourceGraphics.getX() + 20);
            			bendPoint.setY(parentShape.getGraphicsAlgorithm().getY() + targetGraphics.getY() + (targetGraphics.getHeight() / 2));

            			} else {
            			  bendPoint.setX(sourceGraphics.getX() + 20);
                  bendPoint.setY(targetGraphics.getY() + (targetGraphics.getHeight() / 2));
            			}
            			connection.getBendpoints().add(bendPoint);
            		}
            	}
            } else if (addedSequenceFlow.getTargetRef() instanceof Gateway) {
            	if (((sourceGraphics.getY() + 10) < targetGraphics.getY()
            			|| (sourceGraphics.getY() - 10) > targetGraphics.getY()) &&
            			(sourceGraphics.getX() + sourceGraphics.getWidth()) < targetGraphics.getX()) {

            		boolean subProcessWithBendPoint = false;
            		if(addedSequenceFlow.getSourceRef() instanceof SubProcess) {
            			int middleSub = sourceGraphics.getY() + (sourceGraphics.getHeight() / 2);
            			if((middleSub + 20) < targetGraphics.getY() || (middleSub - 20) > targetGraphics.getY()) {
            				subProcessWithBendPoint = true;
            			}
            		}

            		if(addedSequenceFlow.getSourceRef() instanceof SubProcess == false || subProcessWithBendPoint == true) {
            			Point bendPoint = StylesFactory.eINSTANCE.createPoint();
            			if(inSubProcess == true) {
            			bendPoint.setX(parentShape.getGraphicsAlgorithm().getX() + targetGraphics.getX() + 20);
            			bendPoint.setY(parentShape.getGraphicsAlgorithm().getY() + sourceGraphics.getY() + (sourceGraphics.getHeight() / 2));
            			} else {
            			  bendPoint.setX(targetGraphics.getX() + 20);
                  bendPoint.setY(sourceGraphics.getY() + (sourceGraphics.getHeight() / 2));
            			}
            			connection.getBendpoints().add(bendPoint);
            		}
            	}
            } else if (addedSequenceFlow.getTargetRef() instanceof EndEvent) {
            	int middleSource = sourceGraphics.getY() + (sourceGraphics.getHeight() / 2);
            	int middleTarget = targetGraphics.getY() + (targetGraphics.getHeight() / 2);
            	if (((middleSource + 10) < middleTarget &&
            			(sourceGraphics.getX() + sourceGraphics.getWidth()) < targetGraphics.getX()) ||

            			((middleSource - 10) > middleTarget &&
            			(sourceGraphics.getX() + sourceGraphics.getWidth()) < targetGraphics.getX())) {

            		Point bendPoint = StylesFactory.eINSTANCE.createPoint();
            		if(inSubProcess == true) {
            		bendPoint.setX(parentShape.getGraphicsAlgorithm().getX() + targetGraphics.getX() + (targetGraphics.getWidth() / 2));
            		bendPoint.setY(parentShape.getGraphicsAlgorithm().getY() + sourceGraphics.getY() + (sourceGraphics.getHeight() / 2));
            		} else {
            		  bendPoint.setX(targetGraphics.getX() + (targetGraphics.getWidth() / 2));
              bendPoint.setY(sourceGraphics.getY() + (sourceGraphics.getHeight() / 2));
            		}
            		connection.getBendpoints().add(bendPoint);
            	}
            }*/
    }
    IGaService gaService = Graphiti.getGaService();
    Polyline polyline = gaService.createPolyline(connection);
    polyline.setLineStyle(LineStyle.SOLID);
    polyline.setForeground(Graphiti.getGaService().manageColor(getDiagram(), IColorConstant.LIGHT_BLUE));
    // create link and wire it
    link(connection, addedSecurityFlow);
    // add dynamic text decorator for the reference name
    ConnectionDecorator textDecorator = peCreateService.createConnectionDecorator(connection, true, 0.5, true);
    Text text = gaService.createDefaultText(getDiagram(), textDecorator);
    text.setStyle(StyleUtil.getStyleForTask((getDiagram())));
    gaService.setLocation(text, 10, 0);
    // set reference name in the text decorator
    SecurityFlow securityFlow = (SecurityFlow) context.getNewObject();
    text.setValue(securityFlow.getName());
    // add static graphical decorators (composition and navigable)
    ConnectionDecorator cd = peCreateService.createConnectionDecorator(connection, false, 1.0, true);
    createArrow(cd);
    return connection;
}
Example 6
Project: CertWare-master  File: ObjectAddFeature.java View source code
public PictogramElement add(IAddContext context) {
    final net.certware.sacm.SACM.Evidence.Object addedObject = (Object) context.getNewObject();
    final ContainerShape parent = context.getTargetContainer();
    // container shape with circle
    final IPeCreateService peCreateService = Graphiti.getPeCreateService();
    final ContainerShape containerShape = peCreateService.createContainerShape(parent, true);
    // use existing size or default
    final int width = context.getWidth() <= 35 ? 35 : context.getWidth();
    final int height = context.getHeight() <= 50 ? 50 : context.getHeight();
    final IGaService gaService = Graphiti.getGaService();
    @SuppressWarnings("unused") Ellipse circle;
    {
        final Ellipse objectCircle = gaService.createEllipse(containerShape);
        //invisibleCircle.setFilled(false);
        //invisibleCircle.setLineVisible(false);
        gaService.setLocationAndSize(objectCircle, context.getX(), context.getY(), width, height);
        objectCircle.setLineWidth(2);
        objectCircle.setLineVisible(true);
        objectCircle.setFilled(true);
        objectCircle.setLineStyle(LineStyle.DASHDOT);
        objectCircle.setForeground(manageColor(IColorConstant.BLACK));
        objectCircle.setBackground(manageColor(IColorConstant.DARK_ORANGE));
        // create and set visible circle inside invisible circle
        //circle = gaService.createEllipse(objectCircle);
        //circle.setParentGraphicsAlgorithm(objectCircle);
        // TODO circle.setStyle(StyleUtil.getStyleForEvent(getDiagram()));
        //if (addedArgumentation instanceof EndEvent == true) {
        //  circle.setLineWidth(3);
        //}
        //gaService.setLocationAndSize(circle, 0, 0, width, height);
        //gaService.setLocationAndSize(circle, 0, 0, width, height);
        link(containerShape, addedObject);
    }
    peCreateService.createChopboxAnchor(containerShape);
    /*
		if ( !(addedArgumentation instanceof EndEvent)) {
		      // create an additional box relative anchor at middle-right
		      final BoxRelativeAnchor boxAnchor = peCreateService.createBoxRelativeAnchor(containerShape);
		      boxAnchor.setRelativeWidth(1.0);
		      boxAnchor.setRelativeHeight(0.51);
		      boxAnchor.setReferencedGraphicsAlgorithm(circle);
		      final Ellipse ellipse = ActivitiUiUtil.createInvisibleEllipse(boxAnchor, gaService);
		      gaService.setLocationAndSize(ellipse, 0, 0, 0, 0);
		}
		 */
    /*
    if (addedEvent instanceof StartEvent && ((StartEvent) addedEvent).getEventDefinitions().size() > 0) {

      StartEvent startEvent = (StartEvent) addedEvent;
      final Shape shape = peCreateService.createShape(containerShape, false);
      Image image = null;
      if (startEvent.getEventDefinitions().get(0) instanceof TimerEventDefinition) {
        image = gaService.createImage(shape, PluginImage.IMG_BOUNDARY_TIMER.getImageKey());
      } else if (startEvent.getEventDefinitions().get(0) instanceof MessageEventDefinition){
        image = gaService.createImage(shape, PluginImage.IMG_STARTEVENT_MESSAGE.getImageKey());
      } else
        image = gaService.createImage(shape, PluginImage.IMG_BOUNDARY_ERROR.getImageKey());

      image.setWidth(IMAGE_SIZE);
      image.setHeight(IMAGE_SIZE);

      gaService.setLocationAndSize(image, (width - IMAGE_SIZE) / 2, (height - IMAGE_SIZE) / 2, IMAGE_SIZE, IMAGE_SIZE);
    }
		 */
    layoutPictogramElement(containerShape);
    return containerShape;
}
Example 7
Project: BPMN2-Editor-for-Eclipse-master  File: AddParticipantFeature.java View source code
@Override
public PictogramElement add(IAddContext context) {
    Participant p = (Participant) context.getNewObject();
    IGaService gaService = Graphiti.getGaService();
    IPeService peService = Graphiti.getPeService();
    Diagram targetDiagram = (Diagram) context.getTargetContainer();
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    ContainerShape containerShape = peCreateService.createContainerShape(targetDiagram, true);
    int width = context.getWidth() > 0 ? context.getWidth() : 600;
    int height = context.getHeight() > 0 ? context.getHeight() : 100;
    Rectangle rect = gaService.createRectangle(containerShape);
    StyleUtil.applyBGStyle(rect, this);
    gaService.setLocationAndSize(rect, context.getX(), context.getY(), width, height);
    Shape lineShape = peCreateService.createShape(containerShape, false);
    Polyline line = gaService.createPolyline(lineShape, new int[] { 15, 0, 15, height });
    line.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND));
    Shape textShape = peCreateService.createShape(containerShape, false);
    Text text = gaService.createText(textShape, p.getName());
    text.setStyle(StyleUtil.getStyleForText(getDiagram()));
    text.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
    text.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
    text.setAngle(-90);
    gaService.setLocationAndSize(text, 0, 0, 15, height);
    peService.setPropertyValue(containerShape, MULTIPLICITY, Boolean.toString(false));
    createDIShape(containerShape, p);
    link(textShape, p);
    peCreateService.createChopboxAnchor(containerShape);
    AnchorUtil.addFixedPointAnchors(containerShape, rect);
    updatePictogramElement(containerShape);
    layoutPictogramElement(containerShape);
    return containerShape;
}
Example 8
Project: Disco-Build-System-master  File: FileGroupPattern.java View source code
/*-------------------------------------------------------------------------------------*/
/**
	 * Add a new pictogram, representing a UIFileGroup, onto a Graphiti Diagram.
	 * 
	 * @param targetDiagram The Diagram to add the pictogram to.
	 * @param addedFileGroup The UIFileGroup to add a pictogram for.
	 * @param x The X location within the Diagram.
	 * @param y The Y location within the Diagram.
	 * @return The ContainerShape representing the FileGroup pictogram.
	 */
private PictogramElement renderPictogram(Diagram targetDiagram, UIFileGroup addedFileGroup, int x, int y) {
    IFileGroupMgr fileGroupMgr = buildStore.getFileGroupMgr();
    int fileGroupId = addedFileGroup.getId();
    int fileGroupType = fileGroupMgr.getGroupType(fileGroupId);
    /*
		 * How many boxes will be shown? This helps us distinguish between file groups
		 * containing a single file, versus multiple files. With multiple files, we
		 * draw a second page that appears behind the front page.
		 */
    int groupSize = fileGroupMgr.getGroupSize(addedFileGroup.getId());
    if (groupSize <= 0) {
        return null;
    /* an empty file group (or an errored file group) shouldn't be shown */
    }
    /* 
		 * We can show a limited number of file names in the pictogram. If more than our
		 * maximum, display the last name as "...". For merge file groups, we don't show file
		 * names underneath the pictogram.
		 */
    int fileNamesToShow;
    if (fileGroupType == IFileGroupMgr.MERGE_GROUP) {
        fileNamesToShow = 0;
    } else {
        fileNamesToShow = (groupSize <= MAX_LABELS_TO_SHOW) ? groupSize : MAX_LABELS_TO_SHOW;
    }
    /* create a container that holds the pictogram */
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    IGaService gaService = Graphiti.getGaService();
    ContainerShape containerShape = peCreateService.createContainerShape(targetDiagram, true);
    /*
		 * Create an invisible outer rectangle. The smaller polygons and labels will be placed
		 * inside this. The width is always twice that of the polygon, to allow for long file
		 * names to be shown underneath the polygons. The height is carefully selected to allow
		 * for enough labels, as well as for the possible "second page" polygon.
		 */
    Rectangle invisibleRectangle = gaService.createInvisibleRectangle(containerShape);
    gaService.setLocationAndSize(invisibleRectangle, x, y, 2 * FILE_GROUP_WIDTH, FILE_GROUP_HEIGHT + ((groupSize < 2) ? 0 : FILE_GROUP_OVERLAP) + ((fileNamesToShow + 1) * (LABEL_FONT_SIZE + LABEL_FONT_GAP)));
    /*
		 * Create the visible file icon within the outer shape. First, consider whether
		 * a second page (with no corner bend) should be shown in the background.
		 */
    if (groupSize > 1) {
        Polygon box = gaService.createPolygon(invisibleRectangle, coordsPage2);
        box.setForeground(manageColor(LINE_COLOUR));
        box.setBackground(manageColor(FILL_COLOUR));
        box.setLineWidth(2);
    }
    /* now the front page, with the corner bent */
    Polygon box = gaService.createPolygon(invisibleRectangle, coordsPage1);
    box.setForeground(manageColor(LINE_COLOUR));
    box.setBackground(manageColor(FILL_COLOUR));
    box.setLineWidth(2);
    Polygon boxCorner = gaService.createPolygon(invisibleRectangle, coordsCorner);
    boxCorner.setForeground(manageColor(LINE_COLOUR));
    boxCorner.setBackground(manageColor(FILL_CORNER_COLOUR));
    boxCorner.setLineWidth(2);
    /*
		 * For source/generated groups, display the file group's content (or at least part
		 * of it) under the file box. We can only show a limited number of file names. If
		 * there are too many to show, the last label must be "...".
		 */
    if (fileGroupType != IFileGroupMgr.MERGE_GROUP) {
        for (int i = 0; i != fileNamesToShow; i++) {
            String value;
            if ((i == (MAX_LABELS_TO_SHOW - 1)) && (groupSize > MAX_LABELS_TO_SHOW)) {
                value = "...";
            } else {
                /* fetch this particular file's base name */
                int pathId = fileGroupMgr.getPathId(fileGroupId, i);
                if (pathId < 0) {
                    value = "";
                } else {
                    value = fileMgr.getBaseName(pathId);
                }
            }
            /* draw the label underneath the main "page" polygon */
            Text fileNames = gaService.createText(getDiagram(), invisibleRectangle, value, LABEL_FONT, LABEL_FONT_SIZE);
            fileNames.setFilled(false);
            fileNames.setForeground(manageColor(TEXT_FOREGROUND));
            fileNames.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
            gaService.setLocationAndSize(fileNames, 0, FILE_GROUP_HEIGHT + ((1 + i) * (LABEL_FONT_SIZE + LABEL_FONT_GAP)), FILE_GROUP_WIDTH * 2, (LABEL_FONT_SIZE + LABEL_FONT_GAP));
        }
    } else /*
		 * For merge groups, we draw three extra lines inside the file group box as
		 * an indication to the user that it's a merge group.
		 */
    {
        for (int i = 0; i < coordsMergeLines.length; i++) {
            Polyline mergeLine = gaService.createPolyline(invisibleRectangle, coordsMergeLines[i]);
            mergeLine.setForeground(manageColor(LINE_COLOUR));
            mergeLine.setBackground(manageColor(FILL_COLOUR));
            mergeLine.setLineWidth(1);
        }
    }
    /* 
		 * Add anchors that reside to the immediate left/right of the file group box.
		 * There are for drawing connection arrows.
		 * 	UIFileActionConnection.INPUT_TO_ACTION (0) - right anchor
		 *  UIFileActionConnection.OUTPUT_FROM_ACTION (1) - left anchor
		 */
    FixPointAnchor rightAnchor = peCreateService.createFixPointAnchor(containerShape);
    rightAnchor.setLocation(gaService.createPoint(OFF_X + FILE_GROUP_WIDTH + (FILE_GROUP_OVERLAP * 2), FILE_GROUP_HEIGHT / 2));
    gaService.createInvisibleRectangle(rightAnchor);
    FixPointAnchor leftAnchor = peCreateService.createFixPointAnchor(containerShape);
    leftAnchor.setLocation(gaService.createPoint(OFF_X, FILE_GROUP_HEIGHT / 2));
    gaService.createInvisibleRectangle(leftAnchor);
    /* create a link between the shape and the business object, and display it. */
    link(containerShape, addedFileGroup);
    layoutPictogramElement(containerShape);
    return containerShape;
}
Example 9
Project: org.eclipse.etrice-master  File: TrPointSupport.java View source code
@Override
public PictogramElement add(IAddContext context) {
    TrPoint tp = (TrPoint) context.getNewObject();
    ContainerShape parentShape = context.getTargetContainer();
    Object bo = getBusinessObjectForPictogramElement(parentShape);
    boolean inherited = isInherited(tp, bo, parentShape);
    boolean subtp = (bo instanceof State);
    int margin = subtp ? StateSupport.MARGIN : StateGraphSupport.MARGIN;
    int size = subtp ? ITEM_SIZE_SMALL : ITEM_SIZE;
    // CONTAINER SHAPE WITH RECTANGLE
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    ContainerShape containerShape = peCreateService.createContainerShape(parentShape, true);
    Graphiti.getPeService().setPropertyValue(containerShape, Constants.TYPE_KEY, Constants.TRP_TYPE);
    String kind = getItemKind(tp);
    Graphiti.getPeService().setPropertyValue(containerShape, PROP_KIND, kind);
    // the context point is the midpoint relative to the invisible rectangle
    int x = context.getX();
    int y = context.getY();
    int width = parentShape.getGraphicsAlgorithm().getWidth();
    int height = parentShape.getGraphicsAlgorithm().getHeight();
    {
        int dx = (x <= width / 2) ? x : width - x;
        int dy = (y <= height / 2) ? y : height - y;
        if (dx > dy) {
            // keep x, project y
            if (y <= height / 2)
                y = margin;
            else
                y = height - margin;
            if (x < margin)
                x = margin;
            else if (x > width - margin)
                x = width - margin;
        } else {
            // keep y, project x
            if (x <= width / 2)
                x = margin;
            else
                x = width - margin;
            if (y < margin)
                y = margin;
            else if (y > height - margin)
                y = height - margin;
        }
        // finally we subtract the midpoint to get coordinates of the upper left corner
        x -= margin;
        y -= margin;
    }
    Color dark = manageColor(inherited ? INHERITED_COLOR : DARK_COLOR);
    IGaService gaService = Graphiti.getGaService();
    {
        final Rectangle invisibleRectangle = gaService.createInvisibleRectangle(containerShape);
        gaService.setLocationAndSize(invisibleRectangle, x, y, 2 * margin, 2 * margin);
        createFigure(tp, subtp, containerShape, invisibleRectangle, dark, manageColor(BRIGHT_COLOR));
        // create link and wire it
        link(containerShape, tp);
    }
    {
        Shape labelShape = peCreateService.createShape(containerShape, false);
        Text label = gaService.createDefaultText(labelShape, tp.getName());
        label.setForeground(dark);
        label.setBackground(dark);
        label.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
        label.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
        gaService.setLocationAndSize(label, 0, 3 * margin / 2, 2 * margin, margin / 2);
        adjustLabel(label, x, y, width, margin, size);
    }
    if (!subtp)
        createParentTP(tp, containerShape, parentShape);
    // call the layout feature
    layoutPictogramElement(containerShape);
    return containerShape;
}
Example 10
Project: spray-master  File: AddShapeFeature.java View source code
public StringConcatenation mainFile(final Container container, final String className) {
    StringConcatenation _builder = new StringConcatenation();
    String _constainerClass = GeneratorUtil.constainerClass(container);
    String containerType = _constainerClass;
    _builder.newLineIfNotEmpty();
    StringConcatenation _header = this.header(this);
    _builder.append(_header, "");
    _builder.newLineIfNotEmpty();
    _builder.append("package ");
    String _feature_package = GeneratorUtil.feature_package();
    _builder.append(_feature_package, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("import ");
    MetaClass _represents = container.getRepresents();
    String _javaInterfaceName = this.naming.getJavaInterfaceName(_represents);
    _builder.append(_javaInterfaceName, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.append("import org.eclipse.graphiti.features.IFeatureProvider;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.features.context.IAddContext;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.features.context.IContext;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.algorithms.Text;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.algorithms.Polyline;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.algorithms.styles.Orientation;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.pictograms.ContainerShape;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.pictograms.Diagram;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.pictograms.PictogramElement;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.mm.pictograms.Shape;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.services.Graphiti;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.services.IGaService;");
    _builder.newLine();
    _builder.append("import org.eclipse.graphiti.services.IPeCreateService;");
    _builder.newLine();
    _builder.append("import ");
    String _util_package = GeneratorUtil.util_package();
    _builder.append(_util_package, "");
    _builder.append(".ISprayContainer;");
    _builder.newLineIfNotEmpty();
    _builder.append("import ");
    String _util_package_1 = GeneratorUtil.util_package();
    _builder.append(_util_package_1, "");
    _builder.append(".");
    _builder.append(containerType, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.append("import ");
    String _util_package_2 = GeneratorUtil.util_package();
    _builder.append(_util_package_2, "");
    _builder.append(".SprayContainerService;");
    _builder.newLineIfNotEmpty();
    _builder.append("// MARKER_IMPORT");
    _builder.newLine();
    _builder.newLine();
    _builder.append("public class ");
    _builder.append(className, "");
    _builder.append(" extends AbstractAddShapeFeature {");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("protected final static String typeOrAliasName = \"");
    MetaClass _represents_1 = container.getRepresents();
    String _visibleName = GeneratorUtil.visibleName(_represents_1);
    _builder.append(_visibleName, "    ");
    _builder.append("\";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("protected Diagram targetDiagram = null;");
    _builder.newLine();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("protected ");
    _builder.append(containerType, "    ");
    _builder.append(" container = null;");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("protected IGaService gaService = null;");
    _builder.newLine();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public ");
    _builder.append(className, "    ");
    _builder.append("(IFeatureProvider fp) {");
    _builder.newLineIfNotEmpty();
    _builder.append("        ");
    _builder.append("super(fp);");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("container = new ");
    _builder.append(containerType, "        ");
    _builder.append("();");
    _builder.newLineIfNotEmpty();
    _builder.append("        ");
    _builder.append("gaService = Graphiti.getGaService();");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public boolean canAdd(IAddContext context) {");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("final Object newObject = context.getNewObject();");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("if (newObject instanceof ");
    MetaClass _represents_2 = container.getRepresents();
    String _name = this.e1.getName(_represents_2);
    _builder.append(_name, "        ");
    _builder.append(") {");
    _builder.newLineIfNotEmpty();
    _builder.append("            ");
    _builder.append("// check if user wants to add to a diagram");
    _builder.newLine();
    _builder.append("            ");
    _builder.append("if (context.getTargetContainer() instanceof Diagram) {");
    _builder.newLine();
    _builder.append("                ");
    _builder.append("return true;");
    _builder.newLine();
    _builder.append("            ");
    _builder.append("}");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("}");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("return false;");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public PictogramElement add(IAddContext context) {");
    _builder.newLine();
    _builder.append("        ");
    MetaClass _represents_3 = container.getRepresents();
    String _name_1 = this.e1.getName(_represents_3);
    _builder.append(_name_1, "        ");
    _builder.append(" addedModelElement = (");
    MetaClass _represents_4 = container.getRepresents();
    String _name_2 = this.e1.getName(_represents_4);
    _builder.append(_name_2, "        ");
    _builder.append(") context.getNewObject();");
    _builder.newLineIfNotEmpty();
    _builder.append("        ");
    _builder.append("targetDiagram = Graphiti.getPeService().getDiagramForShape(context.getTargetContainer());");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("IPeCreateService peCreateService = Graphiti.getPeCreateService();");
    _builder.newLine();
    _builder.newLine();
    _builder.append("        ");
    _builder.append("ContainerShape containerShape = container.createContainer(context, addedModelElement);");
    _builder.newLine();
    {
        boolean _hasFillColor = this.e2.hasFillColor(container);
        if (_hasFillColor) {
            _builder.append("    ");
            _builder.append("GraphicsAlgorithm containerGa = containerShape.getGraphicsAlgorithm();");
            _builder.newLine();
            _builder.append("    ");
            _builder.append("containerGa.setBackground(manageColor(");
            String _fillColor = this.e2.fillColor(container);
            _builder.append(_fillColor, "    ");
            _builder.append("));");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("        ");
    _builder.append("ContainerShape textContainer = SprayContainerService.findTextShape(containerShape);");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("link(containerShape, addedModelElement);");
    _builder.newLine();
    _builder.newLine();
    {
        SprayElement[] _parts = container.getParts();
        for (final SprayElement part : _parts) {
            {
                if ((part instanceof Line)) {
                    Line line = ((Line) part);
                    _builder.newLineIfNotEmpty();
                    _builder.append("// Part is Line");
                    _builder.newLine();
                    _builder.append("{");
                    _builder.newLine();
                    _builder.append("    ");
                    _builder.append("// create shape for line");
                    _builder.newLine();
                    _builder.append("    ");
                    _builder.append("Shape shape = peCreateService.createShape(textContainer, false);");
                    _builder.newLine();
                    _builder.append("    ");
                    _builder.append("// create and set graphics algorithm");
                    _builder.newLine();
                    _builder.append("    ");
                    _builder.append("Polyline polyline = gaService.createPolyline(shape, new int[] { 0, 0, 0, 0 });");
                    _builder.newLine();
                    _builder.append("    ");
                    _builder.append("polyline.setForeground(manageColor(");
                    String _lineColor = this.e2.lineColor(line);
                    _builder.append(_lineColor, "    ");
                    _builder.append(" ));");
                    _builder.newLineIfNotEmpty();
                    _builder.append("    ");
                    _builder.append("polyline.setLineWidth(");
                    Layout _layout = line.getLayout();
                    int _lineWidth = _layout.getLineWidth();
                    _builder.append(_lineWidth, "    ");
                    _builder.append(");");
                    _builder.newLineIfNotEmpty();
                    {
                        Layout _layout_1 = line.getLayout();
                        int _lineWidth_1 = _layout_1.getLineWidth();
                        boolean _operator_equals = ObjectExtensions.operator_equals(((Integer) _lineWidth_1), ((Integer) 0));
                        if (_operator_equals) {
                            _builder.append("polyline.setLineVisible(false);");
                            _builder.newLine();
                        }
                    }
                    _builder.append("    ");
                    _builder.append("gaService.setLocation(polyline, 0, 0);");
                    _builder.newLine();
                    _builder.append("    ");
                    _builder.append("Graphiti.getPeService().setPropertyValue(shape, ISprayContainer.CONCEPT_SHAPE_KEY, ISprayContainer.LINE);");
                    _builder.newLine();
                    _builder.append("}");
                    _builder.newLine();
                } else {
                    if ((part instanceof Text)) {
                        Text text = ((Text) part);
                        _builder.newLineIfNotEmpty();
                        _builder.append("// Part is Text");
                        _builder.newLine();
                        _builder.append("{");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("String type = \"");
                        QualifiedName _fullyQualifiedName = this.e3.getFullyQualifiedName(text);
                        _builder.append(_fullyQualifiedName, "    ");
                        _builder.append("\";");
                        _builder.newLineIfNotEmpty();
                        _builder.append("    ");
                        _builder.append("// create shape for text and set text graphics algorithm");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("Shape shape = peCreateService.createShape(textContainer, false);");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("Text text = gaService.createDefaultText(getDiagram(), shape);");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("text.setFont(gaService.manageFont(getDiagram(), text.getFont().getName(), 12));");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("text.setForeground(manageColor(");
                        String _lineColor_1 = this.e2.lineColor(text);
                        _builder.append(_lineColor_1, "    ");
                        _builder.append("));");
                        _builder.newLineIfNotEmpty();
                        _builder.append("    ");
                        _builder.append("text.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("text.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);");
                        _builder.newLine();
                        {
                            Layout _layout_2 = text.getLayout();
                            boolean _isBold = _layout_2.isBold();
                            if (_isBold) {
                                _builder.append("text.getFont().setBold(true);");
                                _builder.newLine();
                            }
                        }
                        {
                            Layout _layout_3 = text.getLayout();
                            boolean _isItalic = _layout_3.isItalic();
                            if (_isItalic) {
                                _builder.append("text.getFont().setItalic(true);");
                                _builder.newLine();
                            }
                        }
                        _builder.append("    ");
                        _builder.append("gaService.setLocationAndSize(text, 0, 0, 0, 0);");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("Graphiti.getPeService().setPropertyValue(shape, \"MODEL_TYPE\", type);");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("Graphiti.getPeService().setPropertyValue(shape, ISprayContainer.CONCEPT_SHAPE_KEY, ISprayContainer.TEXT);");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("// create link and wire it");
                        _builder.newLine();
                        _builder.append("    ");
                        _builder.append("link(shape, addedModelElement);");
                        _builder.newLine();
                        _builder.append("}");
                        _builder.newLine();
                    } else {
                        if ((part instanceof MetaReference)) {
                            final MetaReference metaRef = ((MetaReference) part);
                            _builder.newLineIfNotEmpty();
                            EReference _reference = metaRef.getReference();
                            final EReference eReference = _reference;
                            _builder.append(" ");
                            _builder.newLineIfNotEmpty();
                            _builder.append("// Part is reference list");
                            _builder.newLine();
                            _builder.append("{");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("// Create a dummy invisible line to have an ancjhor point for adding new elements to the list");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("Shape dummy = peCreateService.createShape(textContainer, false);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("Graphiti.getPeService().setPropertyValue(dummy, \"MODEL_TYPE\", \"");
                            EClass _eReferenceType = eReference.getEReferenceType();
                            String _name_3 = _eReferenceType.getName();
                            _builder.append(_name_3, "    ");
                            _builder.append("\");");
                            _builder.newLineIfNotEmpty();
                            _builder.append("    ");
                            _builder.append("Polyline p = gaService.createPolyline(dummy, new int[] { 0, 0, 0, 0 });");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("p.setForeground(manageColor(");
                            String _shortName = this.shortName(org.eclipse.graphiti.util.IColorConstant.class);
                            _builder.append(_shortName, "    ");
                            _builder.append(".BLACK));");
                            _builder.newLineIfNotEmpty();
                            _builder.append("    ");
                            _builder.append("p.setLineWidth(0);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("p.setLineVisible(false);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("gaService.setLocation(p, 0, 0);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("Graphiti.getPeService().setPropertyValue(dummy, ISprayContainer.CONCEPT_SHAPE_KEY, ISprayContainer.LINE);");
                            _builder.newLine();
                            _builder.append("}");
                            _builder.newLine();
                            _builder.append("for (");
                            EClass _eReferenceType_1 = eReference.getEReferenceType();
                            String _javaInterfaceName_1 = this.naming.getJavaInterfaceName(_eReferenceType_1);
                            String _shortName_1 = this.shortName(_javaInterfaceName_1);
                            _builder.append(_shortName_1, "");
                            _builder.append(" p : addedModelElement.get");
                            String _name_4 = eReference.getName();
                            String _firstUpper = StringExtensions.toFirstUpper(_name_4);
                            _builder.append(_firstUpper, "");
                            _builder.append("()) {");
                            _builder.newLineIfNotEmpty();
                            _builder.append("    ");
                            _builder.append("Shape shape = peCreateService.createContainerShape(textContainer, true);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("Graphiti.getPeService().setPropertyValue(shape, \"STATIC\", \"true\");");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("Graphiti.getPeService().setPropertyValue(shape, \"MODEL_TYPE\", \"");
                            EClass _eReferenceType_2 = eReference.getEReferenceType();
                            String _name_5 = _eReferenceType_2.getName();
                            _builder.append(_name_5, "    ");
                            _builder.append("\");");
                            _builder.newLineIfNotEmpty();
                            _builder.append("    ");
                            _builder.append("Graphiti.getPeService().setPropertyValue(shape, ISprayContainer.CONCEPT_SHAPE_KEY, ISprayContainer.TEXT);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("// create and set text graphics algorithm");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("Text text = gaService.createDefaultText(getDiagram(), shape, p.get");
                            String _labelPropertyName = this.e1.getLabelPropertyName(metaRef);
                            String _firstUpper_1 = StringExtensions.toFirstUpper(_labelPropertyName);
                            _builder.append(_firstUpper_1, "    ");
                            _builder.append("());");
                            _builder.newLineIfNotEmpty();
                            _builder.append("    ");
                            _builder.append("// TODO should have a text color here, refer to representation of reference type");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("text.setForeground(manageColor(");
                            String _textColor = this.e2.textColor(container);
                            _builder.append(_textColor, "    ");
                            _builder.append(")); ");
                            _builder.newLineIfNotEmpty();
                            _builder.append("    ");
                            _builder.append("text.setHorizontalAlignment(Orientation.ALIGNMENT_LEFT);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("text.setVerticalAlignment(Orientation.ALIGNMENT_TOP);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("gaService.setLocationAndSize(text, 0, 0, 0, 0);");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("// create link and wire it");
                            _builder.newLine();
                            _builder.append("    ");
                            _builder.append("link(shape, p);");
                            _builder.newLine();
                            _builder.append("}");
                            _builder.newLine();
                        } else {
                            _builder.append("// TODO");
                            _builder.newLine();
                            _builder.append("System.out.println(\"Spray: unhandled Container child [");
                            Class<? extends Object> _class = part.getClass();
                            String _name_6 = _class.getName();
                            _builder.append(_name_6, "");
                            _builder.append("]\");");
                            _builder.newLineIfNotEmpty();
                        }
                    }
                }
            }
        }
    }
    _builder.append("        ");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("// add a chopbox anchor to the shape");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("peCreateService.createChopboxAnchor(containerShape);");
    _builder.newLine();
    _builder.newLine();
    _builder.append("        ");
    _builder.append("// call the update and layout features");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("updatePictogramElement(containerShape);");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("layoutPictogramElement(containerShape);");
    _builder.newLine();
    _builder.append("        ");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("return containerShape;");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("}");
    _builder.newLine();
    _builder.append("    ");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("@Override");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public boolean hasDoneChanges() {");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("return false;");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("    ");
    _builder.append("@Override");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public boolean canUndo(IContext context) {");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("return false;");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("}");
    _builder.newLine();
    _builder.append("    ");
    _builder.newLine();
    _builder.append("}");
    _builder.newLine();
    return _builder;
}
Example 11
Project: orcc-master  File: InstancePattern.java View source code
@Override
public PictogramElement add(IAddContext context) {
    final Diagram targetDiagram = (Diagram) context.getTargetContainer();
    final IPeCreateService peCreateService = Graphiti.getPeCreateService();
    final IGaService gaService = Graphiti.getGaService();
    final Instance addedDomainObject = (Instance) context.getNewObject();
    // Add the new Instance to the current Network
    final Network network = (Network) getBusinessObjectForPictogramElement(getDiagram());
    network.add(addedDomainObject);
    // Create the container shape
    final ContainerShape topLevelShape = peCreateService.createContainerShape(targetDiagram, true);
    PropsUtil.setInstance(topLevelShape);
    // Create the container graphic
    final RoundedRectangle roundedRectangle = gaService.createPlainRoundedRectangle(topLevelShape, 5, 5);
    roundedRectangle.setStyle(StyleUtil.basicInstanceShape(getDiagram()));
    gaService.setLocationAndSize(roundedRectangle, context.getX(), context.getY(), TOTAL_MIN_WIDTH, TOTAL_MIN_HEIGHT);
    // The text label for Instance name
    final Text text = gaService.createPlainText(roundedRectangle);
    PropsUtil.setIdentifier(text, LABEL_ID);
    // Set properties on instance label
    text.setStyle(StyleUtil.instanceText(getDiagram()));
    gaService.setLocationAndSize(text, 0, 0, TOTAL_MIN_WIDTH, LABEL_HEIGHT);
    if (addedDomainObject.getName() != null) {
        text.setValue(addedDomainObject.getName());
    }
    // The line separator
    final int[] xy = { 0, LABEL_HEIGHT, TOTAL_MIN_WIDTH, LABEL_HEIGHT };
    final Polyline line = gaService.createPlainPolyline(roundedRectangle, xy);
    PropsUtil.setIdentifier(line, SEP_ID);
    line.setLineWidth(SEPARATOR);
    // Configure direct editing
    // 1- Get the IDirectEditingInfo object
    final IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo();
    // 2- These 2 members will be used to retrieve the pattern to call for
    // direct editing
    directEditingInfo.setPictogramElement(topLevelShape);
    directEditingInfo.setGraphicsAlgorithm(text);
    // 3- This PictogramElement is used to locate input on the diagram
    directEditingInfo.setMainPictogramElement(topLevelShape);
    // We link graphical representation and domain model object
    link(topLevelShape, addedDomainObject);
    if (addedDomainObject.getEntity() != null) {
        updateRefinement(topLevelShape, addedDomainObject.getEntity());
    }
    return topLevelShape;
}
Example 12
Project: yang-ide-master  File: YangModelUIUtil.java View source code
public static Connection drawPictogramConnectionElement(IAddConnectionContext context, IFeatureProvider fp, String title) {
    EObject addedEReference = (EObject) context.getNewObject();
    IPeCreateService peCreateService = Graphiti.getPeCreateService();
    Connection connection = peCreateService.createFreeFormConnection(fp.getDiagramTypeProvider().getDiagram());
    connection.setStart(context.getSourceAnchor());
    connection.setEnd(context.getTargetAnchor());
    IGaService gaService = Graphiti.getGaService();
    Polyline polyline = gaService.createPlainPolyline(connection);
    polyline.setStyle(StyleUtil.getStyleForDomainObject(fp.getDiagramTypeProvider().getDiagram()));
    // add dynamic text decorator for the reference name
    ConnectionDecorator textDecorator = peCreateService.createConnectionDecorator(connection, false, 0.5, true);
    Text text = gaService.createPlainText(textDecorator);
    text.setStyle(StyleUtil.getStyleForTextDecorator(fp.getDiagramTypeProvider().getDiagram()));
    gaService.setLocation(text, 10, 0);
    // set reference name in the text decorator
    text.setValue(title);
    // add static graphical decorators (composition and inheritance)
    if (YangModelUtil.checkType(YangModelUtil.MODEL_PACKAGE.getIdentity(), addedEReference)) {
        createInheritanceConnectionArrow(connection, fp);
    } else {
        createConnectionArrow(connection, fp);
    }
    return connection;
}