private void layoutElements() { // System.out.println(); for (String id : this.orderedIds) { // System.out.println(id); BPMNElement currentElement = (BPMNElement) this.diagram.getElement(id); List<LayoutingElement> precedingElements = currentElement.getPrecedingElements(); GridContext context = getContextByElement(currentElement); Cell<BPMNElement> cellOfElement = null; cellOfElement = placeElement(currentElement, precedingElements, context); boolean comesFromOtherGrid = precedingElements.size() == 1 && precedingElements.get(0).getParent() != currentElement.getParent(); if (!currentElement.isJoin() && !comesFromOtherGrid && cellOfElement.getPrevCell() != null) { // there is an edge hitting us left, so lets forbid // interleaving to use the left cell, if it's empty cellOfElement.getPrevCell().setPackable(false); } if (currentElement.isSplit()) { prelayoutSuccessors(currentElement, context, cellOfElement); } if (BPMNType.isAActivity(currentElement.getType())) { // search for attached events for (LayoutingElement e : currentElement.getOutgoingLinks()) { if (BPMNType.isACatchingIntermediateEvent(e.getType())) { context.grid.setCellOfItem((BPMNElement) e, cellOfElement); } } } } }