Templates
Provides persistence support for templates.
Packages
- org.eclipse.jface.text.templates
- org.eclipse.ui.workbench.texteditor.templates
- org.eclipse.ui.editors.templates
Introduction
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.
Templates are specified as text, variables are defined using the ${variable}
notation known from
Ant, for example. The following snippet shows an example template for
an instance check in Java:
if (${name} instanceof ${type}) {
${type} ${new_name} = (${type})${name};
${cursor}
}
In this template, the variables (name,type, ...) 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 cursor variable.
Template functionality can be added to a custom text editor by offering
TemplateProposals as content assist choices, which is
simplified by using a subclass of TemplateCompletionProcessor. User template management can be
offered by including a TemplatePreferencePage which uses a TemplateStore and ContextTypeRegistry as the
underlying model to store templates. The org.eclipse.ui.editors.templates
extension point can be used to allow other plug-ins to contribute
templates to an editor. This is accomplished by using the ContributionTemplateStore and ContributionContextTypeRegistry
subclasses of the above types.
Template variables are resolved by a TemplateVariableResolver. GlobalTemplateVariables offers
some default variables such as date, user, and selection, but advanced
features such as resolving to language constructs can be performed in
subclasses.
Classes
- Template a template consists of name, context
type identifier, and a pattern.
- TemplateTranslator and TemplateBuffer are used to
parse the template grammar and don't need to be used usually.
- A TemplateProposal can be
offered in content assist, possibly created by a subclass of TemplateCompletionProcessor.
- TemplateStore and ContextTypeRegistry 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 TemplateReaderWriter.
- ContributionTemplateStore and ContributionContextTypeRegistry
add awareness for the org.eclipse.ui.editors.templates
extension point.
- TemplatePreferencePage allows
the user to access the templates within a TemplateStore.
Example
See the Template Editor Example in the org.eclipse.ui.examples.javaeditor project.
|