<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath.ui</strong></font><br>
               Class XPathViewPlugin</h2><br><hr><pre>public class <strong>XPathViewPlugin</strong>
extends AbstractUIPlugin</pre><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_XPathViewPlugin">XPathViewPlugin</a></strong>()</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>public static org.eclipse.wst.xml.xpath.ui.XPathViewPlugin</code></td><td width="" align="left"><code><a href="#method_getDefault">getDefault</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the shared instance.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static java.lang.String</code></td><td width="" align="left"><code><a href="#method_getPluginId">getPluginId</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.ResourceBundle</code></td><td width="" align="left"><code><a href="#method_getResourceBundle">getResourceBundle</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the plugin's resource bundle</td></tr><tr valign="top"><td width="20%" align="right"><code>public static java.lang.String</code></td><td width="" align="left"><code><a href="#method_getResourceString">getResourceString</a>(java.lang.String key)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the string from the plugin's resource bundle,
 or 'key' if not found.</td></tr><tr valign="top"><td width="20%" align="right"><code>public ContextTypeRegistry</code></td><td width="" align="left"><code><a href="#method_getXPathTemplateContextRegistry">getXPathTemplateContextRegistry</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the template context type registry for xpath</td></tr><tr valign="top"><td width="20%" align="right"><code>public TemplateStore</code></td><td width="" align="left"><code><a href="#method_getXPathTemplateStore">getXPathTemplateStore</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the template store for the xpath templates.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_info">info</a>(java.lang.String message)</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_initializeImageRegistry">initializeImageRegistry</a>(ImageRegistry reg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_log">log</a>(java.lang.String message
         ,
      java.lang.Throwable ex)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_log">log</a>(java.lang.Throwable ex)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partActivated">partActivated</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partBroughtToTop">partBroughtToTop</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partClosed">partClosed</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partDeactivated">partDeactivated</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partHidden">partHidden</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partInputChanged">partInputChanged</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partOpened">partOpened</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_partVisible">partVisible</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_start">start</a>(BundleContext context)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               This method is called upon plug-in activation</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_stop">stop</a>(BundleContext context)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               This method is called when the plug-in is stopped</td></tr><tr valign="top"><td width="20%" align="right"><code>public static void</code></td><td width="" align="left"><code><a href="#method_throwCoreException">throwCoreException</a>(java.lang.String message
         ,
      java.lang.Throwable t)</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_updateXPathNavigatorView">updateXPathNavigatorView</a>(IWorkbenchPartReference partRef)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_warn">warn</a>(java.lang.String message)</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>
                  Constructor Detail
               </h2></td></tr></table><h2><a name="con_XPathViewPlugin">XPathViewPlugin</a></h2><p><code>public <strong>XPathViewPlugin</strong>()</code></p><p>The constructor.</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_getDefault">getDefault</a></h2><p><code>public org.eclipse.wst.xml.xpath.ui.XPathViewPlugin <strong>getDefault</strong>()</code></p><p>Returns the shared instance.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath.ui.XPathViewPlugin</code></p><hr><h2><a name="method_getPluginId">getPluginId</a></h2><p><code>public java.lang.String <strong>getPluginId</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_getResourceBundle">getResourceBundle</a></h2><p><code>public java.util.ResourceBundle <strong>getResourceBundle</strong>()</code></p><p>Returns the plugin's resource bundle</p><h3>Returns</h3><p><code>java.util.ResourceBundle</code></p><hr><h2><a name="method_getResourceString">getResourceString</a></h2><p><code>public java.lang.String <strong>getResourceString</strong>(java.lang.String key)</code></p><p>Returns the string from the plugin's resource bundle,
 or 'key' if not found.</p><h3>Parameters</h3><p><code>key</code></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_getXPathTemplateContextRegistry">getXPathTemplateContextRegistry</a></h2><p><code>public ContextTypeRegistry <strong>getXPathTemplateContextRegistry</strong>()</code></p><p>Returns the template context type registry for xpath</p><h3>Returns</h3><p><code>ContextTypeRegistry</code> - the template context type registry for xpath</p><hr><h2><a name="method_getXPathTemplateStore">getXPathTemplateStore</a></h2><p><code>public TemplateStore <strong>getXPathTemplateStore</strong>()</code></p><p>Returns the template store for the xpath templates.</p><h3>Returns</h3><p><code>TemplateStore</code> - the template store for the xpath templates</p><hr><h2><a name="method_info">info</a></h2><p><code>public void <strong>info</strong>(java.lang.String message)</code></p><p></p><h3>Parameters</h3><p><code>message</code></p><hr><h2><a name="method_initializeImageRegistry">initializeImageRegistry</a></h2><p><code>protected void <strong>initializeImageRegistry</strong>(ImageRegistry reg)</code></p><p></p><h3>Parameters</h3><p><code>reg</code></p><hr><h2><a name="method_log">log</a></h2><p><code>public void <strong>log</strong>(java.lang.String message
         ,
      java.lang.Throwable ex)</code></p><p></p><h3>Parameters</h3><p><code>message</code></p><p><code>ex</code></p><hr><h2><a name="method_log">log</a></h2><p><code>public void <strong>log</strong>(java.lang.Throwable ex)</code></p><p></p><h3>Parameters</h3><p><code>ex</code></p><hr><h2><a name="method_partActivated">partActivated</a></h2><p><code>public void <strong>partActivated</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partBroughtToTop">partBroughtToTop</a></h2><p><code>public void <strong>partBroughtToTop</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partClosed">partClosed</a></h2><p><code>public void <strong>partClosed</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partDeactivated">partDeactivated</a></h2><p><code>public void <strong>partDeactivated</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partHidden">partHidden</a></h2><p><code>public void <strong>partHidden</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partInputChanged">partInputChanged</a></h2><p><code>public void <strong>partInputChanged</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partOpened">partOpened</a></h2><p><code>public void <strong>partOpened</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_partVisible">partVisible</a></h2><p><code>public void <strong>partVisible</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_start">start</a></h2><p><code>public void <strong>start</strong>(BundleContext context)</code></p><p>This method is called upon plug-in activation</p><h3>Parameters</h3><p><code>context</code></p><h3>Throws:</h3><p><code>java.lang.Exception</code></p><hr><h2><a name="method_stop">stop</a></h2><p><code>public void <strong>stop</strong>(BundleContext context)</code></p><p>This method is called when the plug-in is stopped</p><h3>Parameters</h3><p><code>context</code></p><h3>Throws:</h3><p><code>java.lang.Exception</code></p><hr><h2><a name="method_throwCoreException">throwCoreException</a></h2><p><code>public void <strong>throwCoreException</strong>(java.lang.String message
         ,
      java.lang.Throwable t)</code></p><p></p><h3>Parameters</h3><p><code>message</code></p><p><code>t</code></p><h3>Throws:</h3><p><code>CoreException</code></p><hr><h2><a name="method_updateXPathNavigatorView">updateXPathNavigatorView</a></h2><p><code>protected void <strong>updateXPathNavigatorView</strong>(IWorkbenchPartReference partRef)</code></p><p></p><h3>Parameters</h3><p><code>partRef</code></p><hr><h2><a name="method_warn">warn</a></h2><p><code>public void <strong>warn</strong>(java.lang.String message)</code></p><p></p><h3>Parameters</h3><p><code>message</code></p><hr></body></html>