blob: 2e1a2a3c950df5faf59cdfb89ac2385ad5f7653b [file] [log] [blame]
<br style="clear:both;height:1em;">
<div id="leftcol">
<div class="nav-logo">
<a href="index.php"><img src="logo.png" style="margin-left:10px; width:155px"/></a>
</div>
<ul id="leftnav">
<li class="partentry" >
Documentation
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; display:none" /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="01-Introduction.php">Introduction</a></div>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; " /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="02-GettingStarted.php">Getting Started</a></div>
<ul style="display: none;" id="subToc_02-GettingStarted.html">
<li id="02-GettingStarted.html#Installation.html" ><a href="02-GettingStarted.php#Installation.php" >Installation</a></li>
<li id="02-GettingStarted.html#FirstExample.html" ><a href="02-GettingStarted.php#FirstExample.php" >First Example</a></li>
<li id="02-GettingStarted.html#RCPMail.html" ><a href="02-GettingStarted.php#RCPMail.php" >RCP Mail Example</a></li>
</ul>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; " /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="03-Components.php">Components</a></div>
<ul style="display: none;" id="subToc_03-Components.html">
<li id="03-Components.html#FormComponent.html" ><a href="03-Components.php#FormComponent.php" >Form Component</a></li>
<li id="03-Components.html#TreeComponent.html" ><a href="03-Components.php#TreeComponent.php" >Tree Component</a></li>
<li id="03-Components.html#TreeFormComponent.html" ><a href="03-Components.php#TreeFormComponent.php" >Tree Form Component</a></li>
<li id="03-Components.html#TableComponent.html" ><a href="03-Components.php#TableComponent.php" >Table Component</a></li>
</ul>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; " /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="04-Customization.php">Customization</a></div>
<ul style="display: none;" id="subToc_04-Customization.html">
<li id="04-Customization.html#ResourceManagers.html" ><a href="04-Customization.php#ResourceManagers.php" >Managing Resources</a></li>
<li id="04-Customization.html#Providers.html" ><a href="04-Customization.php#Providers.php" >Providers</a></li>
<li id="04-Customization.html#SelectionAndMenu.html" ><a href="04-Customization.php#SelectionAndMenu.php" >Selection And Menu</a></li>
<li id="04-Customization.html#Builders.html" ><a href="04-Customization.php#Builders.php" >Builders</a></li>
<li id="04-Customization.html#Factories.html" ><a href="04-Customization.php#Factories.php" >Factories</a></li>
<li id="04-Customization.html#Viewers.html" ><a href="04-Customization.php#Viewers.php" >Viewers</a></li>
</ul>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; " /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="05-DSL.php">EMF Parsley DSL</a></div>
<ul style="display: none;" id="subToc_05-DSL.html">
<li id="05-DSL.html#xbase.html" ><a href="05-DSL.php#xbase.php" >Xbase features</a></li>
</ul>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; display:none" /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="06-AdvancedComponents.php">Advanced Components</a></div>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; " /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="07-Eclipse4.php">Eclipse 4</a></div>
<ul style="display: none;" id="subToc_07-Eclipse4.html">
<li id="07-Eclipse4.html#GetFirstExample.html" ><a href="07-Eclipse4.php#GetFirstExample.php" >First Example Setup</a></li>
<li id="07-Eclipse4.html#PrepareForEclipse4Application.html" ><a href="07-Eclipse4.php#PrepareForEclipse4Application.php" >Preparing for a pure Eclipse 4 Application</a></li>
<li id="07-Eclipse4.html#CreateEclipse4Application.html" ><a href="07-Eclipse4.php#CreateEclipse4Application.php" >Create an Eclipse 4 Application</a></li>
<li id="07-Eclipse4.html#Eclipse4ApplicationAndEMFParsley.html" ><a href="07-Eclipse4.php#Eclipse4ApplicationAndEMFParsley.php" >Using an EMF Parsley TreeComposite into an Eclipse 4 Part</a></li>
<li id="07-Eclipse4.html#Eclipse4Save.html" ><a href="07-Eclipse4.php#Eclipse4Save.php" >Adding the dirty state and Save command</a></li>
</ul>
</li>
<li class="partentry" >
Appendix
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; display:none" /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="GettingSources.php">Getting Sources</a></div>
</li>
<li class="separator"><div class="separator">
<img src="triangle.gif" style="height:12px; margin-right: 2px; display:none" /><img src="triangle-90.gif" style="display:none; margin-right: 2px" height="12px" />
<a href="Downloads.php">EMF Parsley - Downloads</a></div>
</li>
</ul>
</div>
<div id="midcolumn">
<a name="GettingStarted" ></a>
<h1>Getting Started</h1>
<div class="toc">
<ul>
<li><a href="02-GettingStarted.php#Installation.php" >Installation</a></li>
<li><a href="02-GettingStarted.php#FirstExample.php" >First Example</a></li>
<li><a href="02-GettingStarted.php#RCPMail.php" >RCP Mail Example</a></li>
</ul>
</div>
<p>
To get started, you may download &quot;Eclipse Modeling Tools&quot; or &quot;Eclipse IDE for Java and DSL Developers&quot; from <a href="http://www.eclipse.org/downloads/" >Eclipse
Downloads</a>.
</p>
<p>
This will ensure you have EMF and related Tools installed and ready to go (you may as well use any other Eclipse package, provided that you have installed
also EMF and its tools).
</p>
<a name="Installation" ></a>
<span style="float:left; border-top: 1px dotted #d4d4dd; margin-left: 0; margin-top: 5px;
padding: 5px 0;
padding-top: 5px;"></span><a style="float: right" href="#">Top</a>
<br style="clear:both"></br>
<h1>Installation</h1>
<p>
Now select &quot;Help&quot; -&gt; &quot;Install New Software...&quot; and in the &quot;Work with:&quot; field insert the EMF Parsley update
site <a href="http://download.eclipse.org/emf-parsley/updates" >http://download.eclipse.org/emf-parsley/updates</a>
and install all features.
Although sources are not strictly required, it might help when using EMF Parsley
to have a look at its sources.
</p>
<p>
<div class="image" >
<a class="gallery" rel="prettyPhoto[all]" title="" href="images/emf-parsley-update-site.png">
<img src="images/emf-parsley-update-site.png"
width="600px"
/>
</a>
<div class="caption">
</div>
</div>
</p>
<a name="FirstExample" ></a>
<span style="float:left; border-top: 1px dotted #d4d4dd; margin-left: 0; margin-top: 5px;
padding: 5px 0;
padding-top: 5px;"></span><a style="float: right" href="#">Top</a>
<br style="clear:both"></br>
<h1>First Example</h1>
<p>
The purpose of this first example is to make use of the classical EMF Library Model example and
create a view for editing such models using an EMF Parsley enabled plug-in.
</p>
<p>
So let's start by creating the model plug-in with
</p>
<p>
<ol>
<li>File -&gt; New... -&gt; Example...</li>
<li>from Category &quot;Eclipse Modeling Framework&quot;, select &quot;Extended Library Model Example&quot;</li>
<li>press Next and Finish</li>
</ol>
</p>
<p>
You will end up with three plug-ins:
</p>
<p>
<ul>
<li>org.eclipse.emf.examples.library (the model plug-in)</li>
<li>org.eclipse.emf.examples.library.edit (the edit plug-in)</li>
<li>org.eclipse.emf.examples.library.editor (the editor plug-in)</li>
</ul>
</p>
<p>
Please consider that here we are starting from this well known EMF model taken out-of-the-box from Eclipse,
but you can start from your EMF model (in that case you may probably omit the &quot;.edit&quot; and &quot;.editor&quot; plugins, depending on your model).
</p>
<p>
Now you can create your first example with the appropriate wizard.
</p>
<p>
<ol>
<li>select &quot;File&quot; -&gt; &quot;New&quot; -&gt; &quot;Project...&quot;</li>
<li>from the &quot;Emf Parsley&quot; category select &quot;Emf Parsley Dsl based Project&quot;</li>
<li>click &quot;Next&quot;</li>
<li>give a name to the project (e.g. &quot;org.eclipse.emf.parsley.examples.firstexample&quot;)</li>
<li>click &quot;Finish&quot;</li>
</ol>
The generated project has some classes and a <em>module.parlsey</em> file, which opens automatically.
Just type the following content into the {} block (note that context assist is available)
</p>
<p>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">parts</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">viewpart</span>&nbsp;org.eclipse.emf.parsley.examples.firstexample.view.library.treeform&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">viewname</span>&nbsp;<span class="string">"My&nbsp;Library&nbsp;Tree&nbsp;Form"</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">viewclass</span>&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}
</p>
</div>
</div>
</p>
<p>
Here above we have just declared a view part with
<ol>
<li>id <em>&quot;org.eclipse.emf.parsley.examples.firstexample.view.library.treeform&quot;</em></li>
<li>name <em>&quot;Library Tree Form&quot;</em></li>
<li>class: not yet set, we are going to create
<em>&quot;org.eclipse.emf.parsley.examples.firstexample.views.LibraryTreeFormView&quot;</em></li>
</ol>
</p>
<p>
So there is still an error, in fact we need to create the declared class.
<em>Suggestion:</em> Just copy the above qualified class name (<em>&quot;org.eclipse.emf.parsley.examples.firstexample.views.LibraryTreeFormView&quot;</em>),
select the project, right-click and select File -&gt; New -&gt; Class. Now paste the clipboard content into <em>&quot;Name:&quot;</em> field: the
package and class name will be automatically splitted into right fields. Then click <em>&quot;Finish&quot;</em>.
</p>
<p>
Now modify the view class code with this content:
</p>
<p>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">import</span>&nbsp;org.eclipse.emf.parsley.views.AbstractSaveableTreeFormView;<br/>
<span class="keyword">import</span>&nbsp;org.eclipse.emf.common.util.URI;<br/>
<br/>
<span class="keyword">public</span>&nbsp;<span class="keyword">class</span>&nbsp;LibraryTreeFormView&nbsp;<span class="keyword">extends</span>&nbsp;AbstractSaveableTreeFormView&nbsp;{<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span>&nbsp;URI&nbsp;createResourceURI()&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>&nbsp;URI.createFileURI(&nbsp;System.getProperty(<span class="string">"user.home"</span>)&nbsp;+&nbsp;<span class="string">"/MyLibrary.library"</span>&nbsp;);<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
}
</p>
</div>
</div>
</p>
<p>
Now get back to <em>module.parlsey</em> file, go just after <em>&quot;viewclass&quot;</em> keyword, type <em>&quot;LibraryTreeFormView&quot;</em>
and <em>Ctrl-Space</em>: the content assist will set automatically the correct qualified name
</p>
<p>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">viewclass</span>&nbsp;org.eclipse.emf.parsley.examples.firstexample.views.LibraryTreeFormView
</p>
</div>
</div>
</p>
<p>
when you save the above file you will notice that a new file (<em>&quot;plugin.xml_emfparsley_gen&quot;</em>)
is generated into the root folder of your project. Just copy this file into <em>&quot;plugin.xml&quot;</em>.
</p>
<p>
Let's focus briefly on the above <em>createResourceURI()</em> method: our goal is allowing to manage
a library model instance which persists on a EMF Resource.
In this example we choose to use the EMF default persistence (XMI), but you can provide any URI
(e.g. using Teneo, CDO or any other EMF Resource Persistence implementation)
In particular here we choose to persist the Resource in a XMI file named <em>&quot;MyLibrary.library&quot;</em> into the user home
folder (you might want to change it with any other path).
</p>
<p>
We need a <em>Dependency</em> from the model plug-in: so open <em>MANIFEST.MF</em> file, go to <em>Dependencies</em>
tab, press <em>&quot;Add...&quot;</em> button in <em>&quot;Required Plug-ins&quot;</em> section and insert <em>&quot;org.eclipse.emf.examples.library&quot;</em>
among dependencies.
</p>
<p>
Before executing this code we need to do some little more work in order to initialize the Resource.
</p>
<p>
An easy way to overcome this issue can be the following:
</p>
<p>
<ol>
<li>open the class *GuiceModule (FirstexampleGuiceModule in this example) that the wizard created for you.
Note that this is a key class for all customizations; it allows to override several methods in order to provide custom behaviors
and implementations.</li>
<li>override method <em>bindEmptyResourceInitializer()</em> providing a class for Resource initialization
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">public</span>&nbsp;Class&lt;?&nbsp;<span class="keyword">extends</span>&nbsp;EmptyResourceInitializer&gt;&nbsp;bindEmptyResourceInitializer()&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>&nbsp;LibraryEmptyResourceInitializer.<span class="keyword">class</span>;<br/>
}
</p>
</div>
</div>
</li>
<li>create a new class <em>LibraryEmptyResourceInitializer</em> extending from <em>EmptyResourceInitializer</em> for Resource initialization
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">import</span>&nbsp;org.eclipse.emf.parsley.resource.EmptyResourceInitializer;<br/>
<span class="keyword">import</span>&nbsp;org.eclipse.emf.ecore.resource.Resource;<br/>
<span class="keyword">import</span>&nbsp;org.eclipse.emf.examples.extlibrary.EXTLibraryFactory;<br/>
<span class="keyword">import</span>&nbsp;org.eclipse.emf.examples.extlibrary.Library;<br/>
<br/>
<span class="keyword">public</span>&nbsp;<span class="keyword">class</span>&nbsp;LibraryEmptyResourceInitializer&nbsp;&nbsp;<span class="keyword">extends</span>&nbsp;EmptyResourceInitializer&nbsp;{&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>&nbsp;<span class="keyword">void</span>&nbsp;initialize(Resource&nbsp;resource)&nbsp;{&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">super</span>.initialize(resource);&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;library&nbsp;=&nbsp;EXTLibraryFactory.eINSTANCE.createLibrary();&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resource.getContents().add(library);&nbsp;<br/>
&nbsp;&nbsp;&nbsp;}&nbsp;<br/>
<br/>
}
</p>
</div>
</div>
The method <em>initialize()</em> will be executed only when the Resource is empty
(i.e., it has no contents).
</li>
</ol>
</p>
<p>
now get back to the <em>MANIFEST.MF</em> and run the example
</p>
<p>
<div class="image" >
<a class="gallery" rel="prettyPhoto[all]" title="" href="images/first-example-launch.png">
<img src="images/first-example-launch.png"
width="600px"
/>
</a>
<div class="caption">
</div>
</div>
</p>
<p>
As an Eclipse RCP developer you know, of course, that this will start another Eclipse instance (unless
you add an Application plug-in to the launch or define an Application in the current plug-in).
</p>
<p>
In this second Eclipse instance you can show the View in this way:
<ol>
<li><em>Window -&gt; Show View -&gt; Other...</em></li>
<li>from Category &quot;Other&quot;, select &quot;My Library Tree Form&quot;</li>
<li>press <em>OK</em></li>
</ol>
</p>
<p>
<div class="image" >
<a class="gallery" rel="prettyPhoto[all]" title="" href="images/first-example-run.png">
<img src="images/first-example-run.png"
width="600px"
/>
</a>
<div class="caption">
</div>
</div>
</p>
<p>
With this simple view you can start editing the model instance. For example you can set the <em>&quot;name&quot;</em>
field; as soon as you start typing characters into this field you will notice that:
<ol>
<li>the View turns to a <em>&quot;dirty&quot;</em> state (an asterisk symbol appears on the view tab)</li>
<li>the <em>&quot;Save&quot;</em> toolbar button is enabled</li>
<li>the typed characters are reflected into the label correspondent to the Library icon</li>
</ol>
</p>
<p>
if you now perform a <em>&quot;Save&quot;</em> action the persistence mechanism will trigger and you will see that file
<span class="inlinecode">&lt;user.home&gt;/MyLibrary.library</span>
is being created on the file system. From now on, this file will keep the state of the model object whenever
you change and save it.
</p>
<p>
To create a Writer into the Library just right-click on the Library object and select <em>New Child -&gt; Writer</em>
</p>
<p>
<div class="image" >
<a class="gallery" rel="prettyPhoto[all]" title="" href="images/createWriter.png">
<img src="images/createWriter.png"
width="600px"
/>
</a>
<div class="caption">
</div>
</div>
</p>
<p>
Please note that you might see a slightly different content in the above context-menu in case you deleted
the .edit plugin when creating the model (e.g. <em>&quot;Writers Writer&quot;</em> instead of <em>&quot;Writer&quot;</em>, <em>&quot;Stock Book&quot;</em> instead of <em>&quot;Book&quot;</em> and
similar (this is because with EMF it is possible to customize labels also via .edit plugin).
</p>
<p>
Now set for instance the writer <em>&quot;name&quot;</em> field and save.
Now just play around creating Books, associating them to Writers and so on.
As you can see you can entirely manage the EMF model instance: creating, modifying and deleting elements.
</p>
<p>
Whenever the current selection on the upper side of the view changes, then the lower side shows the detail
of this selection.
</p>
<p>
However, up to this point, you have no control over the field to be shown and its order; for example
you may want just the <em>&quot;name&quot;</em> attribute for the Library and <em>&quot;name&quot;, &quot;address&quot; and &quot;books&quot;</em> attributes
for Writers and maybe <em>&quot;title&quot;, &quot;authors&quot; and &quot;category&quot;</em> for Books.
</p>
<p>
Well, it's indeed very easy to obtain this: just edit the <em>module.parsley</em> file,
adding the following import (without ending line with &quot;;&quot;)
</p>
<p>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">import</span>&nbsp;org.eclipse.emf.examples.extlibrary.*
</p>
</div>
</div>
</p>
<p>
and then defining the features to show
</p>
<p>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">module</span>&nbsp;...&nbsp;{<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">parts</span>&nbsp;{&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">featuresProvider</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">features</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;-&gt;&nbsp;name<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writer&nbsp;-&gt;&nbsp;name,&nbsp;address,&nbsp;books<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book&nbsp;-&gt;&nbsp;author,&nbsp;title,&nbsp;category<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}
</p>
</div>
</div>
</p>
<p>
Remeber that code completion is available, just exploit it since it helps a lot.
</p>
<p>
If you restart now the application you will see that, when selecting an object, only the declared attributes
will be shown. Furthermore, they are shown in the specified order.
</p>
<p>
Did you run the application in Debug mode? Well, then you can change fields and order, save and see the
changes without even restarting the application.
</p>
<p>
Do you want to change text used for attribute labels in the detail? Just add the following:
</p>
<p>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">propertyDescriptionProvider</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">text</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book&nbsp;:&nbsp;author&nbsp;-&gt;&nbsp;<span class="string">&apos;Wrote&nbsp;by:&apos;</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writer&nbsp;:&nbsp;name&nbsp;-&gt;&nbsp;<span class="string">&apos;Name:&apos;</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}
</p>
</div>
</div>
Or do you want to change the label shown on the tree nodes on the upper side and as detail title?
Maybe want to format the book label like this?
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">labelProvider</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">text</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book&nbsp;b&nbsp;-&gt;&nbsp;<span class="string">&apos;"&apos;</span>&nbsp;+&nbsp;b.title&nbsp;+&nbsp;<span class="string">&apos;"&apos;</span>&nbsp;+<span class="string">&apos;&nbsp;(by&nbsp;&apos;</span>+&nbsp;b.author.name&nbsp;+&nbsp;<span class="string">&apos;)&apos;</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}
</p>
</div>
</div>
<div class="image" >
<a class="gallery" rel="prettyPhoto[all]" title="" href="images/labelCustomization.png">
<img src="images/labelCustomization.png"
width="600px"
/>
</a>
<div class="caption">
</div>
</div>
</p>
<a name="RCPMail" ></a>
<span style="float:left; border-top: 1px dotted #d4d4dd; margin-left: 0; margin-top: 5px;
padding: 5px 0;
padding-top: 5px;"></span><a style="float: right" href="#">Top</a>
<br style="clear:both"></br>
<h1>RCP Mail Example</h1>
<div id="disqus_thread"></div>
<script type="text/javascript" src="documentationRoot.js"></script>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'xtext'; // required: replace example with your forum shortname
// The following are highly recommended additional parameters. Remove the slashes in front to use.
var disqus_identifier = 'GettingStarted';
var disqus_url = documentationRoot+'02-GettingStarted.php';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
<br style="clear:both;height:1em;">