Mercurial > projects > dwt-addons
diff dwtx/jface/text/templates/package.html @ 129:eb30df5ca28b
Added JFace Text sources
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 23 Aug 2008 19:10:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/jface/text/templates/package.html Sat Aug 23 19:10:48 2008 +0200 @@ -0,0 +1,77 @@ +<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta content="text/html; charset=iso-8859-1" + http-equiv="Content-Type"> + <meta content="IBM" name="Author"> + <title>Templates</title> + <meta content="Template Infrastructure package description" + name="description"> +</head> +<body> +Application programming interfaces for interaction +with the Eclipse text editor template support. +<h2>Templates</h2> +<h3>Packages</h3> +<ul> + <li><tt><big><strong>org.eclipse.jface.text.templates</strong></big></tt></li> + <li><tt><big><strong>org.eclipse.ui.workbench.texteditor.templates</strong></big></tt></li> + <li><tt><big><strong>org.eclipse.ui.editors.templates</strong></big></tt></li> +</ul> +<h3>Introduction</h3> +Templates are shortcuts for frequently used fragments of text such as +code patterns or complex text entities. They may contain variables +which are only resolved at the time when the template is inserted +within a context. Together with linked mode, inserting a template can +create a on-the-fly edit mask within a text viewer.<br> +<br> +Templates are specified as text, variables are defined using the <tt>${variable}</tt> +notation known from +Ant, for example. The following snippet shows an example template for +an instance check in Java:<br> +<pre>if (${name} instanceof ${type}) { + ${type} ${new_name} = (${type})${name}; + ${cursor} +} +</pre> +In this template, the variables (<tt>name,type, ...</tt>) are resolved +when inserted into java source and changing one variable instance will +also change the other. When leaving linked mode, the caret is placed at +the <tt>cursor</tt> variable.<br> +<br> +Template functionality can be added to a custom text editor by offering +<tt>TemplateProposal</tt>s as content assist choices, which is +simplified by using a subclass of <tt>TemplateCompletionProcessor</tt>. User template management can be +offered by including a <tt>TemplatePreferencePage</tt> which uses a <tt>TemplateStore</tt> and <tt>ContextTypeRegistry</tt> as the +underlying model to store templates. The <tt>org.eclipse.ui.editors.templates</tt> +extension point can be used to allow other plug-ins to contribute +templates to an editor. This is accomplished by using the <tt>ContributionTemplateStore</tt> and <tt>ContributionContextTypeRegistry</tt> +subclasses of the above types.<br> +<br> +Template variables are resolved by a <tt>TemplateVariableResolver.</tt> <tt>GlobalTemplateVariables</tt> offers +some default variables such as date, user, and selection, but advanced +features such as resolving to language constructs can be performed in +subclasses.<br> +<h4>Classes</h4> +<ul> + <li><tt>Template</tt> a template consists of name, context +type identifier, and a pattern.</li> + <li><tt>TemplateTranslator</tt> and <tt>TemplateBuffer</tt> are used to +parse the template grammar and don't need to be used usually.</li> + <li>A <tt>TemplateProposal </tt>can be +offered in content assist, possibly created by a subclass of <tt>TemplateCompletionProcessor.</tt></li> + <li><tt>TemplateStore</tt> and <tt>ContextTypeRegistry</tt> manage a +set of templates within a plug-in and offer ways to store them in the +preferences or externally in XML streams via a <tt>TemplateReaderWriter</tt>.<br></li> + <li><tt>ContributionTemplateStore</tt> and <tt>ContributionContextTypeRegistry</tt> +add awareness for the <tt>org.eclipse.ui.editors.templates</tt> +extension point.</li> + <li><tt>TemplatePreferencePage</tt> allows +the user to access the templates within a <tt>TemplateStore.</tt></li> +</ul> +<ul> +</ul> +<h4>Example</h4> +See the Template Editor Example in the <strong>org.eclipse.ui.examples.javaeditor</strong> project.<br> +</body> +</html>