<i>Authors' Note: For the following, knowledge of [[Design Patterns]] isdefinitely definite aid to readershelps.</i>
Any user action can be seen as an example of request. The nature of request is understood by the context of invocation. For the discussion, Oneone can safely say that the "context" is determined by the active "tool". Tool can be any entry in palette that is selected by user. In a sense weWe can say that, Useruser using a tool, generates "Requests". The request is handed over to andselected editpart, which inturn returns an "Command".
This is achieved using [[Chain-of-responsibility pattern|Chain of responsibility]] over Editpolicies, the editpolicies determine if they can handle the request, or not andelse pass on to the next editpolicy. The order of declaration of editpolicies determine the order in which the request is handedpassed overaround. The capable editpolicy creates a command. This command is handed back to the tool which initiated the "Request". Execution of the command causes the model to be modified (Response).
One another mechanism to achieve the same is to create Requests programatically and hand them over to Editparts. The Commandcommand generated can be subsequently executed on the "CommandStack".