Search in sources :

Example 1 with Layout

use of org.kie.workbench.common.stunner.core.graph.processing.layout.Layout in project kie-wb-common by kiegroup.

the class LayoutHelper method applyLayout.

public void applyLayout(final Diagram diagram, final LayoutExecutor layoutExecutor, final boolean overrideCurrentLayout) {
    final Graph<?, Node> graph = diagram.getGraph();
    if (graph != null && (overrideCurrentLayout || !this.layoutService.hasLayoutInformation(graph))) {
        final Layout layout = this.layoutService.createLayout(graph);
        layoutExecutor.applyLayout(layout, graph);
        for (final Node node : graph.nodes()) {
            if (CanvasLayoutUtils.isCanvasRoot(diagram, node)) {
                if (node.getContent() instanceof HasBounds) {
                    ((HasBounds) node.getContent()).setBounds(Bounds.create(0, 0, 0, 0));
                }
            }
        }
    }
}
Also used : Layout(org.kie.workbench.common.stunner.core.graph.processing.layout.Layout) Node(org.kie.workbench.common.stunner.core.graph.Node) HasBounds(org.kie.workbench.common.stunner.core.graph.content.HasBounds)

Example 2 with Layout

use of org.kie.workbench.common.stunner.core.graph.processing.layout.Layout in project kie-wb-common by kiegroup.

the class SugiyamaLayoutService method buildLayout.

Layout buildLayout(final HashMap<String, Node> indexByUuid, final List<GraphLayer> layers) {
    final Layout layout = new Layout();
    for (int i = layers.size() - 1; i >= 0; i--) {
        final GraphLayer layer = layers.get(i);
        for (final Vertex v : layer.getVertices()) {
            final Node n = indexByUuid.get(v.getId());
            final int x = v.getX();
            final int y = v.getY();
            final Bounds currentBounds = ((HasBounds) n.getContent()).getBounds();
            final Bound lowerRight = currentBounds.getLowerRight();
            final int x2;
            if (isCloseToZero(lowerRight.getX())) {
                x2 = x + VertexPositioning.DEFAULT_VERTEX_WIDTH;
            } else {
                x2 = (int) (x + lowerRight.getX());
            }
            final int y2;
            if (isCloseToZero(lowerRight.getY())) {
                y2 = y + VertexPositioning.DEFAULT_VERTEX_HEIGHT;
            } else {
                y2 = (int) (y + lowerRight.getY());
            }
            final VertexPosition position = new VertexPositionImpl(v.getId(), new Point2D(x, y), new Point2D(x2, y2));
            layout.getNodePositions().add(position);
        }
    }
    return layout;
}
Also used : Vertex(org.kie.workbench.common.stunner.core.graph.processing.layout.Vertex) Layout(org.kie.workbench.common.stunner.core.graph.processing.layout.Layout) Point2D(org.kie.workbench.common.stunner.core.graph.content.view.Point2D) Node(org.kie.workbench.common.stunner.core.graph.Node) HasBounds(org.kie.workbench.common.stunner.core.graph.content.HasBounds) Bounds(org.kie.workbench.common.stunner.core.graph.content.Bounds) VertexPosition(org.kie.workbench.common.stunner.core.graph.processing.layout.VertexPosition) Bound(org.kie.workbench.common.stunner.core.graph.content.Bound) VertexPositionImpl(org.kie.workbench.common.stunner.core.graph.processing.layout.VertexPositionImpl) HasBounds(org.kie.workbench.common.stunner.core.graph.content.HasBounds)

Aggregations

Node (org.kie.workbench.common.stunner.core.graph.Node)2 HasBounds (org.kie.workbench.common.stunner.core.graph.content.HasBounds)2 Layout (org.kie.workbench.common.stunner.core.graph.processing.layout.Layout)2 Bound (org.kie.workbench.common.stunner.core.graph.content.Bound)1 Bounds (org.kie.workbench.common.stunner.core.graph.content.Bounds)1 Point2D (org.kie.workbench.common.stunner.core.graph.content.view.Point2D)1 Vertex (org.kie.workbench.common.stunner.core.graph.processing.layout.Vertex)1 VertexPosition (org.kie.workbench.common.stunner.core.graph.processing.layout.VertexPosition)1 VertexPositionImpl (org.kie.workbench.common.stunner.core.graph.processing.layout.VertexPositionImpl)1