<html> | |
<head> | |
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | |
<title>Content Assist Support</title> | |
<link href="book.css" rel="stylesheet" type="text/css"> | |
<meta content="DocBook XSL Stylesheets V1.75.1" name="generator"> | |
<link rel="home" href="index.html" title="OCL Documentation"> | |
<link rel="up" href="ProgrammersGuide.html" title="Classic Ecore/UML Programmers Guide"> | |
<link rel="prev" href="TargetMetamodels.html" title="OCL Relationship to Metamodels"> | |
<link rel="next" href="AbstractSyntax.html" title="OCL Abstract Syntax Model"> | |
</head> | |
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> | |
<h1 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">Content Assist Support</h1> | |
<div class="section" title="Content Assist Support"> | |
<div class="titlepage"> | |
<div> | |
<div> | |
<h2 class="title" style="clear: both"> | |
<a name="ContentAssistSupport"></a>Content Assist Support</h2> | |
</div> | |
</div> | |
</div> | |
<div class="blockquote"> | |
<blockquote class="blockquote"> | |
<p> | |
The Content Assist facilities described here are used by the Interactive OCL Console. They are not used by the new Xtext-based Editors or the Interactive Xtext OCL Console.</p> | |
</blockquote> | |
</div> | |
<p> | |
The | |
<a class="ulink" href="http://download.eclipse.org/ocl/javadoc/6.4.0/org/eclipse/ocl/helper/OCLHelper.html" target="_new"> | |
<code class="code">OCLHelper</code> | |
</a> API provides support for content-assist in rich editors, by parsing partial OCL | |
expressions and supplying completion suggestions. The | |
<code class="code">List<Choice> getSyntaxHelp(ConstraintKind, String)</code> operation | |
returns a list of suggestions for the next token to follow the end of the | |
expression fragment. | |
</p> | |
<p> | |
</p> | |
<div class="mediaobject"> | |
<img src="images/5140-contentassist.png"></div> | |
<p> | |
</p> | |
<p>The | |
<a class="ulink" href="http://download.eclipse.org/ocl/javadoc/6.4.0/org/eclipse/ocl/helper/Choice.html" target="_new"> | |
<code class="code">Choice</code> | |
</a> objects returned by the helper include some convenient text strings (name and | |
description) to formulate basic JFace content-assist proposals. Each choice | |
also carries a reference to the element that it represents, the kind of element | |
indicated by the | |
<code class="code">ChoiceKind</code> enumeration, for a more | |
sophisticated content assist that might inlude context information, documentation, | |
etc. as in Eclipse JDT. The list of choices depends in part on the kind of | |
constraint expression that is to be completed, as for example, the | |
<code class="code">oclIsNew()</code> operation is only permitted in operation | |
post-conditions. | |
</p> | |
<div class="literallayout"> | |
<p> | |
<code class="code">helper.setContext(EXTLibraryPackage.Literals.BOOK);<br> | |
<br> | |
List<Choice> choices = helper.getSyntaxHelp(ConstraintKind.INVARIANT,<br> | |
"Book.allInstances()->collect(author)->");<br> | |
<br> | |
for (Choice next : choices) {<br> | |
switch (next.getKind()) {<br> | |
case OPERATION:<br> | |
case SIGNAL:<br> | |
// the description is already complete<br> | |
System.out.println(next.getDescription());<br> | |
case PROPERTY:<br> | |
case ENUMERATION_LITERAL:<br> | |
case VARIABLE:<br> | |
System.out.println(next.getName() + " : " + next.getDescription();<br> | |
break;<br> | |
default:<br> | |
System.out.println(next.getName());<br> | |
break;<br> | |
}<br> | |
}<br> | |
</code> | |
</p> | |
</div> | |
<p></p> | |
<div class="section" title="Syntax Completion Choices"> | |
<div class="titlepage"> | |
<div> | |
<div> | |
<h3 class="title"> | |
<a name="SyntaxCompletionChoices"></a>Syntax Completion Choices</h3> | |
</div> | |
</div> | |
</div> | |
<p>The computation of | |
<code class="code">Choice</code> s is supported for the | |
following tokens, which may be used by a client as auto-assist triggers: | |
</p> | |
<table id="N14DF1"> | |
<tr> | |
<th>Token</th> | |
<th>Completion choices</th> | |
</tr> | |
<tr> | |
<td> | |
<code class="code">.</code> | |
</td> | |
<td>Features applicable to the type of the expression to the left of the dot, or its element type if it is a collection. association classes (in the UML environment only)</td> | |
</tr> | |
<tr> | |
<td> | |
<code class="code">-></code> | |
</td> | |
<td>Collection operations and iterators</td> | |
</tr> | |
<tr> | |
<td> | |
<code class="code">::</code> | |
</td> | |
<td>Packages, types, enumeration literals, and states (in the UML environment only)</td> | |
</tr> | |
<tr> | |
<td> | |
<code class="code">^</code> | |
</td> | |
<td>Operations and signals (in the UML environment only)</td> | |
</tr> | |
<tr> | |
<td> | |
<code class="code">^^</code> | |
</td> | |
<td></td> | |
</tr> | |
<tr> | |
<td></td> | |
<td>In other situations, the choices the current context variables and implicit references to features of the | |
<code class="code">self</code> variable. For example, if the input is something like | |
<code class="code">""</code> or | |
<code class="code">"self.isOrdered and "</code> | |
</td> | |
</tr> | |
</table> | |
<p> | |
<span class="bold"><strong>Content-assist triggers</strong></span> | |
</p> | |
<p>The completion of partially specified identifiers is also supported, by | |
backtracking to look for one of these triggering tokens. This supports | |
interactively narrowing the choices while the content-assist window is active.</p> | |
<div class="literallayout"> | |
<p> | |
<code class="code">choices = helper.getSyntaxHelp(ConstraintKind.POSTCONDITION,<br> | |
"self.author.oclIs");<br> | |
</code> | |
</p> | |
</div> | |
<p></p> | |
</div> | |
</div> | |
</body> | |
</html> |