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);
}
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
}
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);
}
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;
}
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;
}
Aggregations