<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>ToolsSpecification</title>
		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
	</head>
	<body>
		<h3 id="ToolsSpecification">Tools Specification</h3>
		<p>All tools are specified in roughly the same way. Like most elements inside the VSM, they have an 
			<em>Id</em> and a 
			<em>Label</em>. For elements which will appear to the end-user (in the palette or in menus), make sure the 
			<em>Label</em> is meaningful to them.
		</p>
		<p>
			<strong>Tools Applicability</strong>. Most tools apply to a set of 
			<em>Mappings</em>, sometimes only on certain kinds of mappings (e.g. 
			<em>Container Drop</em> description only makes sense for container mappings). For tools which create new elements, the 
			<em>Mappings</em> correspond to the kinds of elements the tool will create. For other tools, it corresponds to the kinds of element the tool can be applied to.
		</p>
		<p>Many tools also support the notion of 
			<em>Extra Mappings</em>. If these are specified, they indicate other kinds of elements than the primary ones on which the tool can be applied.
		</p>
		<p>The 
			<em>Precondition</em> of a tool definition can be used to restrict its applicability to only some instances of the 
			<em>Mappings</em> (and 
			<em>Extra Mappings</em>) associated with the tool. When the user tries to invoke the tool on an element, the expression will be evaluated in the context of that element' semantic target, and the tool will be applicable only if the expression returns true. Otherwise the user will have a feedback (typically a change in the mouse cursor&#8217;s shape) to indicate the tool can not be applied on this element.
		</p>
		<p>
			<strong>Force Refresh.</strong> Tools have a 
			<em>Force Refresh</em> flag. As most tools only perform a local change in the underlying model, by default Sirius will try to optimize its refresh operation (which synchronizes the graphical view with the state of the underlying semantic model) by only refreshing elements of the mappings explicitly associated with the tool. If you know your tool will have side-effects which can change other parts of the diagram, set the 
			<em>Force Refresh</em> flag to force Sirius to perform a complete refresh of the whole diagram after the tool is executed. This ensures a perfect synchronization of the graphical representation with the state of the underlying model, possibly at the cost of performance and reactivity on big diagrams. The refresh will be effective only on the current diagram and not on all opened diagrams.
		</p>
		<p>
			<strong>Selection after tool execution.</strong> The 
			<em>Elements to select</em> and 
			<em>Inverse Selection Order</em> flags can be used to defined what is selected in the active editor after tool execution. 
			<br/>By default, only the top level created elements are selected.
		</p>
		<ul>
			<li>
				<code>Elements to select</code>: Expression to list the elements to select after tool execution. There are four possibilities for the list of elements returned by this expression. In any case, if the default list of elements is not empty, the list of elements returned is filtered with the default selected elements. In case of creation tool, the default list contains newly created elements so, the returned list can contain at most that elements.
				<ul>
					<li>Empty expression: The default behavior is applied: if graphical elements has been created, these elements will be selected(excluding the sub elements), else, the selection is unchanged.</li>
					<li>List of 
						<code>DRepresentationElement</code>: All this graphical elements will be selected after the execution of the tool.
					</li>
					<li>List of semantic elements: All 
						<code>EObject</code> that are not a 
						<code>DRepresentationElement</code> are considered as semantic elements. All graphical elements corresponding to these semantic elements will be selected after the execution of the tool.
					</li>
					<li>Empty list: Nothing is selected after the execution of the tool.</li>
					<li>List with only the 
						<code>DRepresentation</code>: It will be considered as empty list.
					</li>
					<li>List with a mix of 
						<code>DRepresentationElement</code> and non 
						<code>DRepresentationElement</code> is forbidden. A such list will be considered as empty list.
					</li>
				</ul>
			</li>
			<li>
				<code>Inverse Selection Order</code> : By default, false, the elements are selected in the order of the list or the default list if existing. It is possible to inverse this order by setting this property to true. To be more precise, the meaning of this property depends on the value of elementsToSelectExpression:
				<ul>
					<li>List of 
						<code>DRepresentationElement</code>: The elements are selected in order of the list (first element is selected in first, second element is selected in second, and so on). The last graphical element of the list will be the primary selection. If 
						<code>inverseSelectionOrder</code> is true, the order is reverted.
					</li>
					<li>List of semantic elements: The elements are selected in order of the list (the graphical element corresponding to the first semantic element is selected in first, the graphical element corresponding to second semantic element is selected in second, and so on). And if several graphical elements correspond to the same semantic element, they are selected on their default order. The last element is the primary selection. If 
						<code>inverseSelectionOrder</code> is true, the order is reverted (the order of the list AND the order of several graphical elements corresponding to the same semantic element).
					</li>
					<li>Empty list or list with only the 
						<code>DRepresentation</code>: The 
						<code>inverseSelectionOrder</code> is ignored in this context.
					</li>
				</ul>
			</li>
		</ul>
		<p>
			<strong>Tools' Body and Variables.</strong> The actual effect of a tool is defined inside its 
			<em>body</em>, which is usually represented by a 
			<em>Begin</em> element (the starting point of the tool&#8217;s execution). You can use any of the available 
			<a href="../general/Model_Operations.html">model operations</a> to specify the behavior of your tools, including, if necessary, operations which invoke complex algorithms written in Java. Inside the tools&#8217;body, you have access to 
			<em>variables</em>, which are specific to each kind of tools and give you all the necessary information on how the tool was invoked, on which elements, etc. How you access these variables from the expressions inside the tool&#8217;s body depend on the query language you use for the expressions.
		</p>
		<p>
			<strong>Static Variables.</strong> The static variables defined by each tool are visible directly inside the tool&#8217;s element in the VSM. The exact set of variables available will depend on each tool, but typically you will have access to both 
			<em>semantic variables</em> which reference semantic elements and 
			<em>view variables</em> which reference graphical elements. As an example, in a 
			<em>Node Creation Tool</em>, you have both a 
			<em>container</em> and a 
			<em>containerView</em> variable. 
			<em>containerView</em> will point to the graphical element on which the user invoked the node creation tool (for example a container view) while 
			<em>container</em> will point to that view&#8217;s target semantic element. Usually the tools use only the semantic variables, but you may want to use the view variables if the same semantic elements can be represented in different ways on your diagram and you want your tool to behave differently depending on which of these representations the user targeted.
		</p>
		<p>
			<strong>User-Defined Variables.</strong> In addition to the static variables which are pre-defined by Sirius for each kind of tool, you can define your own, which will also be available inside the tool&#8217;s body. These user variables are defined as sub-elements of the static variables using the 
			<em>New Variable...</em> context menu. There are two kinds:
		</p>
		<ul>
			<li>
				<em>Expression Variables</em> have a name and a 
				<em>Computation Expression</em>. When the tool is invoked, the computation expression will be evaluated in the context or the parent variable&#8217;s value (i.e. the static variable inside which the 
				<em>Expression Variable</em> is defined).
			</li>
			<li>
				<em>Select Model Element Variables</em> will open a dialog box when the tool is invoked, from which the user can manually select model elements from a list you can configure. The element or elements selected by the user will become the value of the variable. To configure the dialog box, you must set a 
				<em>Message</em> and a 
				<em>Candidates Expression</em> (evaluated in the context of the parent variable&#8217;s value). The candidates expression should return a list of elements from which the user can select the variable&#8217;s value. By default these candidates are presented as a list. You can also enable the 
				<em>Tree</em> mode, and specify a 
				<em>Children Expression</em>, which will be evaluated recursively on each candidate to build a tree of possible values. Finally, you can set the 
				<em>Multiple</em> flag to allow users to select several of the candidates instead of a single one.
			</li>
		</ul>
		<p>
			<strong>Tool Filters.</strong> Tool filters can be specified inside a tool to hide a tool in the diagram palette depending on dynamic conditions. The 
			<em>Elements To Listen</em> is evaluated in the context of the diagram&#8217;s semantic element, and should return a set of semantic elements. The 
			<em>Precondition</em> is re-evaluated in the context of the diagram whenever a change occurs on 
			<em>Elements To Listen</em>.
		</p>
	</body>
</html>