コード例 #1
0
  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);
          }
        }
      }
    }
  }