Search in sources :

Example 11 with BPMNPlane

use of org.eclipse.bpmn2.di.BPMNPlane in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method updateShapeBoundsInSubprocess.

public void updateShapeBoundsInSubprocess(BPMNPlane plane, BaseElement ele, SubProcess sub, float parentX, float parentY) {
    boolean foundInSubprocess = false;
    for (FlowElement subEle : sub.getFlowElements()) {
        if (subEle.getId().equals(ele.getId())) {
            foundInSubprocess = true;
            Bounds subEleBounds = getBoundsForElement(subEle, plane);
            if (subEleBounds != null) {
                subEleBounds.setX(subEleBounds.getX() + parentX);
                subEleBounds.setY(subEleBounds.getY() + parentY);
            }
        }
    }
    if (!foundInSubprocess) {
        for (FlowElement subEle : sub.getFlowElements()) {
            if (subEle instanceof SubProcess) {
                Bounds subEleBounds = getBoundsForElement(subEle, plane);
                updateShapeBoundsInSubprocess(plane, ele, (SubProcess) subEle, subEleBounds.getX(), subEleBounds.getY());
            }
        }
    }
}
Also used : AdHocSubProcess(org.eclipse.bpmn2.AdHocSubProcess) SubProcess(org.eclipse.bpmn2.SubProcess) FlowElement(org.eclipse.bpmn2.FlowElement) Bounds(org.eclipse.dd.dc.Bounds)

Example 12 with BPMNPlane

use of org.eclipse.bpmn2.di.BPMNPlane in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method createSubProcessDiagram.

private void createSubProcessDiagram(BPMNPlane plane, FlowElement flowElement, BpmnDiFactory factory) {
    SubProcess sp = (SubProcess) flowElement;
    for (FlowElement subProcessFlowElement : sp.getFlowElements()) {
        if (subProcessFlowElement instanceof SubProcess) {
            createBpmnShapeForElement(factory, plane, subProcessFlowElement);
            createSubProcessDiagram(plane, subProcessFlowElement, factory);
        } else if (subProcessFlowElement instanceof FlowNode) {
            createBpmnShapeForElement(factory, plane, subProcessFlowElement);
            if (subProcessFlowElement instanceof BoundaryEvent) {
                createDockersForBoundaryEvent((BoundaryEvent) subProcessFlowElement);
            }
        } else if (subProcessFlowElement instanceof SequenceFlow) {
            createBpmnEdgeForSequenceFlow(factory, plane, (SequenceFlow) subProcessFlowElement);
        }
    }
    if (sp.getArtifacts() != null) {
        List<Association> incompleteAssociations = new ArrayList<Association>();
        for (Artifact artifact : sp.getArtifacts()) {
            // if (artifact instanceof TextAnnotation || artifact instanceof Group) {
            if (artifact instanceof Group) {
                createBpmnShapeForElement(factory, plane, artifact);
            }
            if (artifact instanceof Association) {
                Association association = (Association) artifact;
                if (association.getSourceRef() != null && association.getTargetRef() != null) {
                    createBpmnEdgeForAssociation(factory, plane, association);
                } else {
                    incompleteAssociations.add(association);
                }
            }
        }
        if (!incompleteAssociations.isEmpty()) {
            for (Association incompleteAssociation : incompleteAssociations) {
                sp.getArtifacts().remove(incompleteAssociation);
            }
        }
    }
}
Also used : AdHocSubProcess(org.eclipse.bpmn2.AdHocSubProcess) SubProcess(org.eclipse.bpmn2.SubProcess) Group(org.eclipse.bpmn2.Group) Association(org.eclipse.bpmn2.Association) DataOutputAssociation(org.eclipse.bpmn2.DataOutputAssociation) DataInputAssociation(org.eclipse.bpmn2.DataInputAssociation) BoundaryEvent(org.eclipse.bpmn2.BoundaryEvent) FlowElement(org.eclipse.bpmn2.FlowElement) SequenceFlow(org.eclipse.bpmn2.SequenceFlow) ArrayList(java.util.ArrayList) Artifact(org.eclipse.bpmn2.Artifact) FlowNode(org.eclipse.bpmn2.FlowNode)

Example 13 with BPMNPlane

use of org.eclipse.bpmn2.di.BPMNPlane in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method updateShapeBoundsInSubprocessInLanes.

public void updateShapeBoundsInSubprocessInLanes(BPMNPlane plane, BaseElement ele, SubProcess sub, float parentX, float parentY) {
    for (FlowElement subEle : sub.getFlowElements()) {
        Bounds subEleBounds = getBoundsForElement(subEle, plane);
        if (subEleBounds != null) {
            subEleBounds.setX(subEleBounds.getX() + parentX);
            subEleBounds.setY(subEleBounds.getY() + parentY);
        }
        if (subEle instanceof SubProcess) {
            updateShapeBoundsInSubprocessInLanes(plane, ele, (SubProcess) subEle, subEleBounds.getX(), subEleBounds.getY());
        }
    }
}
Also used : AdHocSubProcess(org.eclipse.bpmn2.AdHocSubProcess) SubProcess(org.eclipse.bpmn2.SubProcess) FlowElement(org.eclipse.bpmn2.FlowElement) Bounds(org.eclipse.dd.dc.Bounds)

Example 14 with BPMNPlane

use of org.eclipse.bpmn2.di.BPMNPlane in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method revisitEdgeBoundsInLanes.

public void revisitEdgeBoundsInLanes(Definitions def) {
    BPMNPlane plane = def.getDiagrams().get(0).getPlane();
    List<DiagramElement> diagramElements = plane.getPlaneElement();
    for (DiagramElement dia : diagramElements) {
        if (dia instanceof BPMNEdge) {
            BPMNEdge edge = (BPMNEdge) dia;
            updateEdgeBoundsInLanes(def, plane, edge, edge.getBpmnElement());
        }
    }
}
Also used : DiagramElement(org.eclipse.dd.di.DiagramElement) BPMNPlane(org.eclipse.bpmn2.di.BPMNPlane) BPMNEdge(org.eclipse.bpmn2.di.BPMNEdge)

Example 15 with BPMNPlane

use of org.eclipse.bpmn2.di.BPMNPlane in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method createBpmnShapeForElement.

private void createBpmnShapeForElement(BpmnDiFactory factory, BPMNPlane plane, BaseElement element) {
    Bounds bounds = _bounds.get(element.getId());
    if (bounds != null) {
        BPMNShape shape = factory.createBPMNShape();
        shape.setBpmnElement(element);
        shape.setBounds(bounds);
        plane.getPlaneElement().add(shape);
    }
}
Also used : Bounds(org.eclipse.dd.dc.Bounds) BPMNShape(org.eclipse.bpmn2.di.BPMNShape)

Aggregations

Bounds (org.eclipse.dd.dc.Bounds)16 AdHocSubProcess (org.eclipse.bpmn2.AdHocSubProcess)15 SubProcess (org.eclipse.bpmn2.SubProcess)15 ArrayList (java.util.ArrayList)12 BPMNShape (org.eclipse.bpmn2.di.BPMNShape)12 Process (org.eclipse.bpmn2.Process)11 DataObject (org.eclipse.bpmn2.DataObject)10 FlowElement (org.eclipse.bpmn2.FlowElement)9 BPMNEdge (org.eclipse.bpmn2.di.BPMNEdge)9 LinkedHashMap (java.util.LinkedHashMap)8 DataInputAssociation (org.eclipse.bpmn2.DataInputAssociation)8 DataOutputAssociation (org.eclipse.bpmn2.DataOutputAssociation)8 SequenceFlow (org.eclipse.bpmn2.SequenceFlow)8 Point (org.eclipse.dd.dc.Point)8 DiagramElement (org.eclipse.dd.di.DiagramElement)8 Artifact (org.eclipse.bpmn2.Artifact)7 BPMNPlane (org.eclipse.bpmn2.di.BPMNPlane)7 Entry (java.util.Map.Entry)6 FeatureMap (org.eclipse.emf.ecore.util.FeatureMap)6 Association (org.eclipse.bpmn2.Association)5