use of org.eclipse.sirius.components.diagrams.Position in project sirius-components by eclipse-sirius.
the class CreateViewOperationHandlerTests method initialize.
@BeforeEach
public void initialize() {
this.operationTestContext = new OperationTestContext();
// @formatter:off
DiagramDescription diagramDescription = DiagramDescription.newDiagramDescription(UUID.randomUUID()).label(// $NON-NLS-1$
"DiagramDescriptionTest").targetObjectIdProvider(// $NON-NLS-1$
variableManager -> "diagramTargetObjectId").canCreatePredicate(variableManager -> true).labelProvider(// $NON-NLS-1$
variableManager -> "Diagram").toolSections(List.of()).nodeDescriptions(List.of(this.getNodeDescription(UUID.randomUUID()))).edgeDescriptions(List.of()).dropHandler(// $NON-NLS-1$
variableManager -> new Failure("")).build();
Diagram diagram = Diagram.newDiagram(UUID.randomUUID().toString()).descriptionId(diagramDescription.getId()).targetObjectId(UUID.randomUUID().toString()).label(// $NON-NLS-1$
"DiagramTest").position(Position.at(0, 0)).size(Size.of(100, 100)).nodes(new ArrayList<>()).edges(List.of()).build();
IDiagramContext diagramContext = new IDiagramContext.NoOp() {
@Override
public List<ViewCreationRequest> getViewCreationRequests() {
return new ArrayList<>();
}
};
this.operationTestContext.getVariables().put(IDiagramContext.DIAGRAM_CONTEXT, diagramContext);
// @formatter:on
AdapterFactoryEditingDomain editingDomain = new EditingDomainFactory().create();
EditingContext editingContext = new EditingContext(UUID.randomUUID().toString(), editingDomain);
this.operationTestContext.getVariables().put(IEditingContext.EDITING_CONTEXT, editingContext);
this.operationTestContext.getVariables().put(CONTAINER_VIEW, diagram);
this.createViewOperation = org.eclipse.sirius.diagram.description.tool.ToolFactory.eINSTANCE.createCreateView();
this.createViewOperationHandler = new CreateViewOperationHandler(this.operationTestContext.getObjectService(), this.operationTestContext.getRepresentationMetadataSearchService(), this.operationTestContext.getIdentifierProvider(), this.operationTestContext.getInterpreter(), new ChildModelOperationHandler(List.of()), this.createViewOperation);
}
use of org.eclipse.sirius.components.diagrams.Position in project sirius-components by eclipse-sirius.
the class DeleteViewOperationHandlerTests method initialize.
@BeforeEach
public void initialize() {
this.operationTestContext = new OperationTestContext();
// @formatter:off
DiagramDescription diagramDescription = DiagramDescription.newDiagramDescription(UUID.randomUUID()).label(// $NON-NLS-1$
"DiagramDescriptionTest").targetObjectIdProvider(// $NON-NLS-1$
variableManager -> "diagramTargetObjectId").canCreatePredicate(variableManager -> true).labelProvider(// $NON-NLS-1$
variableManager -> "Diagram").toolSections(List.of()).nodeDescriptions(List.of(this.getNodeDescription(UUID.randomUUID()))).edgeDescriptions(List.of()).dropHandler(// $NON-NLS-1$
variableManager -> new Failure("")).build();
Node node = Node.newNode(UUID.randomUUID().toString()).descriptionId(UUID.randomUUID()).type(// $NON-NLS-1$
"Node").targetObjectId(UUID.randomUUID().toString()).targetObjectKind(// $NON-NLS-1$
"ecore::EPackage").targetObjectLabel(OperationTestContext.ROOT_PACKAGE_NAME).label(Label.newLabel(UUID.randomUUID().toString()).type(// $NON-NLS-1$
"Label").text(OperationTestContext.ROOT_PACKAGE_NAME).position(Position.at(0, 0)).size(Size.of(10, 10)).alignment(Position.at(0, 0)).style(// $NON-NLS-1$ //$NON-NLS-2$
LabelStyle.newLabelStyle().color("").fontSize(0).iconURL("").build()).build()).style(// $NON-NLS-1$
ImageNodeStyle.newImageNodeStyle().imageURL("").scalingFactor(0).build()).position(Position.at(0, 0)).size(Size.of(10, 10)).borderNodes(List.of()).childNodes(List.of()).build();
Diagram diagram = Diagram.newDiagram(UUID.randomUUID().toString()).descriptionId(diagramDescription.getId()).targetObjectId(UUID.randomUUID().toString()).label(// $NON-NLS-1$
"DiagramTest").position(Position.at(0, 0)).size(Size.of(100, 100)).nodes(List.of(node)).edges(List.of()).build();
IDiagramContext diagramContext = new IDiagramContext.NoOp() {
@Override
public List<ViewDeletionRequest> getViewDeletionRequests() {
return new ArrayList<>();
}
};
this.operationTestContext.getVariables().put(IDiagramContext.DIAGRAM_CONTEXT, diagramContext);
// @formatter:on
AdapterFactoryEditingDomain editingDomain = new EditingDomainFactory().create();
EditingContext editingContext = new EditingContext(UUID.randomUUID().toString(), editingDomain);
this.operationTestContext.getVariables().put(IEditingContext.EDITING_CONTEXT, editingContext);
this.operationTestContext.getVariables().put(CONTAINER_VIEW, diagram);
this.operationTestContext.getVariables().put(VariableManager.SELF, diagram.getNodes().get(0));
this.deleteViewOperation = ToolFactory.eINSTANCE.createDeleteView();
this.deleteViewOperationHandler = new DeleteViewOperationHandler(this.operationTestContext.getObjectService(), this.operationTestContext.getRepresentationMetadataSearchService(), this.operationTestContext.getIdentifierProvider(), this.operationTestContext.getInterpreter(), new ChildModelOperationHandler(List.of()), this.deleteViewOperation);
}
use of org.eclipse.sirius.components.diagrams.Position in project sirius-components by eclipse-sirius.
the class DropOnDiagramEventHandler method executeTool.
private IStatus executeTool(IEditingContext editingContext, IDiagramContext diagramContext, List<Object> objects, String diagramElementId, double startingPositionX, double startingPositionY) {
// $NON-NLS-1$
IStatus result = new Failure("");
Diagram diagram = diagramContext.getDiagram();
Optional<Node> node = this.diagramQueryService.findNodeById(diagram, diagramElementId);
// @formatter:off
var optionalDropHandler = this.representationDescriptionSearchService.findById(editingContext, diagram.getDescriptionId()).filter(DiagramDescription.class::isInstance).map(DiagramDescription.class::cast).map(DiagramDescription::getDropHandler);
if (optionalDropHandler.isPresent()) {
result = new Success();
var dropHandler = optionalDropHandler.get();
Position newPosition = Position.at(startingPositionX, startingPositionY);
diagramContext.setDiagramEvent(new SinglePositionEvent(newPosition));
for (Object self : objects) {
VariableManager variableManager = new VariableManager();
if (node.isPresent()) {
variableManager.put(Node.SELECTED_NODE, node.get());
}
variableManager.put(IEditingContext.EDITING_CONTEXT, editingContext);
variableManager.put(IDiagramContext.DIAGRAM_CONTEXT, diagramContext);
variableManager.put(Environment.ENVIRONMENT, new Environment(Environment.SIRIUS_COMPONENTS));
variableManager.put(VariableManager.SELF, self);
IStatus dropResult = dropHandler.apply(variableManager);
if (dropResult instanceof Failure) {
// Let all drops finished but keep the error state
result = dropResult;
}
}
}
return result;
}
use of org.eclipse.sirius.components.diagrams.Position in project sirius-components by eclipse-sirius.
the class UpdateNodeBoundsEventHandler method handleUpdateNodeBounds.
private void handleUpdateNodeBounds(One<IPayload> payloadSink, Many<ChangeDescription> changeDescriptionSink, IDiagramContext diagramContext, UpdateNodeBoundsInput diagramInput) {
// @formatter:off
Position newPosition = Position.newPosition().x(diagramInput.getNewPositionX()).y(diagramInput.getNewPositionY()).build();
Size newSize = Size.newSize().width(diagramInput.getNewWidth()).height(diagramInput.getNewHeight()).build();
// @formatter:on
Optional<Node> optionalNode = this.diagramQueryService.findNodeById(diagramContext.getDiagram(), diagramInput.getDiagramElementId());
if (optionalNode.isPresent()) {
Position oldPosition = optionalNode.get().getPosition();
// @formatter:off
Position delta = Position.newPosition().x(oldPosition.getX() - newPosition.getX()).y(oldPosition.getY() - newPosition.getY()).build();
// @formatter:on
diagramContext.setDiagramEvent(new ResizeEvent(diagramInput.getDiagramElementId(), delta, newSize));
payloadSink.tryEmitValue(new UpdateNodeBoundsSuccessPayload(diagramInput.getId(), diagramContext.getDiagram()));
changeDescriptionSink.tryEmitNext(new ChangeDescription(DiagramChangeKind.DIAGRAM_LAYOUT_CHANGE, diagramInput.getRepresentationId(), diagramInput));
} else {
String message = this.messageService.nodeNotFound(String.valueOf(diagramInput.getDiagramElementId()));
payloadSink.tryEmitValue(new ErrorPayload(diagramInput.getId(), message));
changeDescriptionSink.tryEmitNext(new ChangeDescription(ChangeKind.NOTHING, diagramInput.getRepresentationId(), diagramInput));
}
}
use of org.eclipse.sirius.components.diagrams.Position in project sirius-components by eclipse-sirius.
the class DiagramElementExportService method exportLabel.
public StringBuilder exportLabel(Label label) {
StringBuilder labelExport = new StringBuilder();
Position position = label.getPosition();
Position alignment = label.getAlignment();
LabelStyle style = label.getStyle();
// $NON-NLS-1$
labelExport.append("<g ");
// $NON-NLS-1$
labelExport.append("transform=\"");
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
labelExport.append("translate(" + position.getX() + ", " + position.getY() + ") ");
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
labelExport.append("translate(" + alignment.getX() + ", " + alignment.getY() + ")\"");
// $NON-NLS-1$
labelExport.append(">");
if (!(style.getIconURL().isEmpty())) {
labelExport.append(this.exportImageElement(style.getIconURL(), -20, -12, Optional.empty()));
}
labelExport.append(this.exportTextElement(label.getText(), label.getType(), style));
// $NON-NLS-1$
return labelExport.append("</g>");
}
Aggregations