<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xsl.ui.internal.contentassist</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xsl.ui.internal.contentassist</strong></font><br>
               Class XSLElementContentAssistRequest</h2><br><hr><pre>public class <strong>XSLElementContentAssistRequest</strong>
extends org.eclipse.wst.xsl.ui.provisional.contentassist.AbstractXMLElementContentAssistRequest</pre>This class provides content assistance proposals outside of the XSL namespace.  Normal
 XML editor content assistance only provides proposals for items within the same namespace
 or if an element has children elements.   This class extends this functionality by checking
 for the first XSL ancestor and uses that to determine what proposals should be
 provided in the way of xsl elements.<p></p><p></p><hr><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_XSLElementContentAssistRequest">XSLElementContentAssistRequest</a></strong>(org.w3c.dom.Node node
         ,
      IStructuredDocumentRegion documentRegion
         ,
      ITextRegion completionRegion
         ,
      int begin
         ,
      int length
         ,
      java.lang.String filter
         ,
      ITextViewer textViewer)</code></td></tr></table><br><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Method Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_computeTagNameProposals">computeTagNameProposals</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Calculates the proposals for the XML Tag Name Region.</td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_computeTagOpenProposals">computeTagOpenProposals</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Calculate proposals for open content regions.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.ArrayList</code></td><td width="" align="left"><code><a href="#method_getCompletionProposals">getCompletionProposals</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Provides a list of possible proposals for the XSL Elements within the current
 scope.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Constructor Detail
               </h2></td></tr></table><h2><a name="con_XSLElementContentAssistRequest">XSLElementContentAssistRequest</a></h2><p><code>public <strong>XSLElementContentAssistRequest</strong>(org.w3c.dom.Node node
         ,
      IStructuredDocumentRegion documentRegion
         ,
      ITextRegion completionRegion
         ,
      int begin
         ,
      int length
         ,
      java.lang.String filter
         ,
      ITextViewer textViewer)</code></p><p></p><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Methods Detail
               </h2></td></tr></table><h2><a name="method_computeTagNameProposals">computeTagNameProposals</a></h2><p><code>protected void <strong>computeTagNameProposals</strong>()</code></p><p>Calculates the proposals for the XML Tag Name Region.</p><hr><h2><a name="method_computeTagOpenProposals">computeTagOpenProposals</a></h2><p><code>protected void <strong>computeTagOpenProposals</strong>()</code></p><p>Calculate proposals for open content regions.</p><hr><h2><a name="method_getCompletionProposals">getCompletionProposals</a></h2><p><code>public java.util.ArrayList <strong>getCompletionProposals</strong>()</code></p><p>Provides a list of possible proposals for the XSL Elements within the current
 scope.</p><h3>Returns</h3><p><code>java.util.ArrayList</code></p><hr></body></html>