blob: d50c87a8569d90a4b0655b0106ac8b5feba6d912 [file] [log] [blame]
<html>
<head>
<meta name="copyright" content="Copyright Technical University Berlin and others 2004, 2011. This page is made available under the Eclipse Public License v1.0. For full details see http://www.eclipse.org/legal/epl-v10.html" />
<link rel=stylesheet type="text/css" href="../css/book.css">
<link rel=stylesheet type="text/css" href="otjld/css/ot.css">
<link rel=stylesheet type="text/css" href="otguide.css">
<style type="text/css">
body { margin:10px; }
.high { background-color:#a5b7bd;color:white; }
.low { background-color:#fff0c8; padding:2px; }
.caption { text-decoration:underline; vertical-align:top;position:relative;top:20px; margin-top:10px;}
</style>
<title>Binding Editor</title>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<h1 align="center">Binding Editor</a></h1>
The binding editor provides a tabular visualization of all bindings (playedBy, callout, callin) of a given team class.
After selecting a team class the binding editor can be invoked using <span class="ui"><img src="../images/calloutbinding_obj.gif">Open Binding Editor</span> from the context menu.
<h2>Visualization</h2>
The top half of the binding editor consists of three columns: <b>role</b>, <b>binding kind</b>, <b>base</b>.
All elements nested in a team or role class can be collapsed/expanded as in other structural views.
<img alt="Binding Editor" src="images/screenshots/BindingEditor_FlightBonus.png">
<h2>Editing</h2>
Bindings can be edited at three levels: <b>types</b>, <b>methods</b>, <b>parameters</b>.
Especially, when creating the "Connector" in the <a href="http://wiki.eclipse.org/OTPattern/Connector">Connector Pattern</a>,
the binding editor may be all you need, i.e., the full connector definition can be generated using the binding editor
with no need to edit source code in the Java editor.
<h3>Adding playedBy bindings</h3>
When clicking <span class="ui">Add Type Binding</span> you are presented with a twofold type selection dialog.
<p>
<img alt="Add Type Binding" src="images/screenshots/BindingEditor_AddTypeBinding.png"/>
</p>
On the left hand side select one of the role types inherited from the super team,
on the right hand side select the base class you wish to bind to the role using <code class="keyword">playedBy</code>.
When clicking <span class="ui">OK</span> this information will be used for creating a new role class
overriding the selected role from the super team and bound to the selected base class.
<h3>Adding method bindings</h3>
Method bindings are created in the lower half of the binding editor.
<p>
For creating a <b>callout</b> binding between an existing role method and a base method
simply select both methods from the respective lists of Role Methods / Base Methods,
also select <span class="ui">-&gt;</span> between both lists and click <span class="ui">Apply</span>.<br/>
If the selected role method is not abstract, select <span class="ui">=&gt;</span> for an overriding callout.</br>
For creating a callout binding without an existing role method select <span class="ui"><img src="images/add_correction.gif"> 'New Method()</span>
from the left list.
</p>
<p>
For creating a <b>callin</b> binding simply select both methods from the respective lists of Role Methods / Base Methods,
also select one of the callin kinds <span class="ui">&lt;- before</span>, <span class="ui">&lt;- replace</span>, or <span class="ui">&lt;- after</span>
between both lists and then click <span class="ui">Apply</span>.<br/>
</p>
<h3>Adding parameter mappings</h3>
For creating a parameter mapping first select the method binding, then switch to the tab <span class="ui">Parameter Mapping Configuration</span>.
<p>
<img alt="Create Parameter Mapping" src="images/screenshots/BindingEditor_ParameterMappings.png"/>
</p>
Depending on the binding direction enter details in the fields showing either <span class="ui">&lt;-</span> or <span class="ui">-&gt;</span>
between them.
On the target side (where the arrow is pointing to) select one of the declared parameters, on the other side enter a
Java expression that can be resolved in the given scope. Don't forget to create each individual parameter mapping using <span class="ui">Apply</span>.
<hr/>
<p>
When closing the binding editor using <span class="ui">OK</span> all pending changes will be generated into the appropriate source file.
</p>
</body>
</html>