protected void changeShapeSize( GraphicsType annType, NodeType node, BigDecimal newHeight, BigDecimal newWidth, Map<String, AnnotationData> annotations) { super.changeShapeSize(annType, node, newHeight, newWidth, annotations); BigDecimal oldH = annType.getSize().getHeight(); BigDecimal oldW = annType.getSize().getWidth(); BigDecimal oldX = annType.getPosition().get(0).getX(); BigDecimal oldY = annType.getPosition().get(0).getY(); BigDecimal newX = oldW.subtract(newWidth).divide(divisor).add(oldX); BigDecimal newY = oldH.subtract(newHeight).divide(divisor).add(oldY); SizeType size = new SizeType(); size.setHeight(newHeight); size.setWidth(newWidth); PositionType position = new PositionType(); position.setX(newX); position.setY(newY); annType.setSize(size); annType.getPosition().remove(0); annType.getPosition().add(position); annotations.put( node.getId(), new AnnotationData(oldX, oldY, newX, newY, oldH, oldW, newHeight, newWidth)); }
private PositionType calculateFlowPosition( final LayoutVertexFactsType vertex, final BigInteger port) throws ParseException { PositionType position = ANF_FACTORY.createPositionType(); LayoutRectangleType rect = getRectangleFromVertex(vertex); // TODO decide based on port position.setX(convertToBigDecimal(rect.getX())); position.setY(convertToBigDecimal(rect.getY())); return position; }
private void convertLayoutRectangleAttribute( final LayoutRectangleType rect, final GraphicsType graphics) throws ParseException { final PositionType position = ANF_FACTORY.createPositionType(); position.setX(convertToBigDecimal(rect.getX())); position.setY(convertToBigDecimal(rect.getY())); graphics.getPosition().add(position); final SizeType size = ANF_FACTORY.createSizeType(); size.setHeight(convertToBigDecimal(rect.getH())); size.setWidth(convertToBigDecimal(rect.getW())); graphics.setSize(size); }
private Collection<PositionType> convertFlowPositions(final LayoutFlowFactsType flowLayout) throws ParseException { final ArrayList<PositionType> positions = new ArrayList<PositionType>(); for (final JAXBElement<?> obj : flowLayout.getAttributes().getAutosizeOrBackgroundColorOrBendable()) { if (obj.getValue() instanceof LayoutPointsType) { final LayoutPointsType points = (LayoutPointsType) obj.getValue(); for (final LayoutPointType point : points.getValue()) { final PositionType position = ANF_FACTORY.createPositionType(); position.setX(convertToBigDecimal(point.getX())); position.setY(convertToBigDecimal(point.getY())); positions.add(position); } } } return positions; }
/* Changes the size of the Gateway Node. */ private void manipulateSplit( CanonicalProcessType cpf, AnnotationsType anf, GraphicsType splitGraphicsType, NodeType splitNode) { int index; BigDecimal newX, newY; PositionType position; GraphicsType targetAnn, targetEdgeAnn; SplitType split = (SplitType) splitNode; BigDecimal oldH = splitGraphicsType.getSize().getHeight(); BigDecimal oldW = splitGraphicsType.getSize().getWidth(); BigDecimal oldX = splitGraphicsType.getPosition().get(0).getX(); BigDecimal oldY = splitGraphicsType.getPosition().get(0).getY(); Map<EdgeType, NodeType> targets = findSplitNodeTargets(cpf, split.getId()); for (Map.Entry<EdgeType, NodeType> target : targets.entrySet()) { targetAnn = findGraphicsType(anf, target.getValue().getId()); targetEdgeAnn = findGraphicsType(anf, target.getKey().getId()); if (targetAnn != null) { newX = targetAnn .getSize() .getWidth() .divide(divisor) .add(targetAnn.getPosition().get(0).getX()); newY = targetAnn.getPosition().get(0).getY(); index = 0; for (PositionType targetEdgePos : targetEdgeAnn.getPosition()) { if (!((targetEdgePos.getX().compareTo(oldX) > 0) && (targetEdgePos.getX().compareTo(oldX.add(oldW)) < 0) && (targetEdgePos.getY().compareTo(oldY) > 0) && (targetEdgePos.getY().compareTo(oldY.add(oldH)) < 0))) { position = new PositionType(); position.setX(newX); position.setY(newY); targetEdgeAnn.getPosition().set(index, position); } index++; } } } }
/* Changes the position of the edges X and Y. */ private Map<PositionType, PositionType> changeLocation( GraphicsType graphicsType, AnnotationData annData) { int index = 0; PositionType newPos = new PositionType(); Map<PositionType, PositionType> replace = new HashMap<>(); for (PositionType pos : graphicsType.getPosition()) { if ((pos.getX().compareTo(annData.getOldX()) >= 0) && (pos.getX().compareTo(annData.getOldX().add(annData.getOldW())) <= 0) && (pos.getY().compareTo(annData.getOldY()) >= 0) && (pos.getY().compareTo(annData.getOldY().add(annData.getOldH())) <= 0)) { newPos.setX(annData.getNewX().add(annData.getNewW().divide(divisor))); newPos.setY(annData.getNewY().add(annData.getNewH().divide(divisor))); graphicsType.getPosition().set(index, newPos); } index++; } return replace; }
private PositionType getPositionType(int x, int y) { PositionType position = new PositionType(); position.setX(new BigDecimal(x)); position.setY(new BigDecimal(y)); return position; }