| <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.0.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.0.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="N144B6"> | |
| <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> |