Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Recommenders/Attic/Templates"

(New sequence diagram added)
m (Removing all content from page)
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Introduction to Templates Completion ==
 
  
This page will soon contain in-detail information about the Code Recommenders Template Completion plugin and how it can be used, maintained and extended by developers.
 
 
For the rest of this introduction we will present a short scenario which helps the developer to understand the major tasks and possible obstacles.
 
In the following we will present the general [[#Architecture]] of the plugin by giving an overview of its components in [[#Components Overview]] and how they interact in [[#General Workflow]].
 
We will further explain the most [[#Important Concepts]] which further helps understanding the system and are vital to know for working on the plugin.
 
 
=== Functionality ===
 
 
Here we will give a short illustration about the main goals of this plugin.
 
 
; Default Eclipse SWT template for a new button:
 
<source lang="java">
 
${buttonType:newType(org.eclipse.swt.widgets.Button)} ${button:newName(org.eclipse.swt.widgets.Button)}= new ${buttonType}(${parent:var(org.eclipse.swt.widgets.Composite)}, ${style:link(SWT.PUSH, SWT.TOGGLE, SWT.RADIO, SWT.CHECK, SWT.FLAT)});
 
${button}.setLayoutData(new ${type:newType(org.eclipse.swt.layout.GridData)}(SWT.${horizontal:link(BEGINNING, CENTER, END, FILL)}, SWT.${vertical:link(CENTER, TOP, BOTTOM, FILL)}, ${hex:link(false, true)}, ${vex:link(false, true)}));
 
${button}.setText(${word_selection}${});
 
${imp:import(org.eclipse.swt.SWT)}${cursor}
 
</source>
 
 
The task of this Plugin is to dynamically construct such templates depending on the context, i.e. depending on at which position completion was triggered (e.g. Button b<^Space>) and what has already been done with the observed variable, and the information about frequent patterns in such a context, as obtained from other [[Recommenders]] components.
 
 
== Architecture ==
 
 
[[Image:Recommenders templates arch.png|thumb|Dependencies between components]]
 
 
This section will contain a general overview about the whole plugin and how its components interact.
 
First, a diagram describing the structure and the dependencies between the components is displayed on the right.
 
Second, each component of the Plugin is given along with a short description.
 
Finally, the default sequence of components interaction is displayed.
 
 
=== Components Overview  ===
 
 
This subsection will give a short description of each component and display the dependencies between them.
 
 
{| border="1" cellpadding="4" cellspacing="0"
 
|+ Table of Plugin components and short description of their roles.
 
! style="background: #ffdead;" | Package / Class
 
! style="background: #ffdead;" | Description
 
|-
 
! style="background: #efefef;" | .templates
 
! style="background: #efefef;" | Main components of the Plugins, control interaction.
 
|-
 
| CompletionProposalsBuilder
 
| Transforms PatternRecommendations into IJavaCompletionProposals which are applied on the editor content when the propoals is selected from the completion proposals menu.
 
|-
 
| CompletionTargetVariableBuilder
 
| Extracts the CompletionTargetVariable from an IIntelligentCompletionContext.
 
|-
 
| PatternRecommender
 
| Computes PatternRecommendations from the CallsModelStore.
 
|-
 
| TemplatesCompletionModule
 
| Prepares the Plugin by injecting dependencies.
 
|-
 
| TemplatesCompletionProposalComputer
 
| Controls the process of template recommendations.
 
|-
 
| TemplatesPlugin
 
| Stores the Plugin's instance while it is started.
 
|-
 
! style="background: #efefef;" | .templates.code
 
! style="background: #efefef;" | Components for transforming our information into Eclipse templates code.
 
|-
 
| CodeBuilder
 
| Builds Eclipse templates code from a list of method calls on a given variable name.
 
|-
 
| MethodCallFormatter
 
| Generates the String representation of a MethodCall.
 
|-
 
| MethodFormatter
 
| Generates the String representation of an IMethod.
 
|-
 
! style="background: #efefef;" | .templates.types
 
! style="background: #efefef;" | Encapsulates certain information. Only used by this Plugin.
 
|-
 
| CompletionTargetVariable
 
| Models the variable on which the completion was triggered.
 
|-
 
| JavaTemplateProposal
 
| Extends the TemplateProposal to customize the style of the template's entry in the completion popup.
 
|-
 
| MethodCall
 
| Models a call of a certain method on a given variable name.
 
|-
 
| PatternRecommendation
 
| Encapsulates one recommendation received from the models store.
 
|}
 
 
=== General Workflow ===
 
 
In this subsection we will illustrate how the components interact when responding to a completion request.
 
 
[[Image:Recommenders-templates-sequence1.png|Regular computation of templates]]
 
 
== Important Concepts ==
 
 
This section will consider how the most important components work in detail.
 
 
=== Target Variables ===
 
 
This subsection will explain what information we need for template proposals in how it is encapsulated.
 
 
=== Pattern Recommender ===
 
 
Here we will explain how the pattern recommender communicates which other plugins of the code recommenders system to obtain relevant patterns.
 
 
=== Code Builder ===
 
 
This subsection will shortly illustrate how Eclipse templates work and how we generate them from our mined patterns.
 

Latest revision as of 02:29, 26 September 2013

Back to the top