Search in sources :

Example 11 with Edge

use of org.eclipse.sirius.components.diagrams.Edge in project sirius-components by eclipse-sirius.

the class GetToolSectionsEventHandler method findDiagramElementDescription.

private Optional<Object> findDiagramElementDescription(Diagram diagram, String diagramElementId, DiagramDescription diagramDescription, Object diagramElement) {
    Object diagramElementDescription = null;
    boolean appliesToRootDiagram = diagram.getId().equals(diagramElementId);
    if (appliesToRootDiagram) {
        diagramElementDescription = diagramDescription;
    } else if (diagramElement instanceof Node) {
        UUID descriptionId = ((Node) diagramElement).getDescriptionId();
        var optionalNodeDescription = this.diagramDescriptionService.findNodeDescriptionById(diagramDescription, descriptionId);
        if (optionalNodeDescription.isPresent()) {
            diagramElementDescription = optionalNodeDescription.get();
        }
    } else if (diagramElement instanceof Edge) {
        UUID descriptionId = ((Edge) diagramElement).getDescriptionId();
        var optionalEdgeDescription = this.diagramDescriptionService.findEdgeDescriptionById(diagramDescription, descriptionId);
        if (optionalEdgeDescription.isPresent()) {
            diagramElementDescription = optionalEdgeDescription.get();
        }
    }
    return Optional.ofNullable(diagramElementDescription);
}
Also used : Node(org.eclipse.sirius.components.diagrams.Node) UUID(java.util.UUID) Edge(org.eclipse.sirius.components.diagrams.Edge)

Example 12 with Edge

use of org.eclipse.sirius.components.diagrams.Edge in project sirius-components by eclipse-sirius.

the class ELKLayoutedDiagramProvider method getLayoutedDiagram.

public Diagram getLayoutedDiagram(Diagram diagram, ElkNode elkDiagram, Map<String, ElkGraphElement> id2ElkGraphElements) {
    Size size = Size.of(elkDiagram.getWidth(), elkDiagram.getHeight());
    Position position = Position.at(elkDiagram.getX(), elkDiagram.getY());
    // @formatter:off
    List<Node> nodes = this.getLayoutedNodes(diagram.getNodes(), id2ElkGraphElements);
    List<Edge> edges = this.getLayoutedEdges(diagram.getEdges(), id2ElkGraphElements);
    return Diagram.newDiagram(diagram).position(position).size(size).nodes(nodes).edges(edges).build();
// @formatter:on
}
Also used : Position(org.eclipse.sirius.components.diagrams.Position) Size(org.eclipse.sirius.components.diagrams.Size) Node(org.eclipse.sirius.components.diagrams.Node) ElkNode(org.eclipse.elk.graph.ElkNode) Edge(org.eclipse.sirius.components.diagrams.Edge) ElkEdge(org.eclipse.elk.graph.ElkEdge)

Example 13 with Edge

use of org.eclipse.sirius.components.diagrams.Edge in project sirius-components by eclipse-sirius.

the class IncrementalLayoutDiagramConverter method convert.

public IncrementalLayoutConvertedDiagram convert(Diagram diagram) {
    Map<String, ILayoutData> id2LayoutData = new HashMap<>();
    DiagramLayoutData layoutData = new DiagramLayoutData();
    String id = diagram.getId();
    layoutData.setId(id);
    id2LayoutData.put(id, layoutData);
    layoutData.setPosition(diagram.getPosition());
    layoutData.setSize(diagram.getSize());
    List<NodeLayoutData> nodes = new ArrayList<>();
    for (Node node : diagram.getNodes()) {
        nodes.add(this.convertNode(node, layoutData, id2LayoutData));
    }
    layoutData.setChildrenNodes(nodes);
    List<EdgeLayoutData> edges = new ArrayList<>();
    for (Edge edge : diagram.getEdges()) {
        edges.add(this.convertEdge(edge, id2LayoutData));
    }
    layoutData.setEdges(edges);
    return new IncrementalLayoutConvertedDiagram(layoutData, id2LayoutData);
}
Also used : EdgeLayoutData(org.eclipse.sirius.components.diagrams.layout.incremental.data.EdgeLayoutData) ILayoutData(org.eclipse.sirius.components.diagrams.layout.incremental.data.ILayoutData) HashMap(java.util.HashMap) DiagramLayoutData(org.eclipse.sirius.components.diagrams.layout.incremental.data.DiagramLayoutData) Node(org.eclipse.sirius.components.diagrams.Node) ArrayList(java.util.ArrayList) Edge(org.eclipse.sirius.components.diagrams.Edge) NodeLayoutData(org.eclipse.sirius.components.diagrams.layout.incremental.data.NodeLayoutData)

Example 14 with Edge

use of org.eclipse.sirius.components.diagrams.Edge in project sirius-components by eclipse-sirius.

the class EdgeComponent method getLabelsChildren.

private List<Element> getLabelsChildren(EdgeDescription edgeDescription, VariableManager edgeVariableManager, Optional<Edge> optionalPreviousEdge, String edgeId, List<Position> routingPoints) {
    List<Element> edgeChildren = new ArrayList<>();
    VariableManager labelVariableManager = edgeVariableManager.createChild();
    labelVariableManager.put(LabelDescription.OWNER_ID, edgeId);
    Optional.ofNullable(edgeDescription.getBeginLabelDescription()).map(labelDescription -> {
        Optional<Label> optionalPreviousLabel = optionalPreviousEdge.map(Edge::getBeginLabel);
        LabelComponentProps labelComponentProps = new LabelComponentProps(labelVariableManager, labelDescription, optionalPreviousLabel, LabelType.EDGE_BEGIN.getValue());
        return new Element(LabelComponent.class, labelComponentProps);
    }).ifPresent(edgeChildren::add);
    Optional.ofNullable(edgeDescription.getCenterLabelDescription()).map(labelDescription -> {
        Optional<Label> optionalPreviousLabel = optionalPreviousEdge.map(Edge::getCenterLabel);
        LabelComponentProps labelComponentProps = new LabelComponentProps(labelVariableManager, labelDescription, optionalPreviousLabel, LabelType.EDGE_CENTER.getValue());
        return new Element(LabelComponent.class, labelComponentProps);
    }).ifPresent(edgeChildren::add);
    Optional.ofNullable(edgeDescription.getEndLabelDescription()).map(labelDescription -> {
        Optional<Label> optionalPreviousLabel = optionalPreviousEdge.map(Edge::getEndLabel);
        LabelComponentProps labelComponentProps = new LabelComponentProps(labelVariableManager, labelDescription, optionalPreviousLabel, LabelType.EDGE_END.getValue());
        return new Element(LabelComponent.class, labelComponentProps);
    }).ifPresent(edgeChildren::add);
    return edgeChildren;
}
Also used : VariableManager(org.eclipse.sirius.components.representations.VariableManager) Edge(org.eclipse.sirius.components.diagrams.Edge) LabelDescription(org.eclipse.sirius.components.diagrams.description.LabelDescription) Ratio(org.eclipse.sirius.components.diagrams.Ratio) Collection(java.util.Collection) SynchronizationPolicy(org.eclipse.sirius.components.diagrams.description.SynchronizationPolicy) Position(org.eclipse.sirius.components.diagrams.Position) DiagramDescription(org.eclipse.sirius.components.diagrams.description.DiagramDescription) UUID(java.util.UUID) NodeDescription(org.eclipse.sirius.components.diagrams.description.NodeDescription) Element(org.eclipse.sirius.components.representations.Element) IComponent(org.eclipse.sirius.components.representations.IComponent) ArrayList(java.util.ArrayList) Objects(java.util.Objects) List(java.util.List) EdgeDescription(org.eclipse.sirius.components.diagrams.description.EdgeDescription) Fragment(org.eclipse.sirius.components.representations.Fragment) NodeElementProps(org.eclipse.sirius.components.diagrams.elements.NodeElementProps) Optional(java.util.Optional) FragmentProps(org.eclipse.sirius.components.representations.FragmentProps) VariableManager(org.eclipse.sirius.components.representations.VariableManager) Label(org.eclipse.sirius.components.diagrams.Label) EdgeElementProps(org.eclipse.sirius.components.diagrams.elements.EdgeElementProps) EdgeStyle(org.eclipse.sirius.components.diagrams.EdgeStyle) DiagramRenderingCache(org.eclipse.sirius.components.diagrams.renderer.DiagramRenderingCache) Optional(java.util.Optional) Element(org.eclipse.sirius.components.representations.Element) ArrayList(java.util.ArrayList)

Example 15 with Edge

use of org.eclipse.sirius.components.diagrams.Edge in project sirius-components by eclipse-sirius.

the class CompatibilityToolSectionsProvider method checkPrecondition.

private boolean checkPrecondition(Object targetElement, Object diagramElement, AbstractToolDescription siriusTool, org.eclipse.sirius.diagram.description.DiagramDescription siriusDiagramDescription) {
    boolean checkPrecondition = false;
    if (!(siriusTool instanceof EdgeCreationDescription)) {
        AQLInterpreter interpreter = this.interpreterFactory.create(siriusDiagramDescription);
        String precondition = siriusTool.getPrecondition();
        if (precondition != null && !precondition.isBlank()) {
            VariableManager variableManager = new VariableManager();
            variableManager.put(VariableManager.SELF, targetElement);
            variableManager.put(Environment.ENVIRONMENT, Environment.SIRIUS_COMPONENTS);
            if (diagramElement instanceof Node) {
                variableManager.put(Node.SELECTED_NODE, diagramElement);
            } else if (diagramElement instanceof Edge) {
                variableManager.put(Edge.SELECTED_EDGE, diagramElement);
            }
            Result result = interpreter.evaluateExpression(variableManager.getVariables(), precondition);
            checkPrecondition = result.getStatus().compareTo(Status.WARNING) <= 0 && result.asBoolean().orElse(Boolean.FALSE);
        } else {
            checkPrecondition = true;
        }
    } else {
        checkPrecondition = true;
    }
    return checkPrecondition;
}
Also used : VariableManager(org.eclipse.sirius.components.representations.VariableManager) AQLInterpreter(org.eclipse.sirius.components.interpreter.AQLInterpreter) Node(org.eclipse.sirius.components.diagrams.Node) Edge(org.eclipse.sirius.components.diagrams.Edge) EdgeCreationDescription(org.eclipse.sirius.diagram.description.tool.EdgeCreationDescription) Result(org.eclipse.sirius.components.interpreter.Result)

Aggregations

Edge (org.eclipse.sirius.components.diagrams.Edge)15 Node (org.eclipse.sirius.components.diagrams.Node)14 Diagram (org.eclipse.sirius.components.diagrams.Diagram)6 Test (org.junit.jupiter.api.Test)5 ElkEdge (org.eclipse.elk.graph.ElkEdge)4 ElkNode (org.eclipse.elk.graph.ElkNode)4 EdgeDescription (org.eclipse.sirius.components.diagrams.description.EdgeDescription)4 NodeDescription (org.eclipse.sirius.components.diagrams.description.NodeDescription)4 ArrayList (java.util.ArrayList)3 ELKConvertedDiagram (org.eclipse.sirius.components.diagrams.layout.ELKConvertedDiagram)3 TestDiagramBuilder (org.eclipse.sirius.components.diagrams.tests.TestDiagramBuilder)3 VariableManager (org.eclipse.sirius.components.representations.VariableManager)3 List (java.util.List)2 Objects (java.util.Objects)2 Optional (java.util.Optional)2 UUID (java.util.UUID)2 Position (org.eclipse.sirius.components.diagrams.Position)2 DiagramDescription (org.eclipse.sirius.components.diagrams.description.DiagramDescription)2 ELKDiagramConverter (org.eclipse.sirius.components.diagrams.layout.ELKDiagramConverter)2 ImageSizeProvider (org.eclipse.sirius.components.diagrams.layout.incremental.provider.ImageSizeProvider)2