h1. Sirius - Provide custom model operation

h2. Goals

Sirius provides various model operations (change context, if, for, create instance, etc). This extension point allows the contribution of additional model operations.

h2. Define a model operation extension

This extension point is identified as @org.eclipse.sirius.diagram.bundledImageShape@. In this extension, there are three required fields:
* id - The identifier of the contribution
* name - The human readable name of the contribution
* modelOperationManager - The Java class used to handle the model operation

The model operation manager will have to create a Sirius task from the given description of the model operation. An example is available in the plugin @org.eclipse.sirius.ui.properties@ with the class @org.eclipse.sirius.ui.properties.internal.dialog.DialogModelOperationManager@.

pre.. 
public class DialogModelOperationManager implements IModelOperationManager {

    @Override
    public Optional<ICommandTask> createTask(ModelOperation modelOperation, ModelAccessor modelAccessor, UICallBack uiCallback,
             Session session, IInterpreter interpreter, CommandContext context) {
        if (modelOperation instanceof DialogModelOperation) {
            DialogModelOperation dialogModelOperation = (DialogModelOperation) modelOperation;
            return Optional.of(new DialogTask(context, modelAccessor, interpreter, session, dialogModelOperation));
        }
        return Optional.empty();
    }

}

p. In this example, we will only consider the DialogModelOperation and we will return a new DialogTask used to open a dialog.