<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xsl.ui.provisional.contentassist</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xsl.ui.provisional.contentassist</strong></font><br>
               Class AbstractXSLContentAssistRequest</h2><br><hr><pre>public class <strong>AbstractXSLContentAssistRequest</strong>
extends java.lang.Object</pre>An extension of the XML ContentAssistRequest class.  This provides
 a basis for the XSL content assistance.  Classes may subclass this
 class and implement specific functionality.<p></p><p></p><hr><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Field Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>protected IStructuredDocumentRegion</code></td><td width="80%" align="left"><code><a href="#field_documentRegion">documentRegion</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.ArrayList</code></td><td width="80%" align="left"><code><a href="#field_macros">macros</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.lang.String</code></td><td width="80%" align="left"><code><a href="#field_matchString">matchString</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected org.w3c.dom.Node</code></td><td width="80%" align="left"><code><a href="#field_node">node</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.ArrayList</code></td><td width="80%" align="left"><code><a href="#field_proposals">proposals</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected ITextRegion</code></td><td width="80%" align="left"><code><a href="#field_region">region</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="80%" align="left"><code><a href="#field_replacementBeginPosition">replacementBeginPosition</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="80%" align="left"><code><a href="#field_replacementLength">replacementLength</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected ITextViewer</code></td><td width="80%" align="left"><code><a href="#field_textViewer">textViewer</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr></table><br><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_AbstractXSLContentAssistRequest">AbstractXSLContentAssistRequest</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_addMacro">addMacro</a>(ICompletionProposal newProposal)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_addProposal">addProposal</a>(ICompletionProposal newProposal)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.ArrayList</code></td><td width="" align="left"><code><a href="#method_getAllCompletionProposals">getAllCompletionProposals</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </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;
               Returns a list of proposals.  Implementations are to provide the appropriate
 implementation for the proposals they would like to return.   Use of the getAllCompletionProposals
 should be used to return the actual proposals from this method.</td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="" align="left"><code><a href="#method_getCursorPosition">getCursorPosition</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the cursor position within the Text Viewer</td></tr><tr valign="top"><td width="20%" align="right"><code>protected IStructuredDocumentRegion</code></td><td width="" align="left"><code><a href="#method_getDocumentRegion">getDocumentRegion</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.lang.String</code></td><td width="" align="left"><code><a href="#method_getLocation">getLocation</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieves the base location for the IDOMDocument for this class. This is
 used to populate a new Path class for retrieving an IFile instance.</td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.List</code></td><td width="" align="left"><code><a href="#method_getMacros">getMacros</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.lang.String</code></td><td width="" align="left"><code><a href="#method_getMatchString">getMatchString</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.Collection</code></td><td width="" align="left"><code><a href="#method_getNamespaces">getNamespaces</a>(IDOMElement element)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected org.w3c.dom.Node</code></td><td width="" align="left"><code><a href="#method_getNode">getNode</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected org.w3c.dom.Node</code></td><td width="" align="left"><code><a href="#method_getParent">getParent</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.List</code></td><td width="" align="left"><code><a href="#method_getProposals">getProposals</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected ITextRegion</code></td><td width="" align="left"><code><a href="#method_getRegion">getRegion</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="" align="left"><code><a href="#method_getReplacementBeginPosition">getReplacementBeginPosition</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="" align="left"><code><a href="#method_getReplacementLength">getReplacementLength</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="" align="left"><code><a href="#method_getStartOffset">getStartOffset</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected org.eclipse.wst.xsl.core.model.StylesheetModel</code></td><td width="" align="left"><code><a href="#method_getStylesheetModel">getStylesheetModel</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.lang.String</code></td><td width="" align="left"><code><a href="#method_getText">getText</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected int</code></td><td width="" align="left"><code><a href="#method_getTextEndOffset">getTextEndOffset</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected boolean</code></td><td width="" align="left"><code><a href="#method_hasNodes">hasNodes</a>(org.w3c.dom.NodeList nodes)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Checks to make sure that the NodeList has data</td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_setDocumentRegion">setDocumentRegion</a>(IStructuredDocumentRegion region)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_setMatchString">setMatchString</a>(java.lang.String newMatchString)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_setNode">setNode</a>(org.w3c.dom.Node newNode)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_setRegion">setRegion</a>(ITextRegion newRegion)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_setReplacementBeginPosition">setReplacementBeginPosition</a>(int newReplacementBeginPosition)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code><a href="#method_setReplacementLength">setReplacementLength</a>(int newReplacementLength)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>protected java.util.ArrayList</code></td><td width="" align="left"><code><a href="#method_sortProposals">sortProposals</a>(java.util.ArrayList proposalsIn)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code><a href="#method_toString">toString</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Field Detail
               </h2></td></tr></table><h2><a name="field_documentRegion">documentRegion</a></h2><p><code>protected IStructuredDocumentRegion <strong>documentRegion</strong></code></p><hr><h2><a name="field_macros">macros</a></h2><p><code>protected java.util.ArrayList <strong>macros</strong></code></p><hr><h2><a name="field_matchString">matchString</a></h2><p><code>protected java.lang.String <strong>matchString</strong></code></p><hr><h2><a name="field_node">node</a></h2><p><code>protected org.w3c.dom.Node <strong>node</strong></code></p><hr><h2><a name="field_proposals">proposals</a></h2><p><code>protected java.util.ArrayList <strong>proposals</strong></code></p><hr><h2><a name="field_region">region</a></h2><p><code>protected ITextRegion <strong>region</strong></code></p><hr><h2><a name="field_replacementBeginPosition">replacementBeginPosition</a></h2><p><code>protected int <strong>replacementBeginPosition</strong></code></p><hr><h2><a name="field_replacementLength">replacementLength</a></h2><p><code>protected int <strong>replacementLength</strong></code></p><hr><h2><a name="field_textViewer">textViewer</a></h2><p><code>protected ITextViewer <strong>textViewer</strong></code></p><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_AbstractXSLContentAssistRequest">AbstractXSLContentAssistRequest</a></h2><p><code>public <strong>AbstractXSLContentAssistRequest</strong>(org.w3c.dom.Node node
         ,
      IStructuredDocumentRegion documentRegion
         ,
      ITextRegion completionRegion
         ,
      int begin
         ,
      int length
         ,
      java.lang.String filter
         ,
      ITextViewer textViewer)</code></p><p>Handles Content Assistance requests for Select Attributes.  This is called an instantiated
 through the use of the computeProposals method from the XSLContentAssistProcessor.  It will
 calculate the available proposals that are available for the XSL select attribute.</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_addMacro">addMacro</a></h2><p><code>protected void <strong>addMacro</strong>(ICompletionProposal newProposal)</code></p><p></p><h3>Parameters</h3><p><code>newProposal</code></p><hr><h2><a name="method_addProposal">addProposal</a></h2><p><code>protected void <strong>addProposal</strong>(ICompletionProposal newProposal)</code></p><p></p><h3>Parameters</h3><p><code>newProposal</code></p><hr><h2><a name="method_getAllCompletionProposals">getAllCompletionProposals</a></h2><p><code>protected java.util.ArrayList <strong>getAllCompletionProposals</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.util.ArrayList</code></p><hr><h2><a name="method_getCompletionProposals">getCompletionProposals</a></h2><p><code>public java.util.ArrayList <strong>getCompletionProposals</strong>()</code></p><p>Returns a list of proposals.  Implementations are to provide the appropriate
 implementation for the proposals they would like to return.   Use of the getAllCompletionProposals
 should be used to return the actual proposals from this method.</p><h3>Returns</h3><p><code>java.util.ArrayList</code></p><hr><h2><a name="method_getCursorPosition">getCursorPosition</a></h2><p><code>protected int <strong>getCursorPosition</strong>()</code></p><p>Get the cursor position within the Text Viewer</p><h3>Returns</h3><p><code>int</code> - An int value containing the cursor position</p><hr><h2><a name="method_getDocumentRegion">getDocumentRegion</a></h2><p><code>protected IStructuredDocumentRegion <strong>getDocumentRegion</strong>()</code></p><p></p><h3>Returns</h3><p><code>IStructuredDocumentRegion</code></p><hr><h2><a name="method_getLocation">getLocation</a></h2><p><code>protected java.lang.String <strong>getLocation</strong>()</code></p><p>Retrieves the base location for the IDOMDocument for this class. This is
 used to populate a new Path class for retrieving an IFile instance.</p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_getMacros">getMacros</a></h2><p><code>protected java.util.List <strong>getMacros</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.util.List</code></p><hr><h2><a name="method_getMatchString">getMatchString</a></h2><p><code>protected java.lang.String <strong>getMatchString</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_getNamespaces">getNamespaces</a></h2><p><code>protected java.util.Collection <strong>getNamespaces</strong>(IDOMElement element)</code></p><p></p><h3>Parameters</h3><p><code>element</code></p><h3>Returns</h3><p><code>java.util.Collection</code></p><hr><h2><a name="method_getNode">getNode</a></h2><p><code>protected org.w3c.dom.Node <strong>getNode</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.w3c.dom.Node</code></p><hr><h2><a name="method_getParent">getParent</a></h2><p><code>protected org.w3c.dom.Node <strong>getParent</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.w3c.dom.Node</code></p><hr><h2><a name="method_getProposals">getProposals</a></h2><p><code>protected java.util.List <strong>getProposals</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.util.List</code></p><hr><h2><a name="method_getRegion">getRegion</a></h2><p><code>protected ITextRegion <strong>getRegion</strong>()</code></p><p></p><h3>Returns</h3><p><code>ITextRegion</code></p><hr><h2><a name="method_getReplacementBeginPosition">getReplacementBeginPosition</a></h2><p><code>protected int <strong>getReplacementBeginPosition</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_getReplacementLength">getReplacementLength</a></h2><p><code>protected int <strong>getReplacementLength</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_getStartOffset">getStartOffset</a></h2><p><code>protected int <strong>getStartOffset</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_getStylesheetModel">getStylesheetModel</a></h2><p><code>protected org.eclipse.wst.xsl.core.model.StylesheetModel <strong>getStylesheetModel</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.eclipse.wst.xsl.core.model.StylesheetModel</code></p><hr><h2><a name="method_getText">getText</a></h2><p><code>protected java.lang.String <strong>getText</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_getTextEndOffset">getTextEndOffset</a></h2><p><code>protected int <strong>getTextEndOffset</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_hasNodes">hasNodes</a></h2><p><code>protected boolean <strong>hasNodes</strong>(org.w3c.dom.NodeList nodes)</code></p><p>Checks to make sure that the NodeList has data</p><h3>Parameters</h3><p><code>nodes</code> - A NodeList object</p><h3>Returns</h3><p><code>boolean</code> - True if has data, false if empty</p><hr><h2><a name="method_setDocumentRegion">setDocumentRegion</a></h2><p><code>protected void <strong>setDocumentRegion</strong>(IStructuredDocumentRegion region)</code></p><p></p><h3>Parameters</h3><p><code>region</code></p><hr><h2><a name="method_setMatchString">setMatchString</a></h2><p><code>protected void <strong>setMatchString</strong>(java.lang.String newMatchString)</code></p><p></p><h3>Parameters</h3><p><code>newMatchString</code></p><hr><h2><a name="method_setNode">setNode</a></h2><p><code>protected void <strong>setNode</strong>(org.w3c.dom.Node newNode)</code></p><p></p><h3>Parameters</h3><p><code>newNode</code></p><hr><h2><a name="method_setRegion">setRegion</a></h2><p><code>protected void <strong>setRegion</strong>(ITextRegion newRegion)</code></p><p></p><h3>Parameters</h3><p><code>newRegion</code></p><hr><h2><a name="method_setReplacementBeginPosition">setReplacementBeginPosition</a></h2><p><code>protected void <strong>setReplacementBeginPosition</strong>(int newReplacementBeginPosition)</code></p><p></p><h3>Parameters</h3><p><code>newReplacementBeginPosition</code></p><hr><h2><a name="method_setReplacementLength">setReplacementLength</a></h2><p><code>protected void <strong>setReplacementLength</strong>(int newReplacementLength)</code></p><p></p><h3>Parameters</h3><p><code>newReplacementLength</code></p><hr><h2><a name="method_sortProposals">sortProposals</a></h2><p><code>protected java.util.ArrayList <strong>sortProposals</strong>(java.util.ArrayList proposalsIn)</code></p><p></p><h3>Parameters</h3><p><code>proposalsIn</code></p><h3>Returns</h3><p><code>java.util.ArrayList</code></p><hr><h2><a name="method_toString">toString</a></h2><p><code>public java.lang.String <strong>toString</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code> - java.lang.String</p><hr></body></html>