Search in sources :

Example 1 with DeleteTreeItemSuccessPayload

use of org.eclipse.sirius.components.collaborative.trees.dto.DeleteTreeItemSuccessPayload in project sirius-components by eclipse-sirius.

the class DeleteTreeItemEventHandler method handle.

@Override
public void handle(One<IPayload> payloadSink, Many<ChangeDescription> changeDescriptionSink, IEditingContext editingContext, Tree tree, ITreeInput treeInput) {
    this.counter.increment();
    String message = this.messageService.invalidInput(treeInput.getClass().getSimpleName(), DeleteTreeItemInput.class.getSimpleName());
    IPayload payload = new ErrorPayload(treeInput.getId(), message);
    ChangeDescription changeDescription = new ChangeDescription(ChangeKind.NOTHING, treeInput.getRepresentationId(), treeInput);
    if (treeInput instanceof DeleteTreeItemInput) {
        DeleteTreeItemInput input = (DeleteTreeItemInput) treeInput;
        var optionalTreeItem = this.treeQueryService.findTreeItem(tree, input.getTreeItemId());
        if (optionalTreeItem.isPresent()) {
            TreeDescription treeDescription = this.explorerDescriptionProvider.getDescription();
            TreeItem treeItem = optionalTreeItem.get();
            VariableManager variableManager = new VariableManager();
            variableManager.put(IEditingContext.EDITING_CONTEXT, editingContext);
            variableManager.put(TreeItem.SELECTED_TREE_ITEM, treeItem);
            var status = treeDescription.getDeleteHandler().apply(variableManager);
            if (status instanceof Success) {
                Success success = (Success) status;
                changeDescription = new ChangeDescription(success.getChangeKind(), treeInput.getRepresentationId(), treeInput, success.getParameters());
                payload = new DeleteTreeItemSuccessPayload(treeInput.getId());
            } else if (status instanceof Failure) {
                payload = new ErrorPayload(treeInput.getId(), ((Failure) status).getMessage());
            }
        }
    }
    changeDescriptionSink.tryEmitNext(changeDescription);
    payloadSink.tryEmitValue(payload);
}
Also used : VariableManager(org.eclipse.sirius.components.representations.VariableManager) ErrorPayload(org.eclipse.sirius.components.core.api.ErrorPayload) DeleteTreeItemInput(org.eclipse.sirius.components.collaborative.trees.dto.DeleteTreeItemInput) TreeItem(org.eclipse.sirius.components.trees.TreeItem) DeleteTreeItemSuccessPayload(org.eclipse.sirius.components.collaborative.trees.dto.DeleteTreeItemSuccessPayload) TreeDescription(org.eclipse.sirius.components.trees.description.TreeDescription) ChangeDescription(org.eclipse.sirius.components.collaborative.api.ChangeDescription) Success(org.eclipse.sirius.components.representations.Success) Failure(org.eclipse.sirius.components.representations.Failure) IPayload(org.eclipse.sirius.components.core.api.IPayload)

Aggregations

ChangeDescription (org.eclipse.sirius.components.collaborative.api.ChangeDescription)1 DeleteTreeItemInput (org.eclipse.sirius.components.collaborative.trees.dto.DeleteTreeItemInput)1 DeleteTreeItemSuccessPayload (org.eclipse.sirius.components.collaborative.trees.dto.DeleteTreeItemSuccessPayload)1 ErrorPayload (org.eclipse.sirius.components.core.api.ErrorPayload)1 IPayload (org.eclipse.sirius.components.core.api.IPayload)1 Failure (org.eclipse.sirius.components.representations.Failure)1 Success (org.eclipse.sirius.components.representations.Success)1 VariableManager (org.eclipse.sirius.components.representations.VariableManager)1 TreeItem (org.eclipse.sirius.components.trees.TreeItem)1 TreeDescription (org.eclipse.sirius.components.trees.description.TreeDescription)1